FMZ-Qualitätsplattform-Strategie Schreiben von Anfänger-Tutorials (Must See)

Schriftsteller:Das Gras, Erstellt: 2019-08-13 17:47:27, Aktualisiert: 2021-08-06 10:29:46

Der Nachteil dieses Mechanismus ist offensichtlich: auf einer K-Linie kann nur ein Verkauf erzeugt werden, und der Preis wird normalerweise auf der K-Linie geschlossen. Und eine K-Linie kann nur vier Preise erhalten, und es gibt keine Informationen darüber, wie sich der Preis in einer K-Linie ändert, ob der höchste Preis zuerst eintritt oder der niedrigste Preis zuerst eintritt.

FMZ-Plattform-Rückmeldung gibt es in zwei Arten: Analog-Level-Rückmeldung und Realdisk-Rückmeldung. Die Analog-Level-Rückmeldung erzeugt 14 Rückmeldungszeitpunkte pro Untergrund-K-Linien-Zyklus, basierend auf dem Tick, mit dem die Analogie erzeugt wird.Die tatsächliche Tick-Stufe ist die tatsächliche Tick-Sammlung, die etwa alle paar Sekunden stattfindet und derzeit teilweise die tatsächliche Tiefe (einschließlich 20 Schichten) und die tatsächliche Einzeltransaktion unterstützt.Die Datenmenge ist groß und die Wiederholungsgeschwindigkeit ist langsam, so dass eine besonders lange Zeit nicht zurückgeführt werden kann. Der Wiederholungsmechanismus von FMZ ermöglicht es, dass die Strategie mehrmals auf einer K-Leitung gehandelt wird, was eine Situation vermeidet, in der nur ein Verkaufspreis geschlossen werden kann, und ist genauer und berücksichtigt die Wiederholungsgeschwindigkeit.https://www.fmz.com/digest-topic/4009

Die Wiederholungsstrategie ist wie bei der Festplatte und ist ein toter Kreislauf. Da die Wiederholung an unterschiedlichen Wiederholungspunkten springt, kann sie ohne Sleep durchgeführt werden und springt automatisch zum nächsten Zeitpunkt am Ende eines Kreislaufs.Sleep(10)Ich habe mich in meinem Haus aufgehalten, um nicht zu sterben.

Aufnahmen von Re-Test

Die Reviews-Engine trifft den Verkaufspreis anhand des Bestellpreises und des Abrechnungszeitraums des Benutzers, wenn der Kaufpreis höher ist als der Verkaufspreis, um eine Transaktion zu verkaufen. Wenn keine Transaktion möglich ist, wird eine Hangover-Liste erzeugt.

Die Einstellungen für die Wiederholungsseite

img

  • 1.回测页面的选择,左侧是策略编辑页面。
  • 2.回测起始结束时间,由于数据不完整,回测可能直接从有数据的时间开始。
  • 3.回测GetRecords()Die Funktion kann auch die Parameter für die Periode in ihrem Code angeben.
  • 4.回测机制的选择。
  • 5.展示或隐藏跟多回测设置。
  • 6.最大日志数、收益数据数、图表数据数等,为了防止数据量过大导致浏览器卡死。
  • 6.底层tick生成依据K线周期。
  • 7.交易滑点。
  • 7.容错,会模拟API请求出错情况,检查策略容错能力。
  • 8.是否绘制行情图标,回测中如果使用了TA指标函数,会自展示在图标上,买卖也会标记。
  • 9.手续费设置
  • 10. Hinzufügen von Börsen-Paaren und Vermögenswerten.
  • 11.回测参数设置,如果参数是数字还支持一键优化参数,自动按照一定范围遍历参数回测。

Unterschied zwischen Retest und Live-Disk

  • 1.回测时有效的行情只有GetTicker和GetRecords,其它如获深度、成交历史都不是真实的(因为数据量太大,实盘级回测目前已经支持这些数据,但只有最近数据)。
  • 2.回测添加的交易所都是独立账户,目前不支持切换交易对。因此无法在一个账户里操作两个交易对。
  • 3.回测中无法使用网络请求。
  • 4.回测无法使用IO扩展,只能操作最基础的API。
  • 5.回测只能获取标准的数据,像Info之类的牵扯到实盘的数据不存在。
  • 6.回测中也有可能不成交,注意冻结订单情况。
  • 7.商品期货回测不支持市价单。

Strategische Fehler und häufige Fehler

Wie bereits erwähnt, kann es passieren, dass die API auf der Festplatte verwendet wird, wenn der Zugriff fehlschlägt und zurückkehrt.nullDas ist eine sehr schwierige Strategie, da die Daten, die in den Datensätzen gespeichert werden, Fehler verursachen und die Festplatte zum Stillstand bringen.

Häufig missbraucht

