
トレンド戦略では、一般的にさまざまな指標を使用して市場の方向性を判断し、さまざまな指標の数値比較結果を取引シグナルとして使用します。これにより、必然的にパラメータの使用と指標の計算が必要になります。パラメータを使用するのでフィッティングが行われます。この戦略は特定の市場状況では非常に優れたパフォーマンスを発揮しますが、運が悪く、市場のトレンドが現在のパラメータに非常に不利な場合、この戦略のパフォーマンスは非常に低くなる可能性があります。したがって、私の意見では、戦略設計は可能な限りシンプルであるべきであり、そのような戦略はより堅牢になります。今日はインジケーターを使わないトレンド戦略を紹介します。戦略コードは非常にシンプルで、わずか 40 行です。
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)
この戦略の原理は非常にシンプルです。インジケーターは使用せず、現在の価格のみを取引トリガーの基礎として使用し、主要なパラメータは1つだけです。ratioポジションを開くトリガーを制御します。
ロングトリガー:
if ticker.Last - basePrice > 0 and (ticker.Last - basePrice) / basePrice > ratio
現在の価格を基準価格と比較します。現在の価格が基準価格よりも高く、価格が基準価格を超える場合、ratio * 100 %、保留中の注文がトリガーされ、ロング注文が発注されます。
ご注文後、基本価格が現在の価格に更新されます。
ショート注文トリガー:
if ticker.Last - basePrice < 0 and (basePrice - ticker.Last) / basePrice > ratio
空売りの原理も同じです。現在の価格を基準価格と比較します。現在の価格が基準価格より低く、価格が基準価格を超える場合ratio * 100 %、保留中の注文がトリガーされ、ショート注文が発注されます。
ご注文後、基本価格が現在の価格に更新されます。
各注文の注文量は利用可能な資金の値です。ratio * 100 %。
計算された注文量がパラメータで設定された最小取引量より少ない場合を除きminStocksそれ以外の場合は注文してください。
これにより、戦略は価格の変化を追跡し、高値を追いかけて安値で売ることが可能になります。
バックテスト期間は約1年です。

操作結果:


最近、Python 戦略が比較的少ないという意見がユーザーからありました。今後は、Python で書かれた戦略をさらに共有していきます。戦略コードも非常にシンプルなので、初心者が学習するのに非常に適しています。 戦略アドレス: https://www.fmz.com/strategy/181185
この戦略は参考、バックテスト、テストのみを目的としています。興味があれば、最適化してアップグレードすることができます。