Erfinder quantifizieren die API-Dokumentation

Schriftsteller:Kleine Träume, Erstellt: 2017-11-27 09:05:08, Aktualisiert: 2023-07-12 16:47:31

[TOC]

Grundlegende Informationen

Eintritt

Was kann die FMZ-Quantitätshandelsplattform tun?

FMZ (Erfinder) Quantitative HandelsplattformEs handelt sich um die professionellste Quantifizierungs-Community im Bereich der Quantifizierung, in der Sie Quantifizierungsstrategien lernen, schreiben, teilen, kaufen und verkaufen können; Online-Rezensionen und Analog-Trading mit Analog-Trägern; Lauf-, Offensiv- und Objektiv-Trägern; Unterstützung für nahezu alle Mainstream-Digital-Währungs-Exchanges.

Die vollständige Serie von Tutorials

Ich habe das Gefühl, dass ich es nicht kann.

Video-Tutorials:

Wenn Sie Probleme haben, können Sie jederzeit auf das Forum gehen, Fragen stellen, diskutieren, auf der Plattform einen Auftrag stellen oder in einem Telegramm schreiben.TelegrammIch möchte Ihnen sagen, dass ich die Frage, die Sie mir stellen, sehr schnell beantworten kann.

Unterstützung für ChatGPT-Unterstützung

Die FMZ-Quantitätshandelsplattform verfügt über ChatGPT als Hilfsprogramm für die Entwicklung, und Sie können "ChatGPT" in der Schnellknopfbar im "Control Center" klicken, um zu "ChatGPT" zu kommen.Chat-GPT-Hilfen-Seite

Was für Programmiersprachen kann ich verwenden, um meine Strategie umzusetzen?

FMZ-Quantitative Handelsplattform unterstütztJavaScriptTypeScriptPythonC++PINE麦语言Blockly可视化Sie schreiben eine Designstrategie.

UnterstützungTypeScriptDie Sprache, die bei der Strategieentwicklung immer noch alsJavaScriptDas ist die Strategie, die wir zu Beginn des Strategie-Codes schreiben.// @ts-checkOder klicken Sie auf "TypeScript" in der oberen rechten Ecke des Richtlinienbereichs, um zu wechseln.TypeScriptDie Plattform erkennt den Code automatisch als:TypeScriptSie können auch die Kompilierungs- und Typprüfungsunterstützung für:

  • Art der Sicherheit:TypeScriptDie Static-Type-Checking-Funktion von Microsoft Office hilft Ihnen dabei, potenzielle Fehler zu erkennen und die Qualität zu verbessern.
  • Der Code wird automatisch ausgefüllt:TypeScriptDas Typ-System ermöglicht es Ihnen, die gewünschten Eigenschaften und Methoden schneller zu finden, wenn Sie Code schreiben, was die Entwicklungseffizienz verbessert.
  • Klarere Codestrukturen: NutzenTypeScriptSie können Ihren Code besser organisieren und pflegen, damit er leicht zu lesen und zu verstehen ist.
  • Ein weiterer wichtiger Punkt ist, dass es sich um eine sehr schwierige Aufgabe handelt.TypeScriptEs bietet leistungsstarke objektorientierte Programmiereigenschaften wie Schnittstellen, Klassen und Panotypen, die Ihnen helfen, robustere, wiederverwendbare Strategie-Code zu schreiben.

Eine Kenntnis einer dieser Strategien ist ausreichend. Zusätzlich zur Unterstützung der Programmierung kann die Strategie auch mit Blockly genutzt werden. Die Strategie der Visualisierung von Modulen ist intuitiver und erfordert keine Programmierung.

BlocklyDas Video zeigt:

EinstellungenPythonStrategieprogramm verwendetPythonErklärer

NutzungPythonSchriftliche Richtlinien, Tests oder Festplatten, wenn die Systemumgebung, in der der Host ist, gleichzeitig installiert istPython2undPython3Das Programm kann gestartet werden, wenn die Politik in der ersten Zeile gestartet wird.PythonDie meisten von ihnen sind nicht in der Lage, sich zu bewegen.#!python3#!python2Das System findet automatisch einen Interpreter. Es kann auch einen absoluten Pfad angeben, z. B.:#!/usr/bin/python3

Was ist ein Treuhänder?

TreuhänderVerständlich als Ausführungsstelle für Ihre Handelsstrategie, verantwortlich für komplexe Datenanfragen, Datenempfang, Netzwerkverbindungen, Log-Return usw. Die Administratoren laufen auf Ihren Servern und beeinträchtigen Ihre Administratoren nicht, auch wenn die FMZ-Quantitäts-Handelsplattform-Website durch einen Netzwerkausfall gestört wird.LinuxFensterMac-BetriebssystemAndroidARM-Linux von Raspberry PiDas ist ein großes Problem.VerwalterseiteInstallation und Aktualisierung von Linux-Hosts■ Die von den Treuhandverwaltern verwalteten Festplattenprotokolle werden im Verzeichnis der Treuhandprogramme gespeichert../logs/storageIn dem Dokument heißt esdb3DieSqliteDie Datenbank kann in einem Dokument verwendet werden.SqliteDie Software wird direkt bearbeitet und für diese Erweiterungen heißt es:db3Die Dateiname ist die Dateiname der Festplatte.ID

Unterstützte Vereinbarung

  • Blockchain-Assets: Mittlerweile werden mehr als 50 Blockchain-Assets (digitale Währungen) unterstützt.
  • Der Zugang zum Universal-Protokoll:Allgemeine Vereinbarung

Strategische Sicherheit

Entwickeln Sie Strategien auf der FMZ Quantitative Trading Platform, die nur für die FMZ Quantitative Account-Inhaber sichtbar sind.PythonDas Paket wird in den Strategiecode geladen, was die Lokalisierung der Strategie ermöglicht.

PythonDie Sicherheit des Codes: WeilPythonDie Sprache ist offen und sehr leicht zu kontracompilieren, wenn die Politik nicht selbstständig ist, sondern vermietet wird, wenn man befürchtet, dass die Politik bei einer Leckage an einem von ihm eingesetzten Trustee ausgeführt wird und in Form von Unterkonto- oder Volltrustverwaltung vermietet wird.

PythonDie Strategie-Code ist: Sie sind nicht mehr in der Lage, sich zu bewegen.PythonStrategie: Codeautoren verschlüsseln nicht, wenn sie es selber benutzen, sondern wenn sie es an andere vermieten.PythonDie Strategie zum Start wird mit dem folgenden Code bearbeitet, der für Selbstbedienung oder Vermietung bestimmt werden kann.PythonOb die Strategie beim Ausführen verschlüsselt wird.PythonDie Version lautet:Python 2.7Ich bin nicht derjenige, der das tut.Python 3.5Ich bin nicht derjenige, der das tut.Python 3.6Die Versionen sind hier:

  • Der Code wird von den Autoren selbst ausgeführt und durch Registrierungscodes an andere weitergegeben:#!pythonKomma verwendet, um eine Python-Interpreterversion anzugeben,Intervall, Eingabe von VerschlüsselungsanweisungenencryptUnd wenn nichtPythonVersion direkt hinzugefügt#!encrypt

    #!python,encrypt
    

    Oder

    #!encrypt
    
  • Die Autoren der Strategie betreiben sie selbst und geben ihren Code nicht verschlüsselt an andere weiter, indem sie Registrierungscodes verwenden:

    #!python,not encrypted
    

    Oder

    #!not encrypted
    

UrteilPythonStrategiecode-Verschlüsselung wirkt mit Codeos.getenv('__FMZ_ENV__')und die String zurückgibt"encrypt"Die Erklärung ist in Kraft getreten. Nur die Festplatte ist gültig, die Nachprüfung wird nicht verschlüsselt.PythonDie Strategie-Code.

#!encrypt
def main():
    ret = os.getenv('__FMZ_ENV__')
    # 打印变量ret为字符串encrypt或者ret == "encrypt"为真,即代表加密生效
    Log(ret, ret == "encrypt")

Sicherheit der Schlüssel