Die häufigsten Fehler:

  • API Zugriff auf Netzwerkfehler, Interface-Zugriffsaufenthalt wird null zurückgeben, wenn verwendet wird, wird ein Fehler berichtet.
  • Die Börse beschränkt Fehler wie IP-Beschränkungen, Bestellgenauigkeit, Zugriffsfrequenz, Parameterfehler, Insuffizienz von Vermögenswerten, Marktunfähigkeit, Widerruf von ausgeführten Aufträgen usw. Sie können die API-Dokumentation nach Fehlercodes abfragen.
  • Die Börsen geben Datenfehler zurück, die gelegentlich auftreten, wie z. B. zurückgekehrte leere Tiefe, verzögerte Kontoinformationen, verzögerte Bestellstatus usw.
  • Ein Fehler in der Programmierlogik.

Bevor man die API verwendet, um Daten zurückzugeben, muss man entscheiden, ob sie null sind.

//1.判断为null进行处理
var ticker = exchange.GetTicker();
while(ticker == null){
     Log('ticker 获取出错');
     ticker = exchange.GetTicker();
 }
 Log(ticker.Last);
 // 2.判断不为null再进行引用
 var ticker = exchange.GetTicker();
 if(!ticker){
     Log(ticker.Last);
 }
 // 3._C()函数重试
 var ticker = _C(exchange.GetTicker);
 Log(ticker.Last);
 // 4. try catch容错
 try{
     var ticker = exchange.GetTicker();
     Log(ticker.Last);
 }
 catch(err){
     Log('ticker 获取出错');
 } 

Wenn Sie falsche Informationen erhalten möchten, können Sie sie verwenden.GetLastError(), wird die letzte Fehlermeldungsstring zurückgeben, um die Fehler zu differenzieren.

Häufig gestellte Fragen

In der Tat, es gibt eine Reihe von Fehlern bei der Zusammenfassung von Foren-Top-Posts:https://www.fmz.com/bbs-topic/1427Hier finden Sie eine Auswahl von Problemen, die Sie mit Ctrl+F durchsuchen können.

Wie wird ein Treuhänder eingesetzt?

Weitere Informationen finden Sie im Abschnitt Administrator hinzufügen.

Kann man eine Strategie finden, wie man das schreibt?

https://www.fmz.com/marketsEinige von ihnen bieten Transkriptionsdienste an oder beraten in Gruppen und müssen sich selbst anmelden, auf eigenes Risiko.

Zugriff auf alle Schnittstellen zeigt eine Auslaufzeit an

Dies bedeutet, dass der Zugriff auf die Interface der Börse überholt wird, wenn es gelegentlich nicht zu einem Problem kommt, wenn immer darauf hingewiesen wird, dass das Netzwerk, in dem es sich befindet, nicht zugänglich ist, und dass ein ausländischer Server benötigt wird.

Fehler beim Erstellen von ERR_INVALID_POSITION

Die Fehlermeldung des Retargeting-Systems, die im Allgemeinen für Strategien mit Fehlern geschrieben wird, führt zu einem Versuch, eine Position ohne oder mit unzureichender Anzahl von Positionen zu platzieren.

Symbol nicht eingestellt

Futures-Exchange-Rückprüfungen, bei denen kein Vertrag in den Code eingestellt wurde, siehe exchange.SetContractType

BITMEX 429 Fehler, {error:{message:Rate limit exceeded retry in 1 seconds......}}

Die Frequenz für den Zugang zu den Börsen-Interfaces ist zu hoch.

Der Zeitstempel ist außerhalb der Reichweite.

Server-Zeitfenster außerhalb des Bereichs benötigen eine Aktualisierung der Serverzeit, die nicht zu weit abgelenkt werden kann

GetOrder ((455284455)): Fehler: ungültige Bestell-ID oder Bestellung storniert.

Einige Börsen haben ihre Bestellungen abgesagt, und die Information über diese Bestellung ist nicht verfügbar, da die Börse diese nicht aufrechterhält.

GetOrders: 400: {code:-1121,msg:ungültiges Symbol.}

Ein ungültiges Transaktionspaar wird überprüft, ob ein Fehler bei der Einstellung des Transaktionspaares vorliegt.

Geheime Schlüssel entschlüsseln fehlgeschlagen

Bei einer Änderung des FMZ-Codes nach der Konfiguration von APIKEY, versuchen Sie, die APIKEY neu zu konfigurieren, indem Sie die Exchange-Seite in FMZ hinzufügen.

Signature not valid: Invalid Submission time or incorrect time format (Unbestimmte Zeitspanne oder falscher Zeitformat)

Es wird empfohlen, Linux-Server zu verwenden, oder in diesen Windows-Systemen, in denen das Problem auftritt, Zeitsynchronisierungssoftware zu installieren.

Warum ist ein globaler Proxy eingerichtet, der den Administratoren keinen Zugriff auf die API der Börse gibt?

