
Es gibt bereits viele Börsen für digitale Währungstermingeschäfte, aber für den Handel mit Terminkontraktderivaten und digitalen Währungsoptionen gibt es nicht viele Börsen auf dem Markt. Zu den Börsen, die den Optionshandel unterstützen, gehören Deribit und BitMEX. Im Bereich des quantitativen Handels gibt es auch viele Strategien für den Optionshandel, wie beispielsweise die in einigen gesuchten Materialien erwähnten Optionsstrategien:
| Typ | |||||
|---|---|---|---|---|---|
| Richtungsstrategie: | Kauf einer Call-Option | Verkauf einer Put-Option | Bull-Call-Spread | Bull Put Spread | |
| – | Put-Option kaufen | Verkauf einer Call-Option | Bären-Call-Spread | Bären-Put-Spread | |
| Volatilitätsstrategien: | Straddle verkaufen | Wide Straddle verkaufen | Straddle kaufen | Kaufen Sie Wide Straddle | |
| Absicherungsstrategien: | Gedeckter Call | Gedeckter Put | Schutzrufe | Schutz Put | |
| – | Langes Doppellimit | Doppeltes Limit für Short-Positionen | – | – |
Zitiert ausverbinden
Um eine Strategie für den Optionshandel zu schreiben, müssen Sie zunächst eine solide Grundlage schaffen und mit den grundlegenden Vorgängen wie der Auftragserteilung, dem Einholen von Marktinformationen, dem Stornieren von Aufträgen und dem Erlangen von Positionen vertraut sein. Beim Schreiben von Strategien wird immer noch die Inventor Quantitative Trading Platform verwendet, obwohl die Inventor Quantitative Trading Platform derzeit hauptsächlich den Devisenhandel, den Vertragshandel und den Leveraged Trading im Bereich des quantitativen Handels mit digitalen Währungen unterstützt. Es gibt nicht viele Informationen zum Optionshandel. Im Folgenden nehmen wir die Börse „Deribit“ als Beispiel, um zu erklären, wie man mit der Inventor Quantitative Trading Platform den Handel mit digitalen Währungsoptionen betreiben kann.
API-Dokumentation: https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument Simulationsdiskette: https://docs.deribit.com/v2/?javascript#public-get_last_settlements_by_instrument
Sie können auf der Website der Simulationsplattform ein Konto registrieren, den API-Schlüssel aktivieren und den API-Schlüssel erhalten. Die Konfiguration auf der Inventor Quantitative Trading Platform ist dieselbe wie die Konfiguration eines echten Kontos.

Es gibt vier grundlegende Konzepte, die Sie für den Optionshandel verstehen müssen:

Laut der API-Dokumentation von Deribit Exchange übergibt die Marktschnittstelle von Deribit lediglich die Daten für den Zugriff auf Futures- oder Optionsmarktinformationen.instrument_nameDie Parameter sind unterschiedlich (instrument_name wird durch die Funktion SetContractType festgelegt), daher können Sie die Schnittstelle grundsätzlich zum Abrufen von Marktinformationen verwenden.GetTickerHolen Sie sich Angebote für Optionen.
Natürlich ist das Standardpaket der Inventor Quantitative Trading Platform der reale Markt von Deribit Exchange. Wir müssen zunächst zum Simulationsmarkt wechseln und den folgenden Code verwenden:
exchange.IO("base", "https://test.deribit.com")
Dann erstellen wir derzeit einen OptionsvertragBTC-27DEC19-7000-P:
Dies ist eine Put-Option mit Ausübungsdatum: 27.12.19 und Ausübungspreis: 7000
exchange.SetContractType("BTC-27DEC19-7000-P")
Dann holen Sie es sich. Wir schreiben es gemeinsam, führen den Code aus und testen, um die Marktinformationen dieses Optionskontrakts zu erhalten.
function main () {
exchange.IO("base", "https://test.deribit.com")
exchange.SetContractType("BTC-27DEC19-7000-P")
var ticker = exchange.GetTicker()
Log(ticker)
}
Die Verwendung von Debugging-Tools kann zum Testen von Folgendem sehr praktisch sein:
Sie können sehen, dass der Preis mit dem auf der Simulationsdiskette übereinstimmt.

