Type/to search
8
Follow
1361
Followers
Python-Version der Strategie des Aufholens und Verkaufens
Discussions
Created 2020-01-11 14:49:08  Updated 2024-12-12 20:57:43
 6
 7376

img

Python-Version der Strategie des Aufholens und Verkaufens

Trendstrategien verwenden im Allgemeinen verschiedene Indikatoren, um die Marktrichtung zu bestimmen, und verwenden die numerischen Vergleichsergebnisse verschiedener Indikatoren als Handelssignale. Dies wird zwangsläufig zur Verwendung von Parametern und zur Berechnung von Indikatoren führen. Da Parameter verwendet werden, erfolgt eine Anpassung. Die Strategie funktioniert unter bestimmten Marktbedingungen sehr gut. Wenn Sie jedoch Pech haben und der Markttrend den aktuellen Parametern sehr ungünstig gegenübersteht, kann die Strategie sehr schlecht abschneiden. Daher bin ich der Meinung, dass die Strategie so einfach wie möglich ausgestaltet sein sollte, und dass eine solche Strategie robuster ist. Heute stellen wir Ihnen eine Trendstrategie vor, die keine Indikatoren verwendet. Der Strategiecode ist sehr einfach, nur 40 Zeilen.

Strategiecode:

pine
import time basePrice = -1 ratio = 0.05 acc = _C(exchange.GetAccount) lastCancelAll = 0 minStocks = 0.01 def CancelAll(): while True : orders = _C(exchange.GetOrders) for i in range(len(orders)) : exchange.CancelOrder(orders[i]["Id"], orders[i]) if len(orders) == 0 : break Sleep(1000) def main(): global basePrice, acc, lastCancelAll exchange.SetPrecision(2, 3) while True: ticker = _C(exchange.GetTicker) if basePrice == -1 : basePrice = ticker.Last if ticker.Last - basePrice > 0 and (ticker.Last - basePrice) / basePrice > ratio : acc = _C(exchange.GetAccount) if acc.Balance * ratio / ticker.Last > minStocks : exchange.Buy(ticker.Last, acc.Balance * ratio / ticker.Last) basePrice = ticker.Last if ticker.Last - basePrice < 0 and (basePrice - ticker.Last) / basePrice > ratio : acc = _C(exchange.GetAccount) if acc.Stocks * ratio > minStocks : exchange.Sell(ticker.Last, acc.Stocks * ratio) basePrice = ticker.Last ts = time.time() if ts - lastCancelAll > 60 * 5 : CancelAll() lastCancelAll = ts LogStatus(_D(), "\n", "行情信息:", ticker, "\n", "账户信息:", acc) Sleep(500)

Einfache Analyse der Strategie

Das Prinzip der Strategie ist sehr einfach. Sie verwendet keine Indikatoren, sondern verwendet nur den aktuellen Preis als Grundlage für Handelsauslöser, und es gibt nur einen HauptparameterratioSteuert das Auslösen der Öffnung einer Position.

Langer Auslöser:

pine
if ticker.Last - basePrice > 0 and (ticker.Last - basePrice) / basePrice > ratio

Verwenden Sie den aktuellen Preis zum Vergleich mit dem Basispreis. Wenn der aktuelle Preis höher ist als der Basispreis und der Preis übersteigtratio * 100 %, wird die Pending Order ausgelöst und eine Long Order platziert.
Nach der Bestellung wird der Basispreis auf den aktuellen Preis aktualisiert.

Kurzauftragsauslöser:

pine
if ticker.Last - basePrice < 0 and (basePrice - ticker.Last) / basePrice > ratio

Das Prinzip des Leerverkaufs ist das gleiche. Verwenden Sie den aktuellen Preis, um ihn mit dem Basispreis zu vergleichen. Wenn der aktuelle Preis unter dem Basispreis liegt und der Preis höher istratio * 100 %, wird die Pending Order ausgelöst und eine Short Order platziert.
Nach der Bestellung wird der Basispreis auf den aktuellen Preis aktualisiert.

Das Auftragsvolumen entspricht dem Wert der jeweils verfügbaren Mittel.ratio * 100 %
Sofern das berechnete Auftragsvolumen nicht kleiner ist als das in den Parametern festgelegte MindesttransaktionsvolumenminStocks, andernfalls eine Bestellung aufgeben.

Dadurch kann die Strategie Preisänderungen verfolgen, Höchststände verfolgen und Tiefststände verkaufen.

Backtesting

Der Backtesting-Zeitraum beträgt ca. ein Jahr.
img

Ergebnisse der Operation:
img

img

Kürzlich sagten einige Benutzer, dass es relativ wenige Python-Strategien gibt. Ich werde in Zukunft weitere in Python geschriebene Strategien veröffentlichen. Der Strategiecode ist außerdem sehr einfach, sodass er sich sehr gut für Anfänger zum Lernen eignet.
Strategieadresse: https://www.fmz.com/strategy/181185

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 (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)