Sensible Daten wie Kontoinformationen, die auf der FMZ-Quantitätshandelsplattform konfiguriert werden, und die Verschlüsselungsstränge in den Politikparametern werden an der Browserseite verschlüsselt. Diese Informationen, die auf der FMZ-Quantitätshandelsplattform gespeichert werden, sind verschlüsselt ("nicht-offensichtliche Daten"). Nur die privaten Geräte der Benutzer können entschlüsselt werden, was die Sicherheit der sensiblen Daten erheblich verbessert. Bitte verkaufen Sie oder verkaufen Sie die Politik nicht, wenn andere sensible Informationen in den Politikcodes, -parameter-Einstellungen oder -beschreibungen enthalten sind.

  • Die Plattform unterstützt die lokalisierte Konfiguration von sensiblen Informationen wie Kontoinformationen, Geheimschlüssel und so weiter.

    Auf der Seite der Plattformkonfiguration der Börseninformationen werden alle versteckten, verschlüsselten Textfeldsteuerungen unterstützt, um die Pfade der Konfigurationsdatei in die lokalen Dateien der Treuhänder zu laden.RSA KEYEin Beispiel ist die Verifizierungsmethode, die detailliert beschreibt, wie sensible Informationen lokal auf dem Gerät konfiguriert werden können, auf dem sich die Administratorprogramme befinden.

    1. Erstellen Sie einen öffentlichen oder privaten RSA-Schlüssel.PKCS#8Es gibt viele Tools, mit denen Sie Ihre öffentlichen Schlüssel und Ihre privaten Schlüssel erstellen können.opensslDas ist nicht wahr. 2. Auf einer Börse erstelltRSA KEY, beim Erstellen hochgeladenDer erste SchrittDer öffentliche Schlüssel wurde in. 3 wirdDer erste SchrittDer private Schlüssel wurde intxtDie Dateiformate speichern den gleichwertigen Verzeichnis des Administrators und können auch andere Pfade in dem Verzeichnis speichern, in dem sich der Administrator befindet. 4. Konfiguration der Börse auf FMZAccess KeySie müssen die Liste der in der Börse erstellten Bilder im Editor-Box ausfüllen.RSA KEYDas ist nicht wahr. 5. Konfiguration der Börse auf FMZSecret KeyIn der Redaktionsliste finden Sie:Schritt dreiSie werden in den Administrator-Peer-Directory platziert.txtDer Pfad der Datei, z.B. der Name der Datei, die platziert wird, heißt:rsaKey.txtIn diesem Fall werden die folgenden Informationen in den gleichwertigen Verzeichnissen für das Dokument und den Treuhänder eingegeben:file:///rsaKey.txt◦ die nächste Stufe des Verzeichnisses, in dem sich das Dokument befindetrsa_keySie füllen:file:///rsa_key//rsaKey.txtUnd wenn sie platziert werden.rsaKey.txtEs ist wichtig zu beachten, dass die Datei nur die Platzierung in dem gleichwertigen oder untergeordneten Verzeichnis des Host-Levels unterstützt.

    Das bedeutet, dass die Lokalisierung des privaten Schlüssels sicherer ist und dass man sich auf den genauen Ablauf beziehen kann.Video erklärt

Wiederholungssystem

Was ist ein Retest-System und wofür ist es nützlich?

Wenn Sie eine Quantitative Trading Strategie entwickelt haben, wie können Sie die Grundlagen Ihrer Strategie verstehen, wie sie funktioniert, wie sie sich auswirkt? Natürlich können wir nicht direkt mit echtem Gold und Silber handeln, sondern wir können Ihre Strategie mit historischen Daten testen.

Wie genau sind die Daten des Retest-Systems und wie genau sind die Ergebnisse?

Die FMZ-Quantitative-Trading-Plattform unterteilt das Rückmessmodell inEchtzeit-RückprüfungundAnalog-Level-Rückprüfungen❖ Die realen Datenträger werden vollständig mit den vollständigen historischen Daten getestet; die simulierten Datenträger werden mit den realen K-Line-Daten erzeugt.tickDie Daten werden für eine Rückprüfung verwendet. Beide Daten basieren auf echten historischen Daten, aber die Daten auf echten Datenträgern sind genauer und die Ergebnisse sind glaubwürdiger.FMZ-RückmessmechanismenAber Retrospektive ist lediglich eine Strategie, die sich auf historische Daten stützt. Historische Daten sind nicht vollständig repräsentativ für zukünftige Ereignisse.

Die Frage, auf die man bei der Rezension verschiedener Sprachstrategien achten sollte:

JavaScriptundC++Die Strategie-Rückprüfung erfolgt am Browser-End, auf dem Festplatte oder auf dem PC.WexAppDas ist eine echte Plattform, die sich als FMZ-Quantitäts-Trading-Plattform erweist.WexAppDie Simulation Exchange (SME) funktioniert ohne die Installation von anderen Software, Bibliotheken oder Modulen.PythonDie Nachprüfung erfolgt auf dem Host, kann auf dem FMZ-Quantifizierten öffentlichen Server oder auf dem eigenen Host des Benutzers durchgeführt werden.PythonWenn einige Bibliotheken benötigt werden, müssen sie selbst installiert werden (nur häufig genutzte Bibliotheken werden auf dem öffentlichen Server unterstützt).

Daten im Retestsystem

FMZ Quantitative Trading Platform Retesting gibt es in zwei Arten: Analog-Level-Retesting und Realdisk-Retesting, wobei Analog-Level-Retesting basiert auf der Basis der im Untergrund generierten K-Line-Zyklen.tick, wobei 12 Retrospektivzeitpunkte für jeden unteren K-Linienzyklus erzeugt werden, während die echten Datenträger tatsächlich gesammelt werden.tickDas FMZ-Rücklaufverfahren ermöglicht es, dass die Strategie mehrmals auf einer K-Leitung gehandelt wird, wodurch ein Fall vermieden wird, bei dem nur die Verkaufspreise geschlossen werden können.Links

DEBUG-Methode für die Politik im Requestsystem

JavaScript-Richtlinien werden im Chrome-Browser DevTools deaktiviert

Unterstützte Börsen im Retestsystem

  • Kryptowährung (digitale Währung)

    Name Typ Erläuterung
    Bitfinex Gegenstand der Börse Es gibt eine Reihe von Möglichkeiten, wie Sie sich in der Lage machen, eine begrenzte Anzahl von Transaktionen zu unterstützen.BTC_USD,ETH_USD,LTC_USDEs gibt also eine Reihe von Möglichkeiten, wie man Geld verdient.USDEs ist in Dollar geschätzt.
    Binance Gegenstand der Börse Es gibt eine Reihe von Möglichkeiten, wie Sie sich in der Lage machen, eine begrenzte Anzahl von Transaktionen zu unterstützen.BTC_USDT,ETH_USDT,ETH_BTC,LTC_BTCUnd so weiter.
    OKX Gegenstand der Börse Es gibt eine Reihe von Möglichkeiten, wie Sie sich in der Lage machen, eine begrenzte Anzahl von Transaktionen zu unterstützen.BTC_USDT,ETH_USDT,ETH_BTC,LTC_BTCUnd so weiter.
    Münzen Gegenstand der Börse Es gibt eine Reihe von Möglichkeiten, wie Sie sich in der Lage machen, eine begrenzte Anzahl von Transaktionen zu unterstützen.BTC_USDT,ETH_USDT,ETH_BTC,LTC_BTCUnd so weiter.
    OKX-Futures Gegenstand der Futures-Börse Es gibt eine Reihe von Möglichkeiten, wie Sie sich in der Lage machen, eine begrenzte Anzahl von Transaktionen zu unterstützen.BTC_USD,ETH_USDDas bedeutet, dass die Transaktionen mit den WährungenUSDSiehe auch:exchange.SetContractTypeDer Code für die Unterstützung von Kontrakten besteht aus:this_weeknext_weekquarterswap
    HuobiDM Gegenstand der Futures-Börse HuobiDM steht für Token-Futures (Token-Kontrakte) und unterstützt eine begrenzte Anzahl von Handelsparen, wie zum Beispiel:BTC_USD,ETH_USDDas bedeutet, dass die Transaktionen mit den WährungenUSDSiehe auch:exchange.SetContractTypeDer Code für die Unterstützung von Kontrakten besteht aus:this_weeknext_weekquarterswap
    BitMEX Gegenstand der Futures-Börse Das Transaktionspaar ist:XBT_USDSiehe auch:exchange.SetContractTypeDer Code für die Unterstützung von Kontrakten besteht aus:XBTUSD
    Binance-Futures Gegenstand der Futures-Börse Es gibt eine Reihe von Möglichkeiten, wie Sie sich in der Lage machen, eine begrenzte Anzahl von Transaktionen zu unterstützen.BTC_USDT,ETH_USDTDas bedeutet, dass die Transaktionen mit den WährungenUSDTSiehe auch:exchange.SetContractTypeWir haben eine Funktion.USDTDer Code für die Unterstützung dieses Vertrags lautet:swap
    Deribit-Optionen Objekt der Optionsbörse Das Transaktionspaar ist:BTC_USD,ETH_USDSiehe auch:exchange.SetContractTypeDie Funktion ist, dass die Kontrakt-Konto-Kontrakte.

    Die Futures-Exchange-Objekte des Retest-Systems unterstützen die Umschaltung von Paaren in den Strategiecodes momentan nicht.

Analogische Stufe

Analog-Level-Rückmessungen werden anhand der unteren K-Linien-Daten des Rückmesssystems nach einem bestimmten Algorithmus in einem Rahmen simuliert, der sich aus den Wertstrukturen Höchst-, Mindest-, Eröffnungs- und Schließpreis der unteren K-Line Bar zusammensetzt.tickDaten, die in Echtzeit funktionierentickDie Daten werden bei der Anforderung der Schnittstelle zurückgegeben.Beschreibung des Mechanismus zur Quantifizierung von Analog-Level-Rückmessungen

Echtplatten-Ebene

Die Echtzeit-Rückprüfung ist real.tickDie Stufendaten werden in der Zeitrahmenfolge von Bar angegeben.tickFür die Strategie der Ebene-Daten ist die Verwendung von Echtplatten-Rückmessungen näher an der Realität.tickEs handelt sich um reale, nicht simulierte Datenerzeugung. Unterstützt Tiefendaten, Markttransaktionsdatenspiel, unterstützt eine kundenspezifische Tiefe, unterstützt Skala-Daten. Festplatten-Skala-Skala-Daten unterstützt maximal 50 MB, ohne Begrenzung des Skala-Zeitraums innerhalb der Datengrenze.GetDepthGetTradesFunktion erhält Transaktionsdaten zurück. Anruft sie zu einem bestimmten Zeitpunkt auf der Zeitachse.GetTickerGetTradesGetDepthGetRecords, wird nicht mehrmals die Zeit auf der Rückmessungszeitachse bewegen ((keine Sprung zum nächsten Marktdatenmoment auslösen)). Für einen der oben genannten Funktionen wird durch wiederholten Aufruf die Rückmessungszeit auf der Rückmessungszeitachse bewegt ((zu dem nächsten Marktdatenmoment springen)). Bei der Rückmessung ist es nicht ratsam, eine zu frühe Zeit zu wählen, da es möglicherweise zu frühe Zeiträume ohne Realdisk-Daten gibt.

