Wir haben das Visualisierungsmodul zum Erstellen von Handelsstrategien gelernt - Erste Bekanntschaft, und wir haben ein konzeptionelles Verständnis für visuelles Modul-Bauen und Spleißen, Als nächstes ist es leicht, andere Module zu erlernen. Es ist möglich, einige komplexere Funktionen zusammenzuführen.
In der vorherigen Lern- und Testphase wurden wir mehreren
Diese werden hier nicht wiederholt.
Bei der Erstellung von Strategien für den Einsatz von Roboterhandel können Sie mehr als ein Tauschobjekt hinzufügen, z. B. Hedging-Strategien. Oder Sie müssen die Börse durchqueren (durchqueren bedeutet, die Börse ein für ein zu besuchen), um auf den Markt zu gelangen. Hier kommt das Modul zur Erfassung der Anzahl der Austauschstellen ins Spiel.
Wir können die Anzahl der aktuell konfigurierten Börsen in einer einfachen Struktur drucken:
Tatsächlich ist es, als würde man einen solchen JavaScript-Strategie-Code anrufen:
function main () {
Log(exchanges.length)
}
Werfen wir einen Blick auf die laufenden Ergebnisse dieses kombinierten Moduls:
Wir können sehen, dass wir drei Exchange-Objekte hinzugefügt haben, die drei verschiedene Exchange-Konten darstellen, und das Ausgangsresultat des Backtest-Logs ist 3.
Wenn drei Exchange-Objekte hinzugefügt werden, wird im Dropdown-Box drei Optionen angezeigt. Lernen Sie ein Schleifmodul im Schleiftyp im Voraus.
Lernen Sie im Voraus ein Zustandsbeurteilungsmodul:
Beurteilungsbedingungen können wie folgt geschrieben werden:
Wir benutzen das Loop-Modul, um die hinzugefügten Austauschnamen zu durchqueren. Wir verwenden das Condition Judgement Modul, um zu beurteilen, ob die aktuelle Schleifenzahl dem Namen des zu druckenden Austauschs entspricht.
Ergebnisse des Backtestbetriebs:
Wie JavaScript-Strategie-Code:
function main () {
for (var i = 1 ; i <= exchanges.length ; i++) {
if (i == 1) {
Log(exchanges[0].GetName())
} else if (i == 2) {
Log(exchanges[1].GetName())
} else {
Log(exchanges[2].GetName())
}
}
}
Ein einfaches Beispiel ist, das Handelspaar des derzeit eingestellten ersten Austauschobjekts zu erhalten und es der Textvariable zuzuordnen (die in der Variablenkategorie im Voraus erstellt wurde).
Ergebnisse der Backtests:
Wenn Sie JavaScript-Strategiecode aufrufen:
function main () {
var text = exchange.GetCurrency()
Log(text)
}
Dieses Modul ist sehr wichtig für den Auftragsbetrieb. Die erste Tenon (konkave) Position ist mit einer Preisvariable eingebettet, die zur Angabe des Auftragspreises verwendet wird. Die zweite Spitze (konkave) Position ist mit der Bestellmenge-Variablen eingebettet, die zur Angabe der Bestellmenge verwendet wird.
Zum Beispiel fügen wir ein Beispiel für die Platzierung einer Bestellung zum Hinzufügen eines gleitenden Preises von 10 Yuan auf der Grundlage des aktuellsten Preises der aktuellen Ticketmarktdaten mit der Bestellmenge auf 0,1 Münzen zusammen und drucken die Order-ID.
Ergebnisse des Backtestbetriebs:
Wie der folgende JavaScript-Strategie-Code:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
Log(id)
}
Dieses Modul gibt alle ausstehenden Aufträge im unvollendeten Status des aktuellen Handelspares zurück. Es gibt eine Listenstruktur (Array) zurück, die vom Listenmodul verarbeitet werden kann (Transversaloperation usw.).
Zum Beispiel haben wir das obige Beispiel-Bestellmodul[4] leicht modifiziert und den Preis von 10 Yuan, der beim Auftragen hinzugefügt wurde, auf minus 10 Yuan geändert. Der Auftrag wird nicht sofort geschlossen, sondern in der Tiefe der Transaktion platziert (d.h. kaufen Sie einen, kaufen Sie zwei, kaufen Sie ein bestimmtes Niveau in N), auf diese Weise wird der Auftrag im Zustand der ausstehenden Aufträge sein, die darauf warten, ausgefüllt zu werden.
Dann verwenden wir das Modul
Die Rückprüfung zeigt, dass:
Der Preis der Bestellung war 10 Yuan niedriger als der letzte Preis zu diesem Zeitpunkt, daher wird er nicht sofort ausgeführt. Dann holen Sie sich die Bestellung im Status der ausstehenden Transaktion und drucken Sie sie aus. Schließlich wird eine Ausnahme geworfen, um das Programm zu stoppen.
Das gesamte zusammengestellte Modul ist wie ein Aufruf an die JavaScript-Strategie:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(id)
Log(exchange.GetOrders())
throw "stop"
}
Dieses Modul wird verwendet, um die Bestellung zu stornieren.
Es gibt viele Szenarien, die solche Operationen beim Schreiben von Strategien erfordern:
Stornieren Sie alle laufenden Bestellungen.
Es besteht kein Zweifel, dass das
Zunächst einmal, um die Stornierung aller Bestellungen zu testen, ist es nicht offensichtlich, eine Bestellung zu platzieren. Wir beginnen 2 Bestellungen zu platzieren, ihre Preise und Mengen sind unterschiedlich, um die beiden Bestellungen zu unterscheiden.
Verwenden Sie das
Während des Durchschnitts wird jeder abgerufenen Reihenfolge ein Wert zugewiesen, der der Variablen-Modul-Reihenfolge zugeordnet wird (erstellt im Variablen-Modul-Typ, wie unten gezeigt:)
Verwenden Sie das
Nehmen Sie die Auftrags-ID heraus, geben Sie sie an die Spannungsposition (konkave) des Moduls
Zurückversuch:
Verwenden Sie die JavaScript-Strategiebeschreibung:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(id)
var id2 = exchange.Buy(_C(exchange.GetTicker).Last - 12, 0.2)
Log(id2)
var orders = exchange.GetOrders()
Log(orders)
for (var i in orders) {
var order = orders[i]
Log(exchange.CancelOrder(order.Id))
}
}
Die Spannungsposition des Moduls ist mit einem Variablenmodul für die Order-ID verbunden und die Bestelldetails können zurückgegeben werden.
Beachten Sie die nach dem Ausführen zurückgegebene Reihenfolge:
Verglichen mit den laufenden Ergebnissen im Beispiel [5] kann festgestellt werden, dass die gedruckte Bestellung eine separate Bestellinformation ohne [] -Klammern ist. Denn das Beispiel [5] gibt eine Liste zurück, aber dieses Beispiel gibt eine separate Reihenfolge zurück (erlangt auf der Grundlage des ID-Variablenmoduls auf der von dem Modul übermittelten Tenonposition).
Das obige Beispiel ähnelt der Ausführung der JavaScript-Strategie:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(exchange.GetOrder(id))
}
Wir lernen die oben genannten Module einzeln und setzen die Testbörse als Rohstoff-Futures ein.
Einstellungen für Backtest:
Das folgende Beispiel führt einen Backtest basierend auf den Einstellungen durch.
Die Rohstoff-Futures haben Öffnungs- und Schließzeiten.
Wenn das Objekt der Börse als Futures-Börse konfiguriert ist, wird ein Fehler gemeldet, wenn die Börse keinen Vertrag aufstellt und die Marktinformationen direkt erhält.
Wir haben den Vertrag als MA909 festgelegt, den derzeit wichtigsten Vertrag für Methanol.
Auf diese Weise wird der letzte Preiswert des MA909-Vertrags auf dem aktuellen Ticketmarkt ermittelt.
Im Modul "Ausführen von Befehlen"
Die Auftragsrichtung muss angegeben werden, da die Futures: Kauf: offene Long-Positionen Verkaufen: offene Leerpositionen closebuy: Schließen von Longpositionen close-sell: Schließen von Short-Positionen Vier Richtungen (für Rohstoff-Futures gibt es zwei weitere Richtungen: closebuy_today für den heutigen Abschluss von Long-Positionen und closeesell_today für den heutigen Abschluss von Short-Positionen).
Wenn beispielsweise das Auftragsmodul auf
Anzeige für die Rückprüfung:
Wie der JavaScript-Strategie-Code:
function main () {
while (true) {
if (exchange.IO("status")) {
exchange.SetContractType("MA909")
Log(exchange.GetTicker().Last)
exchange.SetDirection("buy")
Log(exchange.Buy(1000, 1))
throw "stop"
} else {
Log("The commodity futures front-end processor is not connected")
}
Sleep(1000)
}
}
Die Verwendung von Futures für digitale Währungen ist im Wesentlichen die gleiche wie die Verwendung von Futures für Rohstoffe in [8]
Es wird verwendet, um die Hebelwirkung von Futures für digitale Währungen festzulegen.
#Note: Backtesting is not supported.
Wie die JavaScript-Strategie:
function main () {
exchange.SetMarginLevel(10)
}
Beispiele für Visualisierungsstrategien:
https://www.fmz.com/strategy/121404 https://www.fmz.com/strategy/129895 https://www.fmz.com/strategy/123904 https://www.fmz.com/strategy/122318Weitere Strategien finden Sie unter:https://www.fmz.com/square
Andere Artikel dieser Reihe