Type/to search
8
Follow
1364
Followers
Python-Version der Gleichgewichtsstrategie für eine einzelne Plattform
Discussions
Created 2020-02-05 10:02:03  Updated 2023-10-12 21:20:47
 1
 2965

img

Python-Version der Gleichgewichtsstrategie für eine einzelne Plattform

JavaScript-Version

Strategieadresse: https://www.fmz.com/strategie/345

Lassen Sie uns in diesem Artikel das Portieren einer einfachen JavaScript-Strategie üben. Durch das Übertragen von Strategien werden Sie mit den Aufrufen der Inventor Quantitative Trading Platform-Schnittstelle vertrauter und verstehen die geringfügigen Unterschiede zwischen verschiedenen Sprachen bei der Entwicklung von Strategien auf der Plattform. Tatsächlich ist der Unterschied zwischen der JavaScript-Version der Strategie und der Python-Version Die Strategie ist sehr gering, da die Schnittstellenaufrufe grundsätzlich gleich sind.

Strategiebeschreibung

Zitat aus der JavaScript-Version der Anweisungen:

Dazu muss eine Position eröffnet werden. Wenn das Konto beispielsweise 5.000 Yuan und 1 Münze hat, der Wert der Münze größer ist als der Kontostand von 5.000 und die Preisdifferenz den Schwellenwert überschreitet, ist die Münze jetzt beispielsweise 6.000 wert Yuan, dann verkaufen (6.000-5.000)/6.000. /2 Münzen, es bedeutet, dass die Münze aufgewertet hat, tauschen Sie das Geld zurück, wenn die Münze beispielsweise auf 4000 Yuan abwertet, kaufen (5000-4000)/4000/2 Münzen, kaufe einige zurück, wenn der Kurs der Münze fällt, und wenn er wieder steigt, verkaufe ich sie wieder, genau wie eine Bilanz, mit unterschiedlichen Absicherungen auf beiden Seiten, deshalb habe ich es eine ausgewogene Strategie genannt.

Das Strategieprinzip ist sehr einfach und die JavaScript-Version des Codes ist nicht lang, nur mehr als 70 Zeilen. Durch die Übertragung auf die Python-Sprachstrategie mit prägnanterer Syntax ist der Code kürzer und sehr gut für Anfänger geeignet. Auf der Inventor Quantitative Trading Platform werden viele Codes von Entwicklern gemeinsam genutzt, und die Sprache unterstütztJavaScript/C++/PythonUsw., daher ist die Beherrschung einer weiteren Entwicklungssprache nicht nur für Lern-, Forschungs- und Entwicklungsstrategien hilfreich, sondern ermöglicht Ihnen auch, sich mit den verschiedenen API-Schnittstellen der Plattform vertraut zu machen.

Strategiecode

'''backtest start: 2019-12-01 00:00:00 end: 2020-02-01 11:00:00 period: 1m exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}] ''' InitAccount = None def CancelPendingOrders(): ret = False while True: orders = _C(exchange.GetOrders) if len(orders) == 0 : return ret for j in range(len(orders)): exchange.CancelOrder(orders[j].Id) ret = True if j < len(orders) - 1: Sleep(Interval) return ret def onTick(): acc = _C(exchange.GetAccount) ticker = _C(exchange.GetTicker) spread = ticker.Sell - ticker.Buy diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2 ratio = diffAsset / acc.Balance LogStatus("ratio:", ratio, _D()) if abs(ratio) < threshold: return False if ratio > 0 : buyPrice = _N(ticker.Sell + spread, ZPrecision) buyAmount = _N(diffAsset / buyPrice, XPrecision) if buyAmount < MinStock: return False exchange.Buy(buyPrice, buyAmount, diffAsset, ratio) else : sellPrice = _N(ticker.Buy - spread, ZPrecision) sellAmount = _N(-diffAsset / sellPrice, XPrecision) if sellAmount < MinStock: return False exchange.Sell(sellPrice, sellAmount, diffAsset, ratio) return True def main(): global InitAccount, LoopInterval InitAccount = _C(exchange.GetAccount) LoopInterval = max(LoopInterval, 1) while True: if onTick(): Sleep(1000) CancelPendingOrders() Log(_C(exchange.GetAccount)) Sleep(LoopInterval * 1000)

Der Code beginnt mit

'''backtest start: 2019-12-01 00:00:00 end: 2020-02-01 11:00:00 period: 1m exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}] '''

Es handelt sich um die Backtest-Konfiguration, was bedeutet, dass die Backtest-Konfiguration (Einstellungen) in Form von Code gespeichert werden und der Backtest automatisch entsprechend dieser Einstellung konfiguriert wird. Dieser Teil kann gelöscht werden. Wenn er gelöscht wird, müssen Sie die Backtest-Konfigurationsinformationen während des Backtests manuell auf der Backtest-Seite festlegen.
Referenz: https://www.fmz.com/bbs-topic/859

Die Parameter dieser Strategie sind genau dieselben wie die der JavaScript-Version. Der Strategiecode wird ebenfalls Satz für Satz übernommen, die Programmstruktur hat sich nicht geändert. Sie können sie Satz für Satz vergleichen, um die Unterschiede zwischen Strategien zu sehen, die in verschiedenen Sprachen geschrieben sind. Sprachen.

Backtesting

Parameterkonfiguration
img

Statistiken
img

img

Strategieadresse: https://www.fmz.com/strategy/183374

Die Strategie dient nur zu Referenzzwecken, zum Backtesting und zum Testen. Bei Interesse können Sie sie optimieren und aktualisieren.

Related Recommendations
Comment
All comments (1)

    好牛啊

    4 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)