Festplatten-Rückmessung unterstützt

  • Binance
  • OKX (OKX-Konto)
  • HuobiDM (Token-Futures)

Anpassung der Parameter des Requestsystems

Die Funktion des FMZ Quantified Trading Platform Retesting System Parameter Optimierung wird bei der Retestung entsprechend den Optimierungsoptionen für die einzelnen Parameter angepasst, wie folgt:

  • Mindestwert: Anfangswert der Begrenzungsparameter.
  • Maximalwert: Maximalwert nach einer inkrementellen Änderung der Begrenzungsparameter.
  • Schrittlänge: Die Parameter erhöhen sich.

Es werden Parameterkombinationen erzeugt, die über diese Parameterkombinationen hinweg überprüft werden (d. h. jede Parameterkombination wird einmal überprüft).

Ein Beispiel für die Einstellung von Optimierungsparametern auf der Wiederholungsseite:

img

Parameter-optimierte Modelle werden überprüft:

img

Speichern der Rückmessung

Auf der Seitenseite der Strategie-Editing-Seite kann unter "Analog-Rücksicht" ("Analog-Rücksicht"), unter "Rücksicht-System" ("Rücksicht-System") die Optionen "Rücksicht-Konfiguration" und "Rücksicht-Parameter" ("Rücksicht-Parameter") eingestellt werden. Auf der Seite "Rücksicht-System" werden die Bedingungen "Rücksicht-Zeitspanne", "Rücksicht-Handelsplatz", "Rücksicht-Zeitpunkt", "Rücksicht-Gebühr" ("Rücksicht-Parameter") und "Rücksicht-Parameter" ("Rücksicht-Parameter") eingestellt.

img

MitJavaScriptZum Beispiel klicken Sie auf "Save Retrospective Setup to Source File":

img

JavaScript/Python/C++/麦语言Die Einstellungen für die Speicherung und Wiederholung der Quelldateien unterscheiden sich etwas:

/*backtest
start: 2021-06-26 00:00:00
end: 2021-09-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
'''backtest
start: 2021-06-26 00:00:00
end: 2021-09-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
'''
/*backtest
start: 2021-06-26 00:00:00
end: 2021-09-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

Maisch:

(*backtest
start: 2021-06-26 00:00:00
end: 2021-09-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_OKCoin","currency":"BTC_USD"}]
*)

Benutzerdefinierte Datenquellen

SystemnutzungGETDie Methode fordert eine benutzerdefinierte URL (eine öffentlich zugängliche Adresse) zur Wiederholung einer externen Datenquelle mit folgenden zusätzlichen Anforderungsparametern:

Parameter Bedeutung Erläuterung
Symbol Name der Sorte Beispiel: BTC_USD_OKCoin_EN
Eid Börsen Zum Beispiel: OKCoin_EN
rund Preispräzision Wenn wir 3 haben, dann ist der Preis in der zurückgegebenen Datenmenge multipliziert mit 1000.
Verwandt Mengenpräzision Wenn wir 2 haben, dann ist die Zahl in der zurückgegebenen Datenmenge multipliziert mit 100 und integriert.
Periode Bar-Zyklus (milli Sekunden) Zum Beispiel 60000 für eine Anfrage in Bar-Minuten.
Tiefe Tiefenbilder 1-20
Handel Ob Sie Daten aufteilen müssen wahr/falsch
von Startzeit Unix-Zeitfenster
zu Endzeit Unix-Zeitfenster

Bitte beachten Sie:

round与vround是为了避免网络传输过程中浮点数的精度丢失设计的两个参数,价格数据和成交量、订单量数据都采用整型传输。

Ein Beispiel für die Daten, die zusammengefügt wurden:

http://customserver:80/data?symbol=BTC_USD_OKCoin_EN&eid=OKCoin_EN&round=3&vround=3&period=900000&from=1564315200&to=1567267200

Das zurückgegebene Format muss eines der folgenden zwei Formate sein (systems auto-recognition):

Normaler Bar-Level-Rückmessung

{
    "schema":["time","open","high","low","close","vol"],
    "data":[[1564315200000,9531300,9531300,9497060,9497060,787],[1564316100000,9495160,9495160,9474260,9489460,338]]
}

Tick-Level-Rücksichtsdaten (beinhaltet Tischtiefe-Informationen, Tiefe-Format ist [Preis, Menge], kann mehrere Tiefen haben, asks als Preissteigerung, bids als Preisrückgang)

{
    "schema":["time","asks", "bids","trades","close","vol"],
    "data":[[1564315200000,[[9531300,10]], [[9531300,10]],[[1564315200000,0,9531300,10]],9497060,787]]
}

Erläuterung

Feld Erläuterung
Schema Geben Sie die Eigenschaften für die Linien in der Datamatrix an, unterscheiden Sie sie in Groß und Klein und beschränken Sie sich auf time, open, high, low, close, vol, asks, bids
Daten Eine Array, die nach dem Schema auf eine Datensammlung verweist

Datenformate

Feld Erläuterung
Anträge/Angebote [Preis, Menge,...]
Handel [[Zeit, Richtung ((0: Kauf, 1: Verkauf), Preis, Menge],...]

Die Zahlen für die Kapitalquote: Bei einer Binance-Futures-Rückmeldung werden beispielsweise zusätzliche Kapitalraten-Daten benötigt, die von einer benutzerdefinierten Datenquelle bereitgestellt werden müssen. Die Datenstruktur für die bei einer Binance-Futures-Rückmeldung angeforderten Kapitalraten ist z. B. wie folgt aufgeführt.

{
	"detail": {},
	"symbol": "futures_binance.eth_usdt.funding",
	"schema": ["time", "open", "high", "low", "close", "vol"],
	"data": [
		[1582876800000, 25289, 25289, 25289, 25289, 0],
		[1582905600000, 30522, 30522, 30522, 30522, 0],
		[1582934400000, 40998, 40998, 40998, 40998, 0],
        ...
		[1626652800000, 198, 198, 198, 198, 0],
		[1626681600000, 691, 691, 691, 691, 0],                  // 相邻的周期间隔8小时
		[1626710400000, 310, 310, 310, 310, 0],                  // 币安资金费率8小时更新一次,资金费率数据为什么为310?
		[1626739200000, 310, 310, 310, 310, 0],                  // 因为和K线数据一样,为了避免网络传输过程中浮点数的精度丢,数据采用整型,所以需要根据round参数处理数据,处理后用于返回给回测系统的数据就为310
		[1626768000000, -41610, -41610, -41610, -41610, 0],      // 资金费率数据也可能为负值
		[1626796800000, -5125, -5125, -5125, -5125, 0],
        ...		
		[1627977600000, 10000, 10000, 10000, 10000, 0]
	]
}

Beispiele für Datenanfragen, die von Requestsystems ausgegeben werden, sind:

http://customserver:80/data?symbol=futures_binance.eth_usdt.funding&eid=Futures_Binance&round=8&vround=5&depth=20&trades=1&custom=0&period=3600000&from=1360771200&to=1628006400

Ein Beispiel für eine benutzerdefinierte Datenquelle:

Datenquelle und Adresse angegeben:http://xxx.xx.x.xx:9090/dataDie Daten-Server werden mit Golang geschrieben:

package main 
import (
    "fmt"
    "net/http"
    "encoding/json"
)

func Handle (w http.ResponseWriter, r *http.Request) {
    // e.g. set on backtest DataSourse: http://xxx.xx.x.xx:9090/data
    // r.URL: /data?depth=20&detail=true&eid=Binance&from=1566820800&period=900000&round=3&symbol=BTC_USDT_Binance&to=1569686400&trades=1&vround=5
    // response
    defer func() {
        // response data
        /* e.g. data
        {
            "schema":["time","open","high","low","close","vol"],
            "data":[
                [1564315200000,9531300,9531300,9497060,9497060,787],
                [1564316100000,9495160,9495160,9474260,9489460,338]
            ]
        }
        */
        ret := map[string]interface{}{
            "schema" : []string{"time","open","high","low","close","vol"},
            "data" : []interface{}{
                []int64{1564315200000,9531300,9531300,9497060,9497060,787},
                []int64{1564316100000,9495160,9495160,9474260,9489460,338},
            },
        }
        b, _ := json.Marshal(ret)
        w.Write(b)
    }()
}

func main () {
    fmt.Println("listen http://localhost:9090")
    http.HandleFunc("/data", Handle)
    http.ListenAndServe(":9090", nil)
}

Die Teststrategie:JavaScriptEin Beispiel:

/*backtest
start: 2019-07-28 00:00:00
end: 2019-07-29 00:00:00
period: 1m
exchanges: [{"eid":"OKX","currency":"BTC_USDT","feeder":"http://120.24.2.20:9090/data"}]
*/

function main() {
    var ticker = exchange.GetTicker()
    var records = exchange.GetRecords()
    Log(ticker)
    Log(records)
}

Die Daten, die im Retesting-System angepasst wurden, werden in folgenden Graphen dargestellt:

Die Strategie ist, Informationen zu drucken:

Einheimische Retest-Engine

Die FMZ-Quantitätshandelsplattform ist offenJavaScriptSprache undPythonNative Wiederholungs-Engine für Sprache, unterstützt Wiederholungs-EinstellungenUnteren K-Linien-Zyklus