Die Aufrufmethoden anderer Marktschnittstellen sind gleich und werden hier nicht wiederholt. Es ist zu beachten, dass:
Der Optionshandel ist nicht sehr aktiv. Manchmal gibt es keine Kauf- oder Verkaufsaufträge. Zu diesem Zeitpunkt erkennt die unterste Ebene der Inventor Quantitative Trading Platform einen Wert von 0 und meldet einen Fehler. Sie können verwendenSetErrorFilter("Invalid ticker")Ignorieren Sie diesen Fehler und verwenden SieGetRawJSONDie Funktion erhält die ursprünglichen Informationen des Marktes und kapselt die Daten. Hier schreibe ich ein Beispiel, um ähnliche Funktionen zu erreichen:
function init() {
SetErrorFilter("Invalid ticker")
}
$.GetTicker = function(e) {
var ticker = e.GetTicker()
if (!ticker) {
try {
var ret = JSON.parse(e.GetRawJSON())
return {
Info : ret,
High : ret.result.stats.high,
Low : ret.result.stats.low,
Buy : ret.result.best_bid_price,
Sell : ret.result.best_ask_price,
Last : ret.result.last_price,
Volume : ret.result.stats.volume,
OpenInterest : 0,
Time : new Date().getTime()
}
} catch (err) {
Log(err)
}
}
return ticker
}
Beim Aufruf schreiben Sie:Log($.GetTicker(exchange))
Die Auftragserteilung ist sehr einfach. Im Vergleich zum Terminhandel gibt es nur zwei Richtungen: Kaufen und Verkaufen. Verwenden Sie auchSell,BuyFunktionsreihenfolge.
function main () {
exchange.IO("base", "https://test.deribit.com")
exchange.SetContractType("BTC-27DEC19-7000-P")
var id = exchange.Buy(0.017, 1)
Log(exchange.GetOrder(id))
}

Die soeben erteilte Order erscheint auch auf der simulierten Handelsplattform.

Undexchange.GetOrder(id)Sie können die Bestellinformationen abfragen.
Für die Stornierung einer Bestellung wird dasselbe Verfahren verwendet.CancelOrderFunktion, wie das Stornieren einer Order im Terminhandel.

Der Erhalt der verfügbaren Vermögenswerte auf einem Konto erfolgt genau wie beim Futures-Handel. Rufen Sie direkt anGetAccountFunktion.
Anzeige auf der simulierten Austauschseite

Führen Sie den Code aus, um Folgendes zu erhalten:

Zum Halten von Positionen können Sie nicht direkt die verpacktenGetPositionFunktion, da Deribit-Transaktionen standardmäßig Futures-Transaktionen und keine Optionstransaktionen sind und nur diese Funktion zum Erwerb von Futures-Positionen verwendet werden kann.
Daher müssen wir die Funktion zum Erwerb von Optionspositionen selbst kapseln.
Die Funktionsschnittstelle zum Abrufen von Positionen in der API-Dokumentation:

$.GetPosition = function(e) {
// /private/get_positions
// currency , kind
var positions = []
var currency = e.GetCurrency()
var arr = currency.split("_")
var baseCurrency = arr[0]
try {
var ret = e.IO("api", "GET", "/api/v2/private/get_positions", "currency=" + baseCurrency + "&kind=option")
for (var i in ret.result) {
if (ret.result[i].size == 0 || ret.result[i].direction == "zero") {
continue
}
var pos = {
Info : ret.result[i],
Amount : ret.result[i].size,
FrozenAmount : 0,
Price : ret.result[i].average_price,
Profit : ret.result[i].floating_profit_loss,
MarginLevel : 0,
Margin : 0,
ContractType : ret.result[i].instrument_name,
Type : ret.result[i].direction == "buy" ? ORDER_TYPE_BUY : ORDER_TYPE_SELL,
}
positions.push(pos)
}
} catch (err) {
Log(err)
positions = null
}
return positions
}
AnrufLog($.GetPosition(exchange))Sie können die Positionsinformationen ausdrucken.

Auf diese Weise lassen sich die grundlegenden Vorgänge erlernen. Der Rest besteht im Studium der Optionshandelsstrategien.