[TOC]
Suchen Sie nach FAQs für eine einfache Ansicht.
VerwendungCtrl + f
Um die Seite zu öffnen und zu suchen, geben Sie ein Schlüsselwort ein, zum Beispiel:
Derzeit unterstützt FMZ International Station nur Kryptowährungsgeschäfte.https://www.fmz.cn.
Weixin:
Warum?Kaufen Sie einen PreisundVerkaufen Sie einen PreisdurchGetTicker
und die durchGetDepth
sind unterschiedlich?
Die Daten vonGetTicker
undGetDepth
Es gibt eine Zeitverzögerung, so dass sich die Daten ändern werden.GetTicker
Die Daten werden ein wenig schneller sein, denn die Daten sind kleiner als die Daten, die durchGetDepth
.
exchang.GetOrders
Erhält die unvollendeten Befehle, wo bekommt man die ausgeführten Befehle?
Es gibt eine andere API, um Befehle abzufragen, das heißt,exchange.GetOrder
Es sucht alle Arten von Aufträgen nachID
Geben Sie die Reihenfolge ein.ID
, erhalten Sie den Auftrag. Daher, um ausgeführte Aufträge zu erhalten, müssen Sie sehen, ob Plattformen diese Art von Schnittstellen bieten; die Schnittstellen, die von jeder Plattform bereitgestellt werden, sind ziemlich unterschiedlich.
InJavaScript
Das Ergebnis der Zeitstring-Konvertierung auf Zeitstempel ist falsch.
Sie müssen die Zeitzone in den Systemzeiteinstellungen berücksichtigen.
Warum sind der Eröffnungspreis und der Schließpreis, den ich gedruckt habe, derselbe?
1.Vielleicht gab es zum Zeitpunkt des Druckens tatsächlich keinen Handel auf der Plattform, so dass die Öffnungs-, Schließ-, Höchst- und Tiefstpreise von BAR die ganze Zeit gleich sind. 2.Sie müssen überprüfen, ob der BAR, den Sie beobachtet haben, der letzte BAR ist, denn die Eröffnungs-, Schließ-, Höchst- und Tiefstpreise des letzten BAR sind dieselben.
Fehler bei der Überprüfung der Zeit mit dem Server, z. B.Signature not valid:Invalid submission time or incorrect time format
Dieser Fehler ist das Problem der alten Betriebssysteme wiewindows2000/2003/XP
, siehe:
Wir empfehlen Ihnen,Linux
Server, oder Sie können Zeit-Synchronisierungs-Software in diesenwindows
Systeme, in denen der Fehler auftritt, um die Zeit mit hoher Frequenz zu synchronisieren und den Fehler bei der Zeitüberprüfung zu verhindern.
ATR
(TR
) von Mylanguage und die durchTA
/talib
Die Bibliothek?Der Grund dafür ist, dass die Berechnungsmethode der Mylanguage-Indikatoren mit dem zugrunde liegenden Algorithmus derTA
/talib
Beide sind richtig, aber die Algorithmen sind anders.MACD
Einige benutzen einenDIF-DEA
, und manche zweimal benutzenDIF-DEA
, die beide richtig sind.
Was bedeutet es, wenn der Name der PlattformFutures_Esunny
?
Sie stellt den Austauschobjekt vonProtokoll von Esunny, die von der Funktion zurückgegeben werden kannexchange.GetName()
- Ich weiß.
Derzeit unterstützt FMZ internationale Station nur Kryptowährungsgeschäft. Rohstoff-Futures, Wertpapiere und andere Geschäfte werden von FMZ inländische Station unterstützt, können Sie sich anmelden:https://www.fmz.cn.
#EXPORTTEST...#END
die Variablen in der Mehrzeitcode-Blockreferenz angegeben.REF
Die Daten werden nach dem aktuellen Zeitraum verwiesen, der sich von dem unterscheidet, was Sie erwartet haben.Die von Ihnen benötigten Daten für mehrere Zeiträume werden in#EXPORTTEST...#END
, so dass Sie es direkt extern verwenden können.
Ich finde keine FMZ-API-Dokumentation.
Sie können direkt die Adresse der Seite eingeben:https://www.fmz.com/api, oder klicken Sie auf den folgenden Link:
Warum?MACD
Wie unterscheidet sich die durch FMZ berechnete Leistung von der durch Plattformen berechnete Leistung?
Bei einem Vergleich ist darauf zu achten, ob die K-Linienperioden gleich sind, ob dieMACD
Außerdem gibt es viele Algorithmen, die dieMACD
Einige sindDIF-DEA
, und einige sind2*(DIF-DEA)
; DIF
undDEA
sollte konsistent sein.
Was ist mit der erhaltenen K-Linien-Nummer verbunden, wenn die K-Linien-Daten der Geschichte erhalten werden?
Wenn Sie auf dieexchange.GetRecords
Die Anzahl der von jeder Plattform zurückgegebenen K-Linien ist möglicherweise inkonsistent (sogar einige Plattformen bieten keine K-Linien-Schnittstellen an). In diesem Fall ruft der Docker die Schnittstelle an, um die Handelshistorie der Plattform zu erhalten, wenn die Strategie aufruftexchange.GetRecords
. Die Datenoberfläche synthetisiert die K-Linie entsprechend der Handelsgeschichte). Die vom Docker empfangenen K-Linien werden kontinuierlich zusammengehäuft, und es ist notwendig, auf dieexchange.GetRecords
Die Daten sind in der Regel mit einer bestimmten Frequenz zu verarbeiten, da sonst die Kontinuität der Daten beeinträchtigt werden kann.
Ich finde, dass die Funktionexchange.Buy
Nur RücksendungenID
in der API-Dokumentation, aber warum gibt es so viele Informationen zurück, wenn ich arbeite?
Die Funktionen, die Log-Export in FMZ-API-Funktionen erzeugen können, wie z. B.Log
, exchange.Buy
, exchange.CancelOrder
, etc., können alle nach den notwendigen Parametern durch einige zusätzliche Parameter gefolgt werden.exchange.CancelOrder(orders[i].Id, orders[j])
exportiert zusätzlich die Auftragsinformationen bei Stornierungorders[j]
.
Wie führt man eine WeChat Push-Nachricht in einem Bot aus?
WeChat Push ist nur für Bots gültig; hinzufügen'@'
am Ende derLog
Funktion, und dann die gedruckten Informationen derLog
Sie können die Details im API-Dokument unter:https://www.fmz.com/api#LogDerzeit unterstützt FMZ International Station nur Kryptowährungsgeschäfte.https://www.fmz.cn- Ich weiß.
Der WeChat-Push wird nur im inländischen Sender von FMZ unterstützt.
Können Rohstoff-Futures kontinuierliche Hauptverträge und Indexverträge verwenden?
Es unterstützt die wichtigsten kontinuierlichen und Indexverträge von Rohstofffutures. Derzeit unterstützt FMZ International Station nur Kryptowährungsgeschäfte.https://www.fmz.cn.
var records = exchange.GetRecords(PERIOD_D1)
Was sollte ich schreiben, wenn ich die spezifischen Vertrag täglichen K-Line Daten, wie die K-Line Daten von RB oder I erhalten möchte?
Sie solltenVertragskodeVor dem Erhalt der TAQ (mindestens einmal seit Beginn des Programms den Vertragscode einstellen).SetContractType("rb1805")
, Setzen Sie den aktuell betriebenen Vertrag aufrb1805
. Rufen Sie erneut die API, die TAQ erhält, können Sie die TAQ Daten von rb1805 Vertrag zu bekommen.
Derzeit unterstützt FMZ International Station nur Kryptowährungsgeschäfte.https://www.fmz.cn.
Wie schreibt man den Vertragskode der Rohstoff-Futures?
Sie können sich auf die FMZ-API-Dokumentation beziehen. Derzeit unterstützt FMZ International Station nur Kryptowährungsgeschäfte.https://www.fmz.cn.
- Ich weiß.exchange.GetAccount
Wenn der Benutzer nicht in der Lage ist, die Informationen aufgrund von Netzwerk- und anderen Problemen zu erhalten, und die Unterschicht des FMZ-Systems den Fehler bereits verarbeitet hat? Oder müssen die Benutzer sich selbst mit dem Versagen der Anfrage befassen? Warum behandelt der FMZ-Beamte ihn nicht? Ist es nicht bequemer für die Benutzer, ihn auf diese Weise zu verwenden?
Es wird Fehler geben, die Benutzer zur Fehlerverträglichkeit veranlassen. Die Unterschicht von FMZ verarbeitet keine Daten, und die Daten, die an Benutzer zurückgegeben werden, sind unverarbeitete Daten. Die spezifische Fehlerverträglichkeitsmethode oder Logik wird von der spezifischen Strategie formuliert. Denn wenn sie verarbeitet wird, kann sie die Entscheidung der Benutzer beeinflussen, und die Entscheidung wird von der Strategie verarbeitet, die sich speziell aufFilterfehlerinformationenoderWiederholenund andere Verarbeitungsmethoden.
Wie lautet die Einheit für das Auftragsvolumen eines OKEX-Kontrakts? Ist es der Münzbetrag oder der Vertragsbetrag?
Das Auftragsvolumen eines OKEX-Kontrakts wird anhand des Auftragsbetrags berechnet.exchange.Buy(1000,1)
bedeutet, einen Auftrag zum Preis von 1000 mit einem Vertragsbetrag von 1 zu erteilen.
Bedeutet das, dass ich Grenzbefehle erteilen muss, wenn ich anrufe?exchange.Sell
undexchange.Buy
auf FMZ?
Für Details müssen Sie sich den ersten Parameter ansehen, der übermittelt wird (der erste Parameter ist der Auftragspreis).-1
Die Bedeutung von Kaufvolumen und Verkaufsvolumen unterscheidet sich (der zweite Parameter), und wenn der Preis nicht-1
In den meisten Spot-Plattform-Order-Schnittstellen beträgt das Auftragsvolumen des MarktkaufordersVermögenswert- Nein.MünzbetragIn den Auftragsschnittstellen der Kryptowährungs-Futures-Plattformen ist das Auftragsvolumen im Allgemeinen eine ganze Zahl des Vertragsbetrags.
Schauen Sie sich die Kommando-Schnittstellen an:https://www.fmz.com/api#exchange.buyprice-amount https://www.fmz.com/api#exchange.sellprice-amount
Funktion der Post
Mail("smtp.qq.com", "xxxx@qq.com", "xxx", "xxx@qq.com", "test title", "test body")
Zugang zu QQ
Musterparameter für Pine language, Mylanguage: Die Anzahl der maximalen Perioden der Variablen beeinflusst die Indikatorberechnung
Standardmäßig beträgt die
Überprüfen Sie, ob beim Deklarieren einer Variablen ein Variablennamen fehlt, z. B. wenn Sie vergessen haben, den Namen in
BITMEX
429 Fehler,{"error":{"message":"Rate limit exceeded retry in 1seconds……"}}
Wenn Sie einen Fehler 429 sehen, bedeutet das, dass die Häufigkeit des Zugriffs auf eine Plattform zu hoch ist.
Only support CTP
Fehler
Das heißt, du hast einenFutures auf Rohstoffe CTPSchnittstelle oder Bibliothek in einemKryptowährungsstrategie- Ich weiß. Derzeit unterstützt FMZ International Station nur Kryptowährungsgeschäfte.https://www.fmz.cn.
Bittrex
Fehler bei Bots:{"success":false,"message":"NOT_ALLOWED","result":null}
Es zeigt die Plattform Grenzen Rechte.Bittrex
, und prüfen, ob es notwendig ist, die Informationen, wie z. B. die Benutzervereinbarung, zu überprüfen.
Fehler beim Bot-Betrieb:TypeError:value has no property at
Da die Fehler, die im Backtest und beim Bot gemeldet werden, unterschiedlich sind, kann dieser Fehler nicht während des Backtests erkannt werden.
unable to open database
Fehler
Wenn das SystemMac OS
Das System, achten Sie darauf, zu überprüfen, ob es sich um ein Genehmigungsproblem handelt.
Oder es könnte der Fehler sein, der durch den vollen Platz der Festplatte des Geräts verursacht wurde, der die Erstellung der Bot-Datenbankdatei deaktivierte.
Fehler:do not support the function
Es bezieht sich auf die Situation, dass das während des Backtests hinzugefügte Austauschobjekt eine Kryptowährungs-Spot-Plattform ist, aber die Futures-API-Funktion im Code aufgerufen wird.
Fehler:in SetCurrency OSError: exception: access violation reading 0x000000FCF25F0000
In einer Kryptowährung FuturesPython
Das Backtest-System verwendet einen privaten Docker, und das Handelspaar wird im Code gewechselt, wodurch der Fehler gemeldet wird.
Der Grund dafür ist, dass das Backtest-System keinen Kryptowährungs-Futures-Backtest für den Wechsel von Handelsparen unterstützt.
Fehler
Python
lokalen Rückprüfungsergebnissen für den MotorEOFerror
.
EOF
Die Ausnahme ist ausreichend und Sie können es überall anrufenPython
wird unterstützt.
# encoding: utf-8
'''backtest
start: 2021-08-30 00:00:00
end: 2022-09-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
'''
from fmz import *
task = VCtx(__doc__) # initialize backtest engine from __doc__
def main():
while not exchange.IO("status"):
Sleep(1000)
exchange.SetContractType("swap")
while True:
bars_1min = _C(exchange.GetRecords, PERIOD_M1) # Get 1min K-line
print(len(bars_1min))
_CDelay(2000)
# Calling the main function
try:
main()
except:
print(task.Join(False))
Mylanguage beinhaltet einen sehr versteckten Fehler bei der Periodenberechnung, und der berechnete Wert kann N/A sein, wie im folgenden Beispiel:
Der Grund dafür ist, dass der Parameter der Berechnungszeit den Datenbereich übersteigt, was zur Berechnung des N/A-Wertes führt.
In Mylanguage ist ein Fehler aufgetreten: Fehler beim Parsen, und die Strategie hat nur einfachen Code, die Anzahl der Fehlerzeilen ist sehr lang und die Fehlerursache kann nicht gefunden werden.
Es könnte ein Fehler sein, der durch das Problem der frühen Mylanguage-Vorlagen verursacht wurde. Lösung: 1. Exportieren Sie die Strategie als xml-Datei. 2. Erstellen Sie eine neue leere Mylanguage-Strategie. 3. Importieren Sie die xml-Datei in die neu erstellte leere Strategie. 4. Fügen Sie einen Bot zum Testen hinzu.
Fehler:fatal error:unexpected signal during runtime execution...go routine 11[syscall,locked to thread]
Überprüfen Sie, ob die StrategieC++
verwendet einen Nullzeiger und schlägt vor, dass Sie den fehlertoleranten Modus-Backtest verwenden, um zu erkennen.
Fehler beim Anrufenexchange.SetMarginLevel(10)
: Futures_OP 0:403:{"error":{"message":"Access Denied","name":"HTTPError"}}
Überprüfen Sie, ob die zugehörigen Berechtigungen desAPI KEY
Die von der Plattform angewandten Daten sind eingeschaltet.
Rücktestfehler:symbol not set
Es liegt daran, dass Sie den Vertrag während des Backtests der Futures-Plattform nicht in den Code eingestellt haben.exchange.SetContractType
Funktion in der API-Dokumentation.
FehlerERR_INVALID_POSITION
Wenn das Backtest-System den Fehler meldet, handelt es sich im Allgemeinen um einen Fehler, der durch Fehler beim Schreiben der Strategie verursacht wird. Wenn Sie versuchen, eine Position zu schließen, wenn keine Position vorhanden ist oder die Anzahl der Positionen unzureichend ist, wird der Fehler gemeldet. Überprüfen Sie, ob durch unvollendete Aufträge eine Position eingefroren wird.
FehlerERR_INVALID_ORDER
Wenn das Backtest-System den Fehler meldet, handelt es sich im Allgemeinen um einen Fehler, der durch Fehler beim Schreiben von Strategien verursacht wird. Sie sollten beachten, dass Sie den Auftragspreis überprüfen (die Kryptowährungs-Futures im Backtest-System unterstützen temporär keine Marktordern), ob das Auftragsvolumen 0, eine negative Zahl oder einen Dezimalbruchteil ist (das Auftragsvolumen von Futures-Kontrakten wird durch den Vertragsbetrag berechnet, der eine ganze Zahl ist).
FehlerERR_INSUFFICIENT_ASSET
Wenn der Backtest den Fehler meldet, zeigt er normalerweise an, dass der verfügbare Vermögenswert bereits nicht ausreicht, um die aktuelle Bestellung zu platzieren.
Binding Error:Cannot passnon-string to std::string
Fehlerinformationen
In Strategiecodes wird der Fehler in der Regel durch die falsche Angabe eines Attributnamens (mit einem undefinierten Attribut) verursacht.
Fehler{"status":6004,"msg":"timestamp is out of range"}
Der Fehler bedeutet, dass der Zeitstempel des Servers außerhalb des Bereichs liegt, und Sie müssen den Zeitstempel des Servers ohne große Abweichung aktualisieren.
Fehlertimeout
Der Fehler ist ein Timeout-Fehler, der einen Fehler anzeigt, der aufgrund der Nichtbeschaffung der Reaktionsdaten von der Plattformoberfläche für einen bestimmten Zeitraum nach dem Zugriff auf die Plattformoberfläche gemeldet wurde. Im Allgemeinen handelt es sich um ein Netzwerkzugangsproblem des Systems, in dem sich der Docker befindet (viele Probleme werden durch Wände verursacht), oder um ein Problem der Plattformoberfläche. Allgemeine Lösung: Verwenden Sie ausländische Server, um den Docker auszuführen.
Fehler beim Ausführen des Bots nach dem Schreiben der Strategie:syntax error invalid label
Fehlerquelle:
function main(){
if(1){
continue
}
}
//That will cause the error during operation
continue
Die Aussage muss in der Schleife verwendet werden!
Fehler:(CTP_T@9999)Error:140CTP:change the password when first log in, and please log in again after changing
Welches Passwort wurde geändert?
Hier wird angegeben, um zu ändernsimnow
Passwort des Kontos; wenn Sie sich mit einem bestimmten Futures-Unternehmenskonto anmelden, müssen Sie auch das Passwort für den ersten Login ändern (ein neues Konto hat ein erstes Passwort, und Sie können das Konto nicht verwenden, ohne das ursprüngliche Passwort zu ändern).
Derzeit unterstützt FMZ International Station nur Kryptowährungsgeschäfte.https://www.fmz.cn.
Fehler:400:{"error":{"message":"Nonce is not increasing.This nonce:1523891993165,last nonce:1523891993165","name":"HTTPError"}}
Es ist einnonce
Überprüfungsfehler und die Fehlerinformationen im Zusammenhang mitnonce
Sie können versuchen, die Uhrzeit des Systems zu synchronisieren, in dem sich der Bot-Docker befindet.
FehlerSecretkey decrypt failed
Der Fehler zeigt das Scheitern der Entschlüsselung anAPI KEY
. Überprüfen Sie, ob Sie das FMZ-Konto-Passwort geändert haben, nachdem Sie dieAPI KEY
Versuchen Sie, dieAPI KEY
auf der Seite
Offene Position für Rohstofffutures Fehler:CTP: only close position
Es gibt viele Gründe, warum der Bericht den Status voncan only close position
. Es kann sein, dass das Konto eingefroren wurde (es wurde für eine lange Zeit nicht verwendet, mehr als 1 Jahr), oder es kann in den falschen Kanal eingeloggt werden (CTP hat viele Sitze).
Derzeit unterstützt FMZ International Station nur Kryptowährungsgeschäfte.https://www.fmz.cn.
Welcher Grund könnte es sein, wenn der Fehler:GetOrder(455284455):Error:invalid order id or order canceled.
Er wird immer hochgehoben, wenn ich anrufe.exchange.Getorder
?
Wörtliche Bedeutung: die Bestellung wurde storniert oder die Bestell-ID ist ungültig. Grund: in einigen Plattformen, wenn Sie eine Bestellung stornieren, werden die Bestellinformationen nicht aufbewahrt, und sie werden eliminiert.exchange.GetOrder
, wird der Fehler gemeldet, oder die von Ihnen angeforderte Bestell-ID ist ursprünglich falsch.
Fehler: Ratenbegrenzung, 429 Zu viele Anfragen
rate limit, 429 Too Many Requests
zeigt an, dass die Häufigkeit des Zugriffs auf eine Plattformoberfläche zu hoch ist, so dass Sie die Häufigkeit des Zugriffs auf die Plattformoberfläche reduzieren müssen.
Immer erhöhen.Invalid order price/amount
im Bot und Backtest
Diese Art von Fehlern werden durch den falschen Preis und das Auftragsvolumen verursacht, die bei der Aufforderung der Auftragsfunktion übergeben werdenexchange.Buy
oderexchange.Sell
Für...Negatives Auftragsvolumen, 0und andere Fehlererkennungsmethoden:Log
um den Preis- oder Volumenparameter zu exportieren, der vor der Bestellung durchexchange.Buy
oderexchange.Sell
, um das Problem zu ermitteln.
Was für ein Fehler ist das?GetOrders:400:{"code":-1121,"msg":"Invalid symbol."}
?
Der Fehler bedeutet:ungültiges HandelspaarSie müssen überprüfen, ob die Einstellung des Handelspaares falsch ist.
Was bedeutet es, wenn es Fehlercodes gibt, wenn die Bots einen Fehler melden?
Sie können die Erklärungen für die Fehlercodes von verschiedenen Plattform-Schnittstellen in der API-Dokumentation dieser Plattformen sehen.
Druckzeit der realen Marktertragskurve von Pine Language und Mylanguage Drucken Sie regelmäßig nach den Einstellungen der Vorlageparameter Pine language/Mylanguage und drucken Sie, wenn die Strategie vollständig geschlossen ist.
Der Mylanguage-Bot druckt die Anzahl der Signal-Trigger-Linien aus, aber es gibt keine Befehlsoperation.
Es kann sein, dass die Parameter-Einstellungen der Mylanguage-Vorlage unangemessen sind, wie Genauigkeit, Mindestbestellvolumen und andere Parameter. Der Grund ist, dass die Signal-Trigger-Schicht erfolgreich beurteilt wurde und an der Trade-Execution-Schicht wurde beurteilt, dass die Bestellung aufgrund einiger Probleme mit den Parametern nicht platziert werden konnte, und keine Bestellung tatsächlich platziert wurde. Sie können sich auf die Mylanaguage-bezogenen Beiträge beziehen:https://www.fmz.com/bbs-topic/9788 https://www.fmz.com/bbs-topic/9791
Warum kann der Bot das Anforderungssignal nicht empfangen, wenn ich bereits eine Webhook-URL-Warnung auf Tradingview eingestellt habe?
Überprüfen Sie, ob der API KEY in der Webhook-URL-Adresse korrekt ist. Der API KEY hier bezieht sich auf den erweiterten API KEY von FMZ, der in den Konto-Einstellungen in der oberen rechten Ecke von FMZ festgelegt ist. Überprüfen Sie, ob die Bot-ID in der Webhook-URL korrekt ausgefüllt ist. Überprüfen Sie, ob die erweiterten API KEY-Rechte von FMZ korrekt angegeben sind. Die Rechte werden in Englisch durch Kommas getrennt. Der Standardwert ist *, was alle Rechte bedeutet.
Warum sind die Symbole von Währungspaaren in der Plattform-Trading-Paar-Konfiguration begrenzt, wenn Sie einen Bot hinzufügen?
Sie können die benutzerdefinierte Steuerung von Handelspaaren wie folgt einstellen (sie kann nur in Bots eingestellt werden, da die Symbole im Backtest-Rechenzentrum begrenzt sind, kann sie nicht im Backtest eingestellt werden):
Warum können Tickers nicht erhalten werden, wenn ich FutuOpenD auf dem Server ausfange, und können die Tickers auf dem lokalen Gerät erhalten werden?
Sie müssen überprüfen, ob die IP-Adresse des Servers im Ausland ist, denn FutuOpenD hat Grenzen für ausländische IP-Adressen. Derzeit unterstützt FMZ International Station nur Kryptowährungsgeschäfte.https://www.fmz.cn.
Es gibt keine Maßnahmen, wenn die Mylanguage-Strategie eingesetzt wird, und sie aktualisiert zunächst nur die TAQ.
Überprüfen Sie, ob Sie das Modell des Schlusspreises verwendet haben, das durch die Strategie-Mylanguage-Vorlageparameter überprüft werden kann.
Futures auf Rohstoffe
In CTP kann nur die Shanghai Futures Exchange zum Schließen von heutigen und gestrigen Positionen verwendet werden.
Der Backtest unterscheidet nichtheute PositionenvonPositionen von gestern, so dass es nicht festgelegt werden kann, ob man heute oder gestern Positionen schließt.
Einige Symbole in Bots, wieIF
, haben die Standardeinstellung, dass, wenn es heute Positionen gibt, es heute Positionen zuerst schließen wird. Bei dieser Gelegenheit können Sie nicht angeben, und Sie können nur heute Positionen zuerst schließen. Daher werden die Positionsinformationen von heute und gestern Positionen zu einem zusammengeführt.
Derzeit unterstützt FMZ International Station nur Kryptowährungsgeschäfte.https://www.fmz.cn.
Warum der Zeitstempel einer Bar inBITMEX
K-Liniendaten haben eine Periode mehr als die der gleichen Position in anderen Plattform-K-Liniendaten?
Der Grund ist:BITMEX
nimmt die Endzeit des aktuellen Balkens als K-Zeitstempel ein (einige K-Zeiträume werden nicht vonBITMEX
Die Zeitstempel dieser Perioden werden also durch die Startzeit von Bar generiert).
In der Rohstoff-Futures-Strategie wird dieProfit
in den von der Funktion zurückgegebenen Datenexchange.GetPosition
unterscheidet sich von den berechneten variablen Gewinnen und Verlusten?
Siehe API-Dokumentation:https://www.fmz.com/api#exchange.getposition. Profit
inCTP protocol
ist definiert alsGewinn und Verlust nach Marktwert, der den Gewinn und Verlust Ihrer aktuellen Position im Verhältnis zum Abwicklungspreis des vorherigen Handelstages darstellt.
Derzeit unterstützt FMZ International Station nur Kryptowährungsgeschäfte.https://www.fmz.cn.
Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.
Überprüfen Sie, ob die Funktion
/*backtest
start: 2022-11-08 00:00:00
end: 2023-02-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
function main() {
var t = exchange.GetTicker()
exchange.Buy(t.Last - 10, 100/(t.Last - 10))
while(1){
t = exchange.GetTicker()
Sleep(1000)
}
}
Im Backtest von Binance Futures undBITMEX
, wird die Finanzierungsquote in der Gewinn- und Verlustkurve berechnet, die durch das Backtest-System erzeugt wird?
Die Finanzierungsquote wird in der Gewinn- und Verlustkurve berechnet, die durch das Backtest-System erzeugt wird.
Die Schaltfläche
Sie müssen überprüfen, ob der Proxy eingeschaltet ist, was das Ausladen der Dateien auf der Seite von
In derEchte ZeckeBacktest, warum gibt es ein Limit von 50MB?
Der reale Markt-Level-Backtest zeigt in dem realen Tick an, dass der TAQ tatsächlich Sekunde für Sekunde aufgezeichnet wird. Darüber hinaus gibt es Markt-Snapshots und Orderflussdaten, die von großem Volumen sind, so dass nur 50MB Datenvolumen unterstützt wird. Das heißt, der maximale Zeitbereich des realen Marktniveaus beträgt mehrere Stunden und die Backtestzeit kann nicht verlängert werden. Der reale Tick-Backtest wird hauptsächlich zur Prüfung von Hochfrequenzstrategien verwendet.
Warum hat es nicht funktioniert, als ich die Gebührenparameter im Backtest-System geändert habe?
Im Backtest-System gelten die Gebührenparameter, wenn Sie die Gebührenparameter zurücksetzen, nachdem Sie das alte Plattform-Handelspaar gelöscht und das Plattform-Handelspaar erneut hinzugefügt haben. Das zuvor hinzugefügte Plattform-Handelspaar kann durch die Steuereinheit auf der Seite nicht geändert werden.
Wie lässt sich die Backtest-Anpassung mehr Daten anzeigen lassen?
Wenn Sie ein benutzerdefiniertes Diagramm (durch dieChart
Die Datenmenge der Zeichnung, die im Backtest angezeigt wird, hängt mit derKarteDer Parameter steuert die maximale Strichzahl eines Diagramms.chart.reset
Die Funktion wird verwendet, um einen Teil der alten Daten zu löschen.
C++
Backtest zeigte nichts, es gab keine Fehlermeldung und keine Protokolle, und nichts auf der Seite änderte sich, nachdem ich auf die Schaltfläche geklickt hatte.
Einige Fehler vonC++
Sie können die möglichen Fehler, die während des Betriebs auftreten könnten, Stufe für Stufe erkennen, indem Sie die Ausschlussmethode verwenden.NAN
und Nummerntyp nachNAN
Das wird zum Absturz des Programms führen.
python
Der Backtest ist verstopft!
Man kann die Funktion nicht schreiben.Sleep
in dertry
Fehlererkennung, und das Schreiben im Bild wird den Stau verursachen.
Warum gibt es im Backtest nur mehrere Optionen für die Plattform und die Symbole für das Handelspaar sind ebenfalls begrenzt?
Es gibt zu viele Handelspare auf Plattformen, so dass nur wenige repräsentative Handelspare für den Test im Backtest-System ausgewählt wurden.Zollkontrolledie von diesen Plattformen unterstützten Handelspare in Bots einzusetzen.
Warum unterstützt der Backtest nicht mehr Handelspare?
Das Backtest-System unterstützt derzeit nur die Mainstream-Währungen einiger relativ großer Plattformen, und einige Währungen werden noch nicht unterstützt. Wenn Sie eine Strategie testen müssen, können Sie die Währungen durch andere ähnliche Währungen im Backtest ersetzen. In der Tat, außer dass die Marktkurse betroffen sein können, ist die Verwendung anderer ähnlicher Kryptowährungen zum Backtest der Strategie in Ordnung. Einfach ausgedrückt, versucht das Backtest-System, Mainstream-Handelspaare zu unterstützen, und der Backtest sollte nicht mit einem bestimmten Symbol übereinstimmen. Das heißt, wenn die Strategie wirksam ist, auch wenn es sich um eine Reihe zufällig generierter Marktquoteänderungen mit Handelsregeln oder die Marktquote anderer Währungen handelt, sollten im Grunde positive Gewinne erzielt werden. Dies ist die Universalität einer Strategie. Wenn sie nur einer Periode der Geschichte entsprechen kann oder auf einem bestimmten Symbol gut abschneiden kann, dann hat diese Strategie tatsächlich potenzielle Risiken oder Mängel.
Im Backtest-System: Begriffe vonAbschlussgewinn und Verlust, Gewinne und Verluste aus Beteiligungen, Marge, Geschätzte Rendite, Aktuell verfügbare USDT
Abschlussgewinn und -verlust: Der kumulierte Gewinn und Verlust aller vor der aktuellen Position eröffneten und geschlossenen Geschäfte. Holding P&L: Das ist der Gewinn und Verlust der aktuellen Position, wenn die aktuelle Position nicht gehalten wird, ist er 0, Marge: Die Höhe der Marge, die von der aktuellen Position genutzt wird. Geschätzte Rendite: Der Gewinn und Verlust, der durch Schließen der aktuellen Position zum aktuellen Preis (hypothetisch) entsteht, wird dann dem kumulierten Gewinn und Verlust der geschlossenen Position hinzugerechnet, um die geschätzte Rendite zu berechnen. Derzeit verfügbare USDT: Der aktuelle für die Eröffnung von Positionen verfügbare USDT-Betrag.
Berechnung der Gewinnquote im Backtestsystem
for (var i = 0; i < profits.length; i++) {
if (i == 0) {
if (profits[i][1] > 0) {
winningResult++
}
} else {
if (profits[i][1] > profits[i - 1][1]) {
winningResult++
}
}
if ((profits[i][1] + totalAssets) > maxAssets) {
maxAssets = profits[i][1] + totalAssets
maxAssetsTime = profits[i][0]
}
if (maxAssets > 0) {
var drawDown = 1 - (profits[i][1] + totalAssets) / maxAssets
if (drawDown > maxDrawdown) {
maxDrawdown = drawDown
maxDrawdownTime = profits[i][0]
maxDrawdownStartTime = maxAssetsTime
}
}
}
Das oben genannte ist der Gewinnrate-Algorithmus, der wie folgt berechnet wird: Nachdem das Backtest-System regelmäßig den schwimmenden Gewinn und Verlust berechnet hat, wird eine schwimmende Gewinn- und Verlustkurve berechnet. Beginnen Sie mit dem ersten Punkt, um mit dem nächsten Punkt zu vergleichen. Wenn er höher ist, wird er als Gewinn aufgezeichnet, und wenn er niedriger ist, wird er als Verlust aufgezeichnet, und dann den Vergleich mit dem nächsten Punkt fortsetzen.
Wo ist das Unterrichtsvideo der BereitstellungLinux
Ein Docker?
Bilibili:https://www.bilibili.com/video/BV1eZ4y1c73v?share_source=copy_web
Ist es notwendig, die alte zu stoppen, wenn ich den Docker aktualisieren, und löschen Sie dierobot
Programm, und es wieder ausführen?
Sie können direkt die alten löschenrobot
Programmdatei, ohne den Docker zu stoppen, dann ein neues komprimiertes Paket herunterladen, dekomprimieren die neuerobot
Der Docker wird aktualisiert, aber der laufende Bot verwendet immer noch die alte Version im Speicher, und die neueste Version wird nur verwendet, wenn der Bot neu gestartet wird.
Docker-Einführung vonLinux
Server
Schritte zur Installation eines Dockers aufLinux
: https://www.bilibili.com/video/BV1eZ4y1c73v?share_source=copy_web
Bei Anwendungscreen
Um das Docker-Programm auszuführenrobot
, -bash:screen:command not found
Dies ist ein sehr schwieriger Fall, und der Docker kann nicht laufen.
Linux
Das System installiert sich nichtscreen
Software, und die allgemeine Installation ist ausreichend.CentOS
Systeminstallationsbefehl:yum install screen
.
Der aktuelle Docker unterstützt bereitsSSH
Sie können die Schaltfläche in den Hintergrund schalten, um den Schalter zu trennen.screen
, können Sie den Befehl direkt imrobot
Verzeichnis des Dockerprogramms:./robot -s node.fmz.com/xxxxxxx
, und geben Sie das FMZ-Konto-Passwort ein; wennLogin OK
Das Programm wird in der Tabelle "Dokumentation" angezeigt, was bedeutet, dass die Bereitstellung erfolgreich ist../robot -s node.fmz.com/xxxxxxx
ist der eindeutige Identifikationscode jedes FMZ-Kontos, und geben Sie einfach Ihren eigenen ein (nachdem das Konto angemeldet ist, springen Sie auf die Docker-Seite, klicken Sie auf xxxxxxx
.
Wo ist das Bot-Log, wenn ein Docker einen Bot ausführt?
In derDB3
Datenbankdatei in derlogs
Das Docker-Programm befindet sich im Verzeichnis, der Dateinamen der Datenbank ist derid
der Bot, und die Erweiterung istdb3
.
InLinux
System, Verwendung./robot -l
Um die Namen der Plattformen anzuzeigen, die vom Docker unterstützt werden, welche Plattform ist dieexchange
Unter den Namen?
Der Austauschobjekt, dessenNameistexchange
bezieht sich auf die Plattform,Allgemeines ProtokollEinzelheiten des allgemeinen Protokolls:https://www.fmz.com/api#通用协议
Die Docker-Seite zeigt keine Docker in Listenformat an.
Wenn mehr als 5 Docker hinzugefügt werden, wird ein Steuerelement für die Anzeige im Listenformat angezeigt.
Ist es normal, dass bei der Erstellung eines Bots ein Docker nicht von mir selbst in der Combo Box des Dockerparameters eingesetzt wird?
Der von FMZ bereitgestellte öffentliche Docker ist ein zusätzliches Quick-Start-Tool für Anfänger, so dass die Benutzer beim Lernen keinen Docker bereitstellen müssen und für Anfänger einfach zu starten ist.
Ist die Adresszeichenfolge (./robot -s node.fmz.com/1234567
) ausschließlich für mich oder andere, wenn ein Docker eingesetzt wird?
Diese Adresse ist die eigene Adresskennung jedes Benutzers und der Wert der/1234567
Ein Teil jedes Benutzers ist einzigartig, um den Benutzer zu identifizieren.Dashboard-> klickenDocker hinzufügen->Docker-Seite hinzufügen, und dann können Sie diese Adresse sehen; kopieren und direkt einfügen und Sie können es verwenden.
Die Umgebungsvariable des Systems, in dem sich der Docker befindet, hatpython2.7
, aber warum wird immer noch gefragt, ob die Umgebungsvariable nicht gefunden werden kann?
Wann?windows
System installiert erstmalspython
, müssen Sie die Umgebungsvariable einstellen und neu starten, um sie gültig zu machen.
EOF-Fehler
Python-Backtest wird durch EOF-Ausnahme beendet (weil manchmal eine Strategie eine unendliche Schleife sein kann).
Wie viele Bots kann ein Docker betreiben?
Es gibt keine Grenze für die Anzahl, abhängig von der Serverkonfiguration und der Komplexität der Strategie. Insbesondere muss berücksichtigt werden, ob diese mehreren Bots auf die gleiche Plattformoberfläche zugreifen (unter Berücksichtigung der Häufigkeit der Schnittstellenanrufe, da mehr Bots eine höhere Häufigkeit bedeuten); im Allgemeinen sind 5 bis 6 Bots in Ordnung.
Docker, Bot und andere grundlegende Konzepterläuterungen
Der Inhalt der Seiten
Wenn der Inhalt des Bots und der Docker-Seite alle verschwunden sind, wenn der Bot und der Docker beide normal auf dem Server laufen, müssen Sie die Fehlermeldung des Browsers lesen, um zu sehen, ob der Browser ein Plugin installiert hat, was das globale Variablenverschmutzungsproblem verursacht. Die Lösung besteht darin, im Plugin des Browsers zu schreiben oder einen Browser ohne Browser-Plugin zu verwenden, um sich bei FMZ anzumelden.
Wird die Gebühr für die offiziellen Vermietungs- und Ein-Klick-Vermietung eines Docker-Servers automatisch verlängert, solange der FMZ-Konto ausreicht?
Die gemieteten Strategien werden nicht automatisch Gebühren aufladen, und die Ein-Klick-Vermietung eines Dockers wird automatisch aufgeladen.
Ich möchte einige Funktionen in die Vorlage trennen, damit andere Strategien sie auch verwenden können.
Die Beschreibung inFMZ API
Unterlagen:https://www.fmz.com/api#模板类库
Wird diewexApp
Simulationsplattform von FMZ simulierter Bot nur zur Verfügung stellenBTC_USDT
Wie kann ich andere Handelspare anpassen?
wexApp
simulierter Bot unterstützt derzeit nur wenige Haupthandelspare, und nicht alle Handelspare werden simuliert.
Ich habe ein Problem mit gleichzeitigen Aufrufen der erweiterten API, d.h. während der Gleichzeitigkeit wird immer ein
Sie können mehrere FMZ-Plattformen erstellenAPI KEY
s für gleichzeitige Anfragen.
Werden die auf einem Docker erstellten Debug-Threads den Log-Status beim Benutzen des Debug-Tools aufzeichnen?
Wenn das Debug-Tool ausgeführt wird, wird das zuvor erstellte Exchange-Objekt beibehalten und nicht freigegeben, wenn zum zweiten Mal nichts geändert wird.WährungsmodusoderHebelwirkung.
Warum, als ich diewexApp
Sie simulierten die Plattform und meldeten sich an, es gab keine Vermögenswerte, sowohl in der Brieftasche als auch im Währungsabschnitt?
Nach der Registrierung müssen Sie Ihre E-Mail bestätigen, um Ihr Konto zu aktivieren, und Sie können Ihr Konto im persönlichen Zentrum aktivieren.
Die Log-Informationen sind relativ lang und abgeschnitten, und am Ende zeigte es"... Aber ich muss die Struktur der Daten sehen, was soll ich tun?
Die Lösung besteht darin, dieDebug-Toolauf derDashboard, und verwenden Siereturn
Die Anzeige des Inhalts wird nicht abgeschnitten.
Was machen die Funktionen mit$.
in derJavaScript
Was bedeutet Strategie?
Die Funktionen mit Beginn$.
sind Exportfunktionen von Vorlagen, ähnlich wie die Schnittstellenfunktionen von Modulen; siehe Beschreibung in der API-Dokumentation:https://www.fmz.com/api#模板类库
Die Exportfunktionen derpython
Strategie mitext.
Ich habe es am Anfang gesehen.
Wie zeichnen Sie gerade Linien auf dem Marktdiagramm des Backtest-Ergebnisses?
Es gibt zwei Arten von Diagrammen, die schließlich im Backtest angezeigt werden: eine wird vom System erzeugt, die die Strategie nicht kontrollieren kann.Chart
Funktion der FMZ-API-Schnittstelle im Strategiecode.https://www.fmz.com/api#chart...
Ich habe den Google-Validator aus Versehen gelöscht, wie kann ich den Google-Validator zurücksetzen? Auf der Account-Einstellungsseite der Plattform konnte ich nicht den Ort finden, an dem ich ihn per E-Mail zurücksetzen kann.
Sie können sich mit einem anderen Browser in die FMZ-Plattform einloggen und wenn Sie den Google-Verifizierungscode eingeben müssen, klicken Sie auf
PlattformAPI KEY
Sicherheitskontrolle
DieAPI KEY
Die Daten des Benutzers werden verschlüsselt und auf der Browserseite hochgeladen.Https
protocol.
Strategiesicherheitsfrage
Dazu können Sie sich auf:https://www.fmz.com/bbs-topic/1657.
FMZ-Rechnungswesen
Abrechnungsstandards für den Live-Handel:
Die oben genannte Abrechnungszeit bezieht sich auf die Bearbeitungszeit für Abrechnungsvorgänge. Aufgrund der für diese Abrechnungsvorgänge erforderlichen Zeit kann die Abzugszeit verzögert werden. Zum Beispiel, wenn die aktuelle Abrechnungszeit 9:00 Uhr ist, ist es möglich, dass die Bearbeitungszeit für diese Abrechnungsvorgänge 9:02 Uhr ist (wie im Screenshot gezeigt). Dies wird während der nächsten Abrechnungsvorgänge angepasst (die nächste Abzugszeit wird 10:00 Uhr sein, keine Vorausabrechnung).
Die Talib-Bibliothek verarbeitet Daten mit begrenzter Präzision.
Wenn die Daten besonders klein sind, werden sie abgeschnitten und schließlich als 0 angezeigt. Siehe:https://github.com/TA-Lib/ta-lib-python/issues/157