Global Agents haben keine Agent-Host-Netzwerk-Ports, daher ist es besser, Hosts mit ausländischen Servern aufgrund von Verzögerungen zu installieren.

Wie bleibt die Strategie lokal und nicht auf dem hochgeladenen FMZ?

Mit Python kann man lokale Dateien importieren, die normalerweise auf der Basis der FMZ-API geschriebenen Strategien als Dateien auf dem eigenen Server unter dem Ausführungsweg speichern und direkt auslesen.

#!python2.7

def run(runfile):
      with open(runfile,"r") as f:
            exec(f.read())
            
def main():
    run('my.py')

Wie man ein Testnetz für eine Börse nutzt oder die API-Basisadresse ändert

Mit exchange.SetBase kann man direkt auf die entsprechende API-Basisadresse wechseln.

exchange.SetBase("https://www.okex.me")

Mehr

SchnüfflerApisäure

WissenschaftWie funktioniert die Implementierung von Strategien lokal? Ich habe eine einfache Log-Ausgabe geschrieben und folge der Bewegung am Ende des Satzes. Der erste Schritt ist, mit einem Laptop als Server den Administrator zu starten. Der zweite Schritt ist das Schreiben eines einfachen Test.py-Programms, das Log-Informationen ausführt (API-Interface-Funktion für FMZ). Schritt 3: Wie am Ende des Textes schreiben Sie eine Runfile, die mit run.py aufgerufen wird und mit test.py ausgeführt wird.

Gyp9Was ist mit dem Quantified Cloud Trading Kurs, den ich gekauft habe?

Ich bin nicht derjenige, der das sagt.viele

Ich bin nicht derjenige, der das sagt.Ich bin hier.

Ich bin ein Freund von dir.Lernen

WqyEs gibt einen kleinen Schreibfehler, GetAccount erhält das Konto.

Lieutenant Yayoi.Getorder outtime, wie geht's mit der OKEX-Börse?

Ich bin ein junger Mann.Wenn Sie nicht in der Lage sind, die garantierten Anlagegebühren zu erhalten, bis zu 0% werden die garantierten Anlagegebühren gezwungen.

Schiebung 2020Ich sehe die 1 Minute k-String-Operation, also kann die Sleep-Zeit für den Python-Todzyklus auf 0.1s gesetzt werden, also sleep ((100)

Ostwindeexchange.SetDirection (("closebuy"); // Wenn es sich um einen dauerhaften Vertrag handelt, setzen Sie exchange.SetDirection (("sell") direkt ein Hier habe ich OKex-Permanente-Kontrakte ausprobiert, wenn sie auf Sell gesetzt werden, werden sie direkt frei, und das ist nicht sehr billig.

Ostwindeexchange.SetDirection (("closebuy"); // Wenn es sich um einen dauerhaften Vertrag handelt, setzen Sie exchange.SetDirection (("sell") direkt ein Hier habe ich OKex-Permanente-Kontrakte ausprobiert, wenn sie auf Sell gesetzt werden, werden sie direkt frei, und das ist nicht sehr billig.

OstwindeIn GetOrders-Code gibt es zwei Spellfehler. Eines ist, dass die Funktion in fuction geschrieben wurde, das andere in der Bedingung für den For-Loop.

OstwindeIch habe mich geirrt. exchange.Buy ((-1, 0.5), das ETH_BTC-Paar, das für den Kauf von 0,5 BTC auf der Börse steht exchange.Buy ((price, 0.5)), wenn es sich um eine solche Preisbeschränkung handelt, bedeutet, dass 0.5ETH zum Preis des Preises gekauft wird

Ostwindeexchange.Buy ((-1, 0.5), das ETH_BTC-Paar, das für den Kauf von ETH in Höhe von 0,5 BTC zum Marktpreis steht Hier sollte man sich für den Marktpreis von 0,5 ETH kaufen.

Gyp9Ich danke Ihnen.

Das GrasDas Programm ist seitdem im Internet verfügbar: https://study.163.com/course/courseMain.htm?share=2&shareId=400000000602076&courseId=1006074239&_trace_c_p_k2_=c3f5d238efc3457d93c8b92c0398d2b2

Das GrasWeChat ist ein Webseite-System, das Sie in die Gruppe bringt.

WqyWenn Sie Probleme haben, fragen Sie, ob wir eine offizielle Kommunikationsgruppe haben?

Das GrasÄndert

Das GrasWiederholung

Das GrasSie können diese Informationen mit GetRawJSON oder in einem Info-Feld anzeigen.

OstwindeIch habe viele Schreibfehler in meinem Code gefunden, haha.

Das GrasOh, das ist korrigiert, danke für die Fehler.

Das GrasEinige dauerhafte Verträge erlauben eine Bindung an zwei Wege und benötigen ein Bindungssystem. Ich habe aktualisiert, es war nur Bitmex.