Schaltfläche zur Wiederholung der Seite

  • Schaltfläche für die Schaltfläche der Strategie-Bearbeitungsseite und die Schaltfläche für die Strategie-Rücksicht.

    NutzungCtrl + ,Schaltfläche, Umschalt- und Richtlinienbearbeitungsseite, gedrücktCtrlNach der Taste drücken,Ich bin nicht derjenige, der das tut.

  • Schaltfläche für die Speicherung der Strategie

    NutzungCtrl + sSchaltfläche, Speicher-Richtlinie.

  • Schaltfläche, um die Wiederholung zu starten

    NutzungCtrl + bSchaltfläche, Start der Wiederholung.

Codebeschreibung

Eingabefunktionen

Funktionsnamen Erläuterung
main() Für die Eingabefunktion.
onexit() Für die normalen Ausstiegs-Sweeptail-Funktionen, die eine maximale Ausführungszeit von 5 Minuten haben, kann nicht erklärt werden, wenn die Zeit überschritten wird, wird ein Fehler zurückgegebenUnterbrechenIch habe einen Fehler gemacht.
onerror() Eine Funktion, die die Ausführung für einen Ausfall auslöst, hat eine maximale Ausführungszeit von 5 Minuten und kann nicht erklärt werden.PythonDie Sprache.C++Die in der Sprache geschriebene Politik unterstützt diese Funktion nicht.
init() Für die Initiierung von Funktionen wird ein Politikprogramm zu Beginn der Ausführung automatisch zuerst aufgerufen, kann aber nicht erklärt werden.
  • Erläuterung:
    • Nicht unterstütztonerror()Die Funktion.
    • Das ist ein sehr schwieriger Fall.onerror()Die Funktion wird nicht mehr ausgelöst.onexit()Die Funktion.

Ein Exit (((

onexit()Das Programm wird von den Benutzern durchgeführt, um die Schleusen zu bearbeiten, die bis zu 5 Minuten dauern.

function main(){
    Log("开始运行, 5秒后停止,并执行扫尾函数!")
    Sleep(1000 * 5)
}

// 扫尾函数实现
function onexit(){
    var beginTime = new Date().getTime()
    while(true){
        var nowTime = new Date().getTime()
        Log("程序停止倒计时..扫尾开始,已经过去:", (nowTime - beginTime) / 1000, "秒!")
        Sleep(1000)
    }
}
import time 
def main():
    Log("开始运行, 5秒后停止,并执行扫尾函数!")
    Sleep(1000 * 5)

def onexit():
    beginTime = time.time() * 1000
    while True:
        ts = time.time() * 1000
        Log("程序停止倒计时..扫尾开始,已经过去:", (ts - beginTime) / 1000, "秒!")
        Sleep(1000)
void main() {
    Log("开始运行, 5秒后停止,并执行扫尾函数!");
    Sleep(1000 * 5);
}

void onexit() {
    auto beginTime = Unix() * 1000;
    while(true) {
        auto ts = Unix() * 1000;
        Log("程序停止倒计时..扫尾开始,已经过去:", (ts - beginTime) / 1000, "秒!");
        Sleep(1000);
    }
}

Initial

init(), Benutzer implementieren die Initiierungsfunktioninit()Das Programm wird automatisch ausgeführt, wenn es ausgeführt wird.init()Funktionen, die die in der Strategie entworfenen Initialisierungsaufgaben erledigen.

function main(){
    Log("程序第一行代码执行!", "#FF0000")
    Log("退出!")
}

// 初始化函数
function init(){     
    Log("初始化!")
}
def main():
    Log("程序第一行代码执行!", "#FF0000")
    Log("退出!")

def init():
    Log("初始化!")
void main() {
    Log("程序第一行代码执行!", "#FF0000");
    Log("退出!");
}

void init() {
    Log("初始化!");
}

Ein Fehler.

onerror()Das ist eine Art "Straum", wenn es etwas Abweichendes gibt.onerror()Funktion ausgeführt, die nicht unterstützt wirdPythonC++Die Strategie der Sprache.

function main() {
    var arr = []
    Log(arr[6].Close)
}

function onerror() {
    Log("错误")
}
# python不支持
// C++不支持

Das klassische Strategie-Framework

In derJavaScriptPythonC++In einer Sprache, in der Strategien geschrieben werden, müssen sie in einem Strategie-Hauptzyklus aufgerufen werden.Sleep()Die Funktion wird verwendet, um die Rücklaufgeschwindigkeit zu steuern. Die Funktion wird verwendet, um die Zeitintervalle für die Strategieanfragen auf dem Festplattenplatz zu steuern, um die Anfragefrequenz für den Zugriff auf die API-Schnittstelle der Börse zu steuern.

  • Ein Beispiel für ein grundlegendes Rahmenwerk für eine digitale Währungsstrategie:

    function onTick(){
        //在这里写策略逻辑,将会不断调用,例如打印行情信息
        Log(exchange.GetTicker())
    }
    
    function main(){
        while(true){
            onTick()
            // Sleep函数主要用于数字货币策略的轮询频率控制,防止访问交易所API接口过于频繁
            Sleep(60000)
        }
    }
    
    def onTick():
        Log(exchange.GetTicker())
    
    def main():
        while True:
            onTick()
            Sleep(60000)
    
    void onTick() {
        Log(exchange.GetTicker());
    }
    
    void main() {
        while(true) {
            onTick();
            Sleep(60000);
        }
    }
    

    Das einfachste Beispiel: Wenn ich alle 1 Sekunde auf einer Börse einen Preis von 100 und eine Anzahl von Zahlungen von 1 anzeigen möchte, kann man das so schreiben:

    function onTick(){
        // 这个仅仅是例子,回测或者实盘会很快把资金全部用于下单,实盘请勿使用
        exchange.Buy(100, 1)
    }
    
    function main(){
        while(true){
            onTick()
            // 暂停多久可自定义,单位为毫秒,1秒等于1000毫秒
            Sleep(1000)
        }
    }
    
    def onTick():
        exchange.Buy(100, 1)
    
    def main():
        while True:
            onTick()
            Sleep(1000)
    
    void onTick() {
        exchange.Buy(100, 1);
    }
    
    void main() {
        while(true) {
            onTick();
            Sleep(1000);
        }
    }
    

Die Template-Klasse-Datei

Die Template-Klasse-Dateiist ein Code-Modul, der in der FMZ-Quantitätshandelsplattform wiederverwendbar ist und eine Kategorie von Strategiekoden ist.Die Template-Klasse-DateiEine Vorlage-Klasse-Datei wird in der Konto-Politik-Datei erstellt, in der sich der Erfinder derzeit bei der Quantitative-Trading-Plattform angemeldet hat.

JavaScriptDas Modell-Klassikum für Sprachen:

img

PythonDas Modell-Klassikum für Sprachen:

img

C++Das Modell-Klassikum für Sprachen:

img

  • Exportfunktionen für die Template-Klassenlibrary Die Export-Funktion ist eine Interface-Funktion für die Template-Klasse und kann anhand der Politik der Template-Klasse aufgerufen werden. Die Export-Funktion wird in der Template-Klasse erklärt und die Implementierungsbeispiele sind wie folgt:

    /*
    -- 策略引用该模板以后直接用 $.Test() 调用此方法
    -- main 函数在策略中不会触发, 只做为模板调试的入口
    */
    $.Test = function() {
        Log('Test')
    }
    
    function main() {
        $.Test()
    }
    
    def Test():
        Log("template call")
    
    # 导出Test函数, 主策略可以通过ext.Test()调用
    ext.Test = Test 
    
    // 策略引用该模板以后直接用 ext::Test() 调用此方法
    void Test() {
        Log("template call");
    }
    
  • Parameter für die Template-Klassenlibrary Die Parameter der Template Bibliothek werden im Code der Template Bibliothek in Form von globalen Variablen verwendet.

    Die Parameter für die Template-Klassenlibrary:

    img

    Code für die Template-Klasse:

    $.SetParam1 = function(p1) {
        param1 = p1
    }
    
    $.GetParam1 = function() {
        Log("param1:", param1)
        return param1
    }
    
    def SetParam1(p1):
        global param1
        param1 = p1
    
    def GetParam1():
        Log("param1:", param1)
        return param1
    
    ext.SetParam1 = SetParam1
    ext.GetParam1 = GetParam1
    
    void SetParam1(float p1) {
        param1 = p1;
    }
    
    float GetParam1() {
        Log("param1:", param1);
        return param1;
    }
    

    AusführungenDie Template-Klasse-DateiDas ist ein Beispiel für den Strategic Code:

    function main () {
        Log("调用$.GetParam1:", $.GetParam1())
        Log("调用$.SetParam1:", "#FF0000")
        $.SetParam1(20)
        Log("调用$.GetParam1:", $.GetParam1())
    }
    
    def main():
        Log("调用ext.GetParam1:", ext.GetParam1())
        Log("调用ext.SetParam1:", "#FF0000")
        ext.SetParam1(20)
        Log("调用ext.GetParam1:", ext.GetParam1())
    
    void main() {
        Log("调用ext::GetParam1:", ext::GetParam1());
        Log("调用ext::SetParam1:", "#FF0000");
        ext::SetParam1(20);
        Log("调用ext::GetParam1:", ext::GetParam1());
    }
    

    img

  • Verweisen auf die Template-Klasse

    Sie können die Politik speichern, nachdem Sie die Referenz in der Schablone "Policies Edit Page" ausgewählt haben.

    img

Eingebettete Strukturen

Globale Variablen

Austausch

exchangeAls ein Austauschobjekt betrachtet, ist es der erste Austauschobjekt, der standardmäßig in den Strategieparametern hinzugefügt wird. Alle Interaktionen mit dem Austausch werden über die Funktionen in diesem Objekt durchgeführt.

  • Überprüfen Sie das Hinzufügen von Exchange-Objekten

  • Anzeige von Objekten auf der Festplatte

Das hinzugefügte Austauschobjekt entspricht dem Code.exchangeObjekt:

function main() {
    Log("实盘页面或者回测页面上,添加的第一个交易所对象名字:", exchange.GetName(), ",标签:", exchange.GetLabel())
}
def main():
    Log("实盘页面或者回测页面上,添加的第一个交易所对象名字:", exchange.GetName(), ",标签:", exchange.GetLabel())
void main() {
    Log("实盘页面或者回测页面上,添加的第一个交易所对象名字:", exchange.GetName(), ",标签:", exchange.GetLabel());
}
Umsätze

Das ist die gleiche Art von Speicherung.exchangeDie Arrays aller Exchange-Objekte können mehrere Exchange-Objekte enthalten.exchanges[0]Das heißtexchange

Das hinzugefügte Austauschobjekt entspricht dem in der Strategiekode enthaltenenexchanges[0]exchanges[1]exchanges[2]Ich habe mich in meinem eigenen Land niedergelassen.

function main() {
    for(var i = 0; i < exchanges.length; i++) {
        Log("添加的交易所对象索引(第一个为0以此类推):", i, "名称:", exchanges[i].GetName(), "标签:", exchanges[i].GetLabel())
    }
}
def main():
    for i in range(len(exchanges)):
        Log("添加的交易所对象索引(第一个为0以此类推):", i, "名称:", exchanges[i].GetName(), "标签:", exchanges[i].GetLabel())
void main() {
    for(int i = 0; i < exchanges.size(); i++) {
        Log("添加的交易所对象索引(第一个为0以此类推):", i, "名称:", exchanges[i].GetName(), "标签:", exchanges[i].GetLabel());
    }
}
Bestellstatus

OrderDie StrukturStatusEigenschaften.

Name der Konstante Definition Wert
Ausstehen des Auftrags Unvollendet 0
- Das ist nicht der Fall. Das ist erledigt. 1
- Das ist nicht der Fall. Es wurde abgesagt. 2
- Das ist nicht der Fall. Status unbekannt (anderer Status) 3

- Das ist nicht der Fall.Status kann aufgerufen werdenexchange.GetRawJSON()Erhalten Sie Informationen über den ursprünglichen Bestellstatus, wenden Sie sich an die Dokumentation der Börse und sehen Sie sich die Beschreibung an. Die Variablennamen in Tabellen können direkt in der Strategiecode verwendet werden undOrderDie StrukturStatusEigenschaftsvergleiche, Beurteilung der Gleichheit, um den Bestellstatus zu bestimmen.Name der KonstanteEntsprechendeWertDie folgenden anderen konstanten Namen sind nicht mehr beschrieben.

Kauf- und Verkaufsaufträge

OrderDie StrukturTypeEigenschaften.

Name der Konstante Definition Wert
Der Wert des Zertifikats wird in der Liste aufgeführt. Bezahlung 0
Der Wert des Zertifikats wird in der Liste aufgeführt. Verkauf 1
Positionsart

PositionDie StrukturTypeEigenschaften.

Name der Konstante Definition Erläuterung Anwendbar Wert
PD_LONG Zeigt mehrere Positionen an Futures für digitale Währungenexchange.SetDirection("closebuy")Setzen Sie die Position Richtung, die Position dieser Art zu platzieren Futures für digitale Währungen 0
PD_SHORT Zeigt die Position der Leerzeichen an Futures für digitale Währungenexchange.SetDirection("closesell")Setzen Sie die Position Richtung, die Position dieser Art zu platzieren Futures für digitale Währungen 1
Futures auf dem Weg zum Ausgleich

OrderDie StrukturOffsetEigenschaften.

Name der Konstante Definition Wert
Die Ausgabe der Ausgabe wird in der Liste aufgeführt. Eröffnung von Bestellungen 0
Die Ausgabe der Ausgabe wird von der Ausgabe der Ausgabe abgelehnt. Bestellungen auf dem Lager 1
Strategieparameter

In der Strategiecode werden die Strategieparameter, die auf der Strategieoberfläche gesetzt werden, in Form von globalen Variablen dargestellt.JavaScriptIn der Sprache kann man direkt auf die Parameterwerte zugreifen oder sie ändern, die in der Policy-Schnittstelle festgelegt sind.PythonBenutzt, um globale Variablen in einer Funktion der Strategie zu ändernglobalSchlüsselwörter.

Parameterart:

img

Variablen Beschreibung Anmerkungen Typ Standardwert Erläuterung
Zahl Zahlenart Anmerkungen Zahl (number) 1 Die C++-Strategie ist floppend.
String String Anmerkungen String (String) Hallo FMZ. Die Default-Werte werden ohne Anführungszeichen eingegeben und als String behandelt.
Verknüpfung Ziehen Anmerkungen Zieh-unter-Rahmen ((selected)) 1|2|3 Die combox-Variable selbst ist ein Zahlenwert, der den Zielführer für die Auswahl des Abzugsteuerungsteils darstellt, wobei der erste Abzugsteuerungsteil 1 enthält, dessen Indexwert 0 ist, und so weiter.
Boole Auswahlmöglichkeiten Anmerkungen Die Bulle (true/false) - Das stimmt. Wenn es ausgewählt wird, ist die Variable bool wahr, wenn es nicht ausgewählt wird, ist die Variable bool falsch.
secretString Verschlüsselungsstränge Anmerkungen Verschlüsselungsstring Passwort Die Verwendung ist die gleiche wie bei einem String. Die verschlüsselte String wird verschlüsselt gesendet und wird nicht mit offenem Text übertragen.
  • Die Interface-Parameter, die unterhalb des Code-Editing-Bereichs für die Politik-Editing-Seite eingestellt werden.
  • Die Interface-Parameter existieren in der Strategie-Code in der Form von globalen Variablen, d.h. die Interface-Parameter können im Code geändert werden.
  • Interface-Parameter Variablennamen in der Strategie-Code: also in der Abbildung obennumberstringcomboxboolsecretString
  • Beschreibung der Option: Benutzeroberflächenparameter Namen in der Schaltfläche.
  • Anmerkung: Eine detaillierte Beschreibung der Interface-Parameter, die dann angezeigt wird, wenn die Maus auf den Interface-Parametern bleibt.
  • Typ-Optionen: Der Typ des Interfaceparameters.
  • Default-Value-Option: Der Default-Value für die Parameter der Benutzeroberfläche.

Die Parameter hängen von den folgenden Einstellungen ab: Sie können einen Parameter so einstellen, dass ein anderer Parameter auf der Grundlage dieser Parameterwahl angezeigt und verborgen wird.numberA, ist ein Zahlentyp.numberADas ist ein Parameter:isShowADie falsche Entscheidung von (Bull-Typen)numberASie müssen sich anpassen, ob Sie sich an die Seite wenden oder nicht.numberADie Variablen werden in den Interface-Parametern so eingestellt:numberA@isShowA

img

So wird nicht geklärt.isShowADie ParameternumberADie Parameter sind versteckt. Für die Parameter des Types des Dropdown-Controllers hängen die Parameter teilweise davon ab, ob sie einer Option des Dropdowns entsprechen.IndexwerteIch bin nicht derjenige, der das sagt.isShowAAls Beispiel für Parameter kann man bei Parameter-Variablen schreiben:numberA@combox==2numberADie Parameter basieren aufcomboxOb die Parameter für die dritte Option angezeigt oder versteckt werden (Index 0 für die erste Option, Index 1 für die zweite Option, Index 2 für die dritte Option).

Strategie-Interface-Parameter, Interaktionssteuerelemente, Parametergruppen in Templates: Wir fügen nur die Beschreibung der Parameter an, mit denen wir anfangen zu gruppieren.(?第一组)Das ist ein Beispiel, wie es in der folgenden Abbildung zu sehen ist.

img

Die Strategie wird mit folgenden Parametern zusammengefasst:

img

Der Parameter wird als Default gespeichert: Die Politikparameter sind wie gezeigt, wenn Sie den Standardwert der Politikparameter beim Rückruf speichern möchten, können Sie darauf klicken, nachdem Sie die Politikparameter geändert haben.保存回测设置Die Schaltfläche.

img

img

Die eingestellten Politikparameter können in Codeform in der Politik gespeichert werden:

/*backtest
start: 2020-02-29 00:00:00
end: 2020-03-29 00:00:00
period: 1d
args: [["number",2],["string","Hello FMZ.COM"],["combox",2],["bool",false],["numberA@isShowA",666],["isShowA",true]]
*/
'''backtest
start: 2020-02-29 00:00:00
end: 2020-03-29 00:00:00
period: 1d
args: [["number",2],["string","Hello FMZ.COM"],["combox",2],["bool",false],["numberA@isShowA",666],["isShowA",true]]
'''
/*backtest
start: 2020-02-29 00:00:00
end: 2020-03-29 00:00:00
period: 1d
args: [["number",2],["string","Hello FMZ.COM"],["combox",2],["bool",false],["numberA@isShowA",666],["isShowA",true]]
*/

Datenstrukturen

Einige Funktionen werden mit der ursprünglichen Funktion versehen, die bei einem Aufruf angefordert wird.JSONDie Daten, die ursprünglichJSONDie Daten werden auf die zurückgegebenen Objekte gespeichert.InfoIn der Attribute.......................................InfoEigenschaften, hier sind die wichtigsten Eigenschaften der einzelnen Datenstrukturen beschrieben.

Handel

Erhalten Sie alle Transaktionsgeschichten (ohne Ihre eigene) vonexchange.GetTrades()Die Funktion gibt zurück.

{
    Id      : 9585306,          // 交易记录ID,如果交易所接口没有提供订单ID则使用时间戳填充
    Time    : 1567736576000,    // 时间(Unix timestamp 毫秒)
    Price   : 1000,             // 价格
    Amount  : 1,                // 数量
    Type    : 0                 // 订单类型,参考常量里的订单类型,0即为ORDER_TYPE_BUY,ORDER_TYPE_BUY的值为0
}
Tickern

Der Markt wird vonexchange.GetTicker()Die Funktion gibt zurück.

{
    Info    : {...},             // 请求交易所接口后,交易所接口应答的原始数据,回测时无此属性
    High    : 1000,              // 最高价,如果交易所接口没有提供24小时最高价则使用卖一价格填充
    Low     : 500,               // 最低价,如果交易所接口没有提供24小时最低价则使用买一价格填充
    Sell    : 900,               // 卖一价
    Buy     : 899,               // 买一价
    Last    : 900,               // 最后成交价
    Volume  : 10000000,          // 最近成交量,原则上现货成交量单位为交易币种(baseCurrency),期货成交量单位为合约张数。如果交易所接口没有提供此类数据则使用交易所接口现有的数据填充,例如可能为计价币(quoteCurrency)为单位的成交量
    Time    : 1567736576000      // 毫秒级别时间戳
}
Aufzeichnung

StandardOHLCStruktur, die für das Zeichnen von K-Linien und für die Berechnung von Indikatoren verwendet wird.exchange.GetRecords()Die Funktion kehrt die Array zurück, die diese Struktur hat.RecordDie Struktur stellt eine K-Linien-Säule dar, also eine K-Line.BARRecordEiner davonTimeFür diese K-Säulen-Zyklus-Anfangszeit.

{
    Time    : 1567736576000,     // 一个时间戳,精确到毫秒,与Javascript的new Date().getTime()得到的结果格式一样
    Open    : 1000,              // 开盘价
    High    : 1500,              // 最高价
    Low     : 900,               // 最低价
    Close   : 1200,              // 收盘价
    Volume  : 1000000            // 交易量,原则上现货成交量单位为交易币(baseCurrency),期货成交量单位为合约张数,如果交易所接口没有提供此类数据则使用交易所接口现有的数据填充,例如可能为计价币(quoteCurrency)为单位的成交量
}
Aufordnung

Die Bestellstruktur kann vonexchange.GetOrder()exchange.GetOrders()Die Funktion gibt zurück.exchange.GetOrders()Die zurückgegebene Array ist die Array der Struktur oder die leere Array, wenn keineBestellungen, die noch nicht abgeschlossen sindZurück[], das ist eine leere Array) ◄

{
    Info        : {...},         // 请求交易所接口后,交易所接口应答的原始数据,回测时无此属性
    Id          : 123456,        // 交易单唯一标识
    Price       : 1000,          // 下单价格,注意市价单的该属性可能为0或者-1
    Amount      : 10,            // 下单数量,注意市价单的该属性可能为金额并非币数
    DealAmount  : 10,            // 成交数量,如果交易所接口不提供该数据则可能使用0填充
    AvgPrice    : 1000,          // 成交均价,注意有些交易所不提供该数据。不提供、也无法计算得出的情况该属性设置为0
    Status      : 1,             // 订单状态,参考常量里的订单状态,例如:ORDER_STATE_CLOSED
    Type        : 0,             // 订单类型,参考常量里的订单类型,例如:ORDER_TYPE_BUY
    Offset      : 0              // 数字货币期货的订单数据中订单的开平仓方向。ORDER_OFFSET_OPEN为开仓方向,ORDER_OFFSET_CLOSE为平仓方向
    ContractType : ""            // 现货订单中该属性为""即空字符串,期货订单该属性为具体的合约代码
}
Marktbestellung

Der Markt ist tief.exchange.GetDepth()Die Funktion kehrt in die Datenstruktur zurückAngeboteEr fragt.Datenstruktur der Elemente in der Array.

{
    Price   : 1000,              // 价格
    Amount  : 1                  // 数量
}
Tiefe

Die Markttiefe wird vonexchange.GetDepth()Die Funktion gibt zurück.

{
    Asks    : [...],             // 卖单数组,MarketOrder数组,按价格从低向高排序
    Bids    : [...],             // 买单数组,MarketOrder数组,按价格从高向低排序
    Time    : 1567736576000      // 毫秒级别时间戳
}
Abrechnung

Kontoinformationen vonexchange.GetAccount()Die Funktion gibt zurück. Die Daten in der zurückgegebenen Struktur beziehen sich auf die aktuell eingestellten Paare und den eingestellten Vertragskode.

{
    Info            : {...},     // 请求交易所接口后,交易所接口应答的原始数据,回测时无此属性
    Balance         : 1000,      // 可用计价币数量,现货中如果交易对是BTC_USDT,Balance指的是当前可用USDT数量。U本位期货合约中Balance指的是可用保证金USDT的数量
    FrozenBalance   : 0,         // Balance表示的资产用于挂单的冻结数量
    Stocks          : 1,         // 可用交易币数量,现货中如果交易对是BTC_USDT,Stocks指的是当前可用BTC数量。币本位期货合约中Stocks指的是可用保证金的币(baseCurrency)的数量
    FrozenStocks    : 0          // Stocks表示的资产用于挂单的冻结数量
}
Position

Die Informationen über Positionen, die in Futures gehalten werden, werden vonexchange.GetPosition()Die Funktion kommt hierher.PositionDie StrukturArithmetische Gruppen

{
    Info            : {...},     // 请求交易所接口后,交易所接口应答的原始数据,回测时无此属性
    MarginLevel     : 10,        // 持仓杆杠大小,如果交易所接口没有提供该数据则通过计算填充,可能会有误差
    Amount          : 100,       // 持仓量,持仓合约张数,通常是正整数。注意每个交易所的合约乘数、价值等合约规格可能不一样,下单规则也可能不一样,例如币安合约可以0.1张下单
    FrozenAmount    : 0,         // 仓位冻结量,用于平仓挂单时的临时冻结仓位数量
    Price           : 10000,     // 持仓均价,原则上该属性为仓位总体的平均价格(不参与结算),如果交易所接口没有提供该数据则用交易所接口现有的持仓均价填充(参与结算)
    Profit          : 0,         // 持仓浮动盈亏,原则上为持仓的未实现盈亏,如果交易所接口没有提供该数据则用交易所接口其它盈亏数据填充,盈亏数值的单位和当前合约保证金的单位相同
    Type            : 0,         // PD_LONG为多头仓位,PD_SHORT为空头仓位
    ContractType    : "quarter", // 合约代码,具体可以参看SetContractType函数描述中传入的参数
    Margin          : 1          // 仓位占用的保证金,如果交易所接口没有提供该数据则使用0填充
}

Es ist wichtig zu beachten, dass die digitalen Währungs-Futures nicht nur für die digitalen Währungen verwendet werden, sondern auch für die digitalen Währungen.exchange.GetPosition()Die Funktion wird zurückgegebenPositionStruktur-Array.FrozenAmountProfitMarginEigenschaften, weil die Daten, die von den Börsen bereitgestellt werden, nicht einheitlich sind, werden von verschiedenen Börsenobjekten aufgerufenexchange.GetPosition()Die Definition der Daten, die bei der Schnittstelle zurückgegeben werden, kann unterschiedlich sein. Zum Beispiel haben einige Börsen keine Position in den Lagerdaten eingefroren.FrozenAmountFür 0; kann verwendet werden, wenn bestimmte Daten berechnet werden müssenInfoDie Analyse der ursprünglichen Daten in der Eigenschaft.

Markt

Marktinformationen über Handelssorten werden vonexchange.GetMarkets()Die Funktion gibt das zurück.MarketDie StrukturWörterbuch

{
    Symbol          : "btcusdt",       // 该交易品种在交易所的原始名称
    BaseAsset       : "BTC",           // baseCurrency 交易币,统一大写
    QuoteAsset      : "USDT",          // quoteCurrency 计价币,统一大写
    TickSize        : 0.01,            // 价格最小变动数值
    AmountSize      : 0.01,            // 下单量最小变动数值
    PricePrecision  : 2,               // 价格精度,表示价格精确到2位小数
    AmountPrecision : 3,               // 下单量精度,表示下单量精确到3位小数
    MinQty          : 0.001,           // 最小下单量
    MaxQty          : 1000,            // 最大下单量
    MinNotional     : 5,               // 最小下单金额
    MaxNotional     : 9999999,         // 最大下单金额
    CtVal           : 100,             // 合约价值
    Info            : {...}            // 交易所该品种的原始数据
}

Da die Unterstützung von Marktinformationsdaten bei den verschiedenen Börsen unterschiedlich ist, werden die nicht unterstützten Felder ignoriert. Alle oben genannten Datenfelder stammen aus den Rohdaten der Interface der Börse.InfoDer Inhalt des Feldes.

Globale Funktionen

Ausgabe ((()

Version(), die aktuelle Version des Systems zurückgibt.

Schlaf (Millisekunde)

Sleep(Millisecond), eine Ruhezustandfunktion, die das Programm für eine Weile pausiert.MillisecondAls Zahlenwerttyp. Die Parameter sind Millisekunden, z. B.:Sleep(1000)Ein Sekunde Ruhe. Unterstützt Operationen mit einer Ruhezustandzeit von weniger als 1 Millisekunde, z. B. EinstellungenSleep(0.1)◎ Unterstützt die minimale Parameter:0.000001, Nanosekunden-Schlaf. 1 Nanosekunde entspricht1e-6Ich bin nicht derjenige, der das sagt.

Bitte beachten: In GebrauchPythonBei der Erstellung von Sprachstrategien sollten Bewegungen wie Abstand, Wartezeit und Abfragen verwendet werden.Sleep(Millisecond)Funktionen. Nicht empfohlenPythonDietimeDie Küchetime.sleep(second)Funktionen. Weil sie in Strategien verwendet werdentime.sleep(second)Eine Funktion, die bei der Wiederholung die Politiker tatsächlich auf eine bestimmte Anzahl von Sekunden warten lässt.secondDie Parameter werden für die Anzahl der Sekunden festgelegt, in denen sie unterbrochen werden), was zu einer sehr langsamen Wiederholung der Strategie führt.

Ist virtuell?

IsVirtual(), um zu beurteilen, ob die aktuelle Strategie für die analoge Rückprüfung ausgeführt wird. Analog-Rückruf-Zustand zurücktrueDie Echtplatte kehrt zurück.false

Nachrichten ((...)

Mail(smtpServer, smtpUsername, smtpPassword, mailTo, title, body), Senden einer E-Mail-Funktion << Parameterwert: Alle Parameter sind String-Typen << Rückgabewert: Bull-Typ, Senden erfolgreich zurückgegebentruesmtpServerUm die E-Mails zu versendensmtpDas ist nicht wahr.smtpUsernameIch habe die E-Mail-Accounts nicht benutzt.smtpPasswordDas SMTP-Code für die E-Mail-Box (nicht das Login-Code für die E-Mail-Box)mailToIch habe die E-Mail-Adresse von meinem Freund und ich habe die E-Mail-Adresse von meinem Freund und ich habe die E-Mail-Adresse von meinem Freund.titleDie Überschrift der E-Mails, die gesendet werden, wird von der Website des E-Mail-Nachrichtendienstes verbreitet.bodyDer Inhalt der E-Mails, zum Beispiel:

function main(){
    Mail("smtp.163.com", "asdf@163.com", "password", "111@163.com", "title", "body")
}
def main():
    Mail("smtp.163.com", "asdf@163.com", "password", "111@163.com", "title", "body")

Mehr

- Ich weiß nicht.Es gibt ein Problem, ob die _C_Funktion immer wiederholt wird oder nur einmal.

Ich habe dich nicht gesehen._C ((function, args...) ist das Default 3s? Kann man das Default ändern und direkt _CDelay ((1000) vor _C ((function, args...) setzen?

LunchzeitCluster: Wenn Sie 1000 Roboter gleichzeitig und ohne Stress erstellen, können Sie mehrere Administratoren erstellen, um Aufgaben zu verteilen. Gibt es Codebeispiele, wie man Clusters erstellt?

Wir sind hier.Log ((talib.help (('MACD')); kann nur unter js verwendet werden, Python hat keine talib.help-Attribute...

Czz140Was ist der Unterschied zwischen der _C ((function, args...) und der Sleep-Funktion, die ich für eine Wiederholung halte?

3263243ySetErrorFilter: Wie entfernt man einen Fehlerfilter, ohne Fehlermeldungen zu filtern?

QQ47898077Wenn Sie eine Drittanbieter-Bibliothek nutzen möchten, gibt es eine Möglichkeit?

QQ47898077Was sollte die Stammklasse ausfüllen, wenn man eine neue Klasse erben möchte, die von einem Börsenobjekt definiert wird?

EtherGibt es ein lokales Debugging-Tool?

ZürichWas ist mit exange.IO?

ZürichWarum ist die Funktion sell in Grau? Ist die Funktion nicht mehr verfügbar?

ZürichWarum ist die Funktion sell in Grau? Ist die Funktion nicht mehr verfügbar?

ZürichIch habe keine Sprache, haha, aber ich möchte fragen, ob es die Unterstützung von es6 hat.

ZürichIch habe keine Sprache, haha, aber ich möchte fragen, ob es die Unterstützung von es6 hat.

Don.Wie schreibt man die Mittellinie von Volumen?

SchildkröteWas gibt es zurück, wenn es nicht klappt, den Marktpreis zu kaufen?

Der Mann von NingDie neue Schrift sieht gut aus.

FlügelDas Testnetz von Bitmex (testnet.bitmex.com) verfügt ebenfalls über eine API-Schnittstelle, jedoch können die Börsen derzeit nur die Bitmex-Haupthandelsstation auswählen. Die API-Dokumentation ist unter https://testnet.bitmex.com/app/apiOverview Wie unterstützen Sie uns?

- Ich weiß nicht.Der Preis für die Produkte wird von den US-amerikanischen Behörden veranschlagt. Log (('ok Futures Estimated Delivery Price', ret1); https://dn-filebox.qbox.me/d1ed268c1e75753c5d289447d279aa9d81e41b5f.png Wenn Sie die Funktionsoberfläche anderer Börsen aufrufen und einen Fehler melden, warum?

allenfrostlineWas ist der Unterschied zwischen realTicker und Ticker? In jüngster Zeit wurde die Strategie für die Umschreibung von Profit-Suites neu geschrieben und beide erscheinen gleichzeitig, aber die erste API scheint keine Erwähnung zu haben.

VisionenHallo, als Python-Entwickler, was glaubst du, dass deine API-Dokumentation schreibt?

allenfrostlineGetAccount: [EAPI:Rate limit exceeded] Ich möchte wissen, wie man das löst?

Zjx2314StochRSI wird nicht unterstützt, ob es so schnell wie möglich hinzugefügt werden kann

YhfggWenn die Python-Politik auf der Festplatte ist, ist das Skript auf dem eigenen Ali Cloud-Server oder im Botvs-Cluster?

YhfggWelche Version von Python benutzt man?

Schon gutDie Definition von GetFee sollte sein, dass sie eine Fee-Struktur zurückgibt.

ZkwapWie kann man Talib mit js aufrufen?

YhfggAnforderung der python-Dokumentation

- Das ist nicht wahr.Kann man einen schwarzen Code-Hintergrund für Strategie-Editoren verwenden? Weiße Augen, schriftliche Nachtcode, leicht kurzsichtig

Don.Wie kann ich die Zusammenfassung in der Bots-Wechat-Push einstellen?

ZahlreicheKann man in der Order-Struktur ein Feld mit einem gleichen Transaktionspreis hinzufügen?

Kleine KleinigkeitGetOrders: Erhält alle unvollendeten Bestellungen, gibt eine Arraystruktur an, die in China Bitcoin-ETH-Trading, nur die letzten 10 zurückgibt. Hier gibt es eine Funktion, die alle unvollendeten Bestellungen in China Bitcoin ETH zurückgibt, was bedeutet, dass andere Plattformen alle mit GetOrders zurückgeben können.

YhfggDie mathematischen Funktionen, die für die statistische Wahrscheinlichkeit verwendet werden müssen, wo kommen sie her?

Sieh nach.Was bedeutet der Wert, den die Funktion $.Cross ((x, y)) zurückgibt?

Meine Mutter nennt michDas LogReset räumt alle Logs aus und kann einen Zahlenparameter verwenden, um die Anzahl der reservierten Einträge festzulegen. Wie löscht man die letzten Tage?

- Ich weiß nicht.Die CORRE-Funktion in talib scheint nicht übernommen worden zu sein, oder ist sie entfallen?

Die armen Berge von LiuyangEs scheint, dass es keine Indikatorreferenz-Funktion gibt!

Kleine und kleineWie kann ich die Zeit der K-Zeile lesen, um sie in die Zeit der Gegenwart zu übersetzen?

Kleine und kleineWie kann man Zahlen aus Arrays entfernen, wenn ich mit records.remove ((records[0]) arbeite?

SchlangeWie kann man ATR für die Tages-K-Linie aufrufen?

SchlangeWie kann man ATR für die Tages-K-Linie aufrufen?

57278863Lernen Sie, wie man traditionelle Futures zum Preis und zum Auftrag bekommt, leider ist die Basis dünn

KirinDas ist ein Beispiel für traditionelle Futures.

Kleine und kleineZero, kannst du ein Beispiel für traditionelle Futures schreiben?

Kleine und kleineWie kann ich den Zustand von mehreren Leerzeichen gleichzeitig ausdrucken, wie kann ich den Zustand von mehreren Leerzeichen ausdrucken, wie kann ich den Zustand von mehreren Leerzeichen und Leerzeichen ausdrucken, und wie kann ich den Zustand von mehreren Leerzeichen und Leerzeichen erhalten?

- Ich weiß nicht.Kann eine Futures-Börse mit GetTicker (() Märkte abrufen, die diese Art von Vertragsmärkten ((in der Woche, in der nächsten Woche...) zurückgeben?

VerkauftWas ist der StochRSI, kann man dazu hinzufügen?

MoxCancelOrder ((orderId) Kannseln Sie eine Bestellung nach der Bestellnummer, geben Sie true oder false zurück, und fragen Sie true= Die Zelle wurde erfolgreich abgesagt, richtig?

Mox_G(K, V) Speicherbare globalen Wörterbücher Diese Methode speichert globalen Variablen, die für die Datenabteilung zwischen verschiedenen Strategien verwendet werden können.

FlustigDie Schlagzeile

NullSie können das Ertragsprotokoll mit LogProfitReset neu einstellen. Die Geschichte auf den vorherigen Ertragsdiagrammen ist nicht mehr vorhanden.

ZyKann man die EA direkt kopieren?

- Ich weiß.Ich finde die Plattform großartig.

Kleine und kleineWas ist das für eine Sprache, gibt es eine Lernquelle?

jxhbtcDatenfehler eine Woche lang, kein Roboter verbunden

Das ist alles.Der Indexbank TA, ist es nur eine Berechnung für den Verkaufspreis?

BtcrobotHallo, Welt.

Kleine TräumeDie _C-Funktion versucht es ohne Gedanken, bis sie erfolgreich ist.

Kleine TräumeDie Talib-Bibliothek für Python muss installiert werden. https://www.botvs.com/bbs-topic/669 kann in diesem Beitrag besucht werden.

Kleine TräumeSleep ist die Anzahl von Millisekunden, in denen ein Programm nichts tut und wartet, bis die Parameter gesetzt sind, und _C ist die Anzahl der Millisekunden, in denen die Funktion, die die Parameter übermittelt hat, erneut aufgerufen wird.

Kleine TräumeJS wird ohne Vererbung direkt in den Objekt eingebunden.

Kleine TräumeEiner der wichtigsten Funktionen ist die Verwendung von Remote Debugs.

Kleine TräumeIch habe eine Frage, die ich mir nicht stellen kann.

Kleine TräumeIn der API-Dokumentation bedeutet Grau, dass die Funktion ohne zu viele Ausführungen erscheint.

Kleine TräumeES6 ist momentan nicht unterstützt ^^

Kleine TräumeIch bin in der Gruppe QQ, beschreibe die Frage und ich werde sie beantworten ^^

Kleine TräumeDie Anzeige wird direkt einen Fehler zurückgeben und keine Bestellung mehr erfolgen (in Wirklichkeit ist es ein Kauf, nicht genug Geld!).

SchildkröteWie wird OKCoin zurückgegeben, wenn die Anzahl der gekauften Münzen die Menge der gehaltenen Münzen übersteigt?

Kleine TräumeIch habe eine Frage an die Börse gestellt: "Welche Börse gibt es, an der ich eine Bestellnummer bei OK Futures zurückgeben kann?"

NullEs wird bereits unterstützt, dass Transaktionspaare beim Laufen gewechselt werden können, und es ist erforderlich, den neuesten Host herunterzuladen. Unterstützt wird Bter/Poloniex Details API-Dokumentation Transaktionsfunktion Tabellen Beschreibung unten ((Freien Sie den Browser-Cache und aktualisieren Sie, wenn Sie es nicht sehen können)

Kleine TräumeQQ, ich helfe dir, deine Fragen zu beantworten.

BerufstätigeIch setze die IPs der Hosting-Plattformen ein, um eine weiße Liste zu erstellen.

Kleine TräumeDas ist ein unterer Link, der nicht aufgebaut wurde. Der Server reagiert nicht.

BerufstätigeDas ist peinlich... Ich kann die Strategien auswechseln, die in der Bitcoin-Ära fehlten, und GetAccount kann nicht auf GetAccount zugreifen: Post http://api.btc38.com/v1/getMyBalance.php: read tcp 192.168.0.227:58596->211.149.148.144:80: wsarecv: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. 2017-05-23 21:08:24 Bitcoin-Zeitfehler GetAccount: timeout 2017-05-23 21:08:02 Bitcoin-Zeitalter Fehler GetAccount: timeout 2017-05-23 21:07:40 Bitcoin-Zeit Fehler GetAccount: timeout 2017-05-23 21:07:20 Wiederaufnahme Ist es ein Problem mit der IP-Whitelist?

Kleine TräumeDer Server der Börse reagierte nicht, das TCP-Protokoll wurde nicht eingerichtet und die drei Handschläge wurden nicht durchgeführt.

BerufstätigeEine Verbindungsaufgabe scheiterte, weil die verbundene Partei nicht richtig nach einer Zeit reagierte, und die Verbindungsaufgabe scheiterte, weil die verbundene Partei nicht richtig reagierte.

Kleine TräumeHallo! Hier geht es um die Funktion exchange.IO ((api, ApiName, Args), die nicht unterstützt wird, siehe https://www.botvs.com/bbs-topic/812

BerufstätigeEin Anschlussversuch scheiterte, weil die angeschlossene Partei nach einer gewissen Zeit nicht richtig reagierte.

BerufstätigeDie Zeit der Bitcoins unterstützt sie nicht?

Kleine TräumeSiehe auch: https://dn-filebox.qbox.me/a709b30c6cc0a3565234b9e0c99b073f7ba8b454.png Das ist nicht schlecht.

Der Mann von NingZum Beispiel möchte ich einen poloniex-Vollwährungstransaktion durchführen, aber es gibt nur ein paar Währungen, die von BOTvs unterstützt werden, und exchange.IO scheint das P-Netz nicht zu unterstützen.

Kleine TräumeDas kann man mit exchange.IO anrufen.

Der Mann von NingWas ist mit einer API, die einen Account verifizieren muss?

Kleine TräumeWenn keine API zur Authentifizierung eines Kontos benötigt wird, kann httpQuery verwendet werden (siehe BotVS-Dokumentation für weitere Informationen), die tatsächliche Transaktions-API benötigt Zugriff.

Kleine TräumeDie API-Parameter können mit HttpQuery übermittelt werden: https://www.okcoin.com/api/v1/future_estimated_price.do?symbol=btc_usd. Für Börsen-APIs ohne Authentifizierung von Konten müssen Sie die HttpQuery-Funktion direkt auf der Plattform verwenden. Der Post: https://www.botvs.com/bbs-topic/850

VisionenIch hoffe, dass die API-Dokumentation perfekt ist.

Kleine TräumeWo ist die realTicker-API zu sehen?

Kleine TräumeSiehe auch: https://dn-filebox.qbox.me/fe1a6f5563ed43a5357f858ecf8a50239619228e.png Die API-Dokumentation ist in der JavaScript-Sprache beschrieben, die Python-Version beschrieben, die oben auf der Chat-Community-Seite angezeigt wird.

NullHallo, danke für die Tipps, die API-Dokumentation wird gerade neu erstellt.

Kleine TräumeHallo ~ zeigt, dass die Zugriffsfrequenz über die Grenzen hinaus ist. https://dn-filebox.qbox.me/a09498920d04cac62624b7438a058d2098d8fb00.png Ist die Sleep-Funktion in der Strategie eingesetzt worden? Diese 1000 ist eine Sekunde Pause pro Runde, die selbst eingestellt werden kann, um die Häufigkeit des Zugriffs auf die API zu steuern, da einige Börsen eine maximale Zugriffsbeschränkung festlegen, die den Zugriff verweigert und die IP-Adresse sperrt.

Kleine TräumeSiehe auch: https://dn-filebox.qbox.me/c29ab7fc279e1b758355f137907cf52dc8257df6.png Ich persönlich habe geschrieben, dass der bereits verglichenen OK-STOCHRSI-Indikator einverstanden ist, dass die Geschwindigkeit etwas langsamer ist und vorübergehend optimiert werden kann.

NullSie können selbst wählen, ob Sie die Überprüfung auf dem von botvs bereitgestellten Server oder auf dem Server Ihres Hosts durchführen möchten.

Kleine TräumeIch habe das Gefühl, dass ich es nicht kann.

Kleine TräumeJetzt können Sie den Hintergrundstil selbst konfigurieren.

Kleine TräumeDie python-Dokumentation wird geschrieben.

Kleine TräumeIch bin der Meinung, dass es eine gute Idee ist.

Hzzgood48 https://www.botvs.com/bbs-topic/276

Kleine TräumeEs scheint ein Beispiel auf Strategie Square zu geben: https://www.botvs.com/strategy/15098

NullDer Zugriff auf die AvergPrice-Attribute von Order, die von den Börsen unterstützt wird, kann, und die nicht unterstützte Börse wird die Attribute immer 0 haben.

YhfggWie zitiert man in einer Drittanbieter-Buchstelle?

NullWenn mathjs das nicht kann, kann es nur nach einer Drittanbieter-Bibliothek suchen, um diese zu kopieren und zu importieren.

Kleine TräumeIch bin nicht sehr freundlich, es gibt Probleme in der Gruppe, ich kann mich - ich bin im Prinzip online - M- machen.

Sieh nach.Ich danke Ihnen.

Kleine TräumeSie können sich die Anmerkungen zu den Codeanalysen der Kryptowährungs-Trading-Klasse anschauen, in denen die Anmerkungen zu der $.Cross-Funktion enthalten sind.

NullEs ist nicht möglich, die neuesten zu löschen, sondern nur die neuesten zu behalten.

KirinUm jede Position mit Position[i] zu erhalten, ist Position eine Array.

Der Mann von NingÜbermittlung von Daten über das System.

KirinMein traditionelles Futures ist immer das GetAccount: not login, "Passwort nicht falsch eingegeben, also nicht eingeloggt".

NullDer Standard ist Woche, um den angegebenen SetContractType zu erhalten.

NullWir haben gerade gesehen, dass das True den Wert der Rückgabe für die Aktion der Stornierung der Bestellung ist, die die Börse zurückgegeben hat, aber die tatsächliche Stornierung ist nicht storniert, abhängig davon, wie sie intern behandelt wird.

Mox3q

NullNein, sondern sie sind abgeschnitten.

ZuanxuanNatürlich nicht, das ist MT4-Exklusivität.

NullJavascript-Informationen gibt es überall im Internet.

VerkauftSind deine Probleme gelöst?

NullDie meisten Daten können entweder direkt als Rekorde oder als reine Preissätze übertragen werden.