avatar of 发明者量化-小小梦 发明者量化-小小梦
フォロー ダイレクトメッセージ
4
フォロー
1271
フォロワー

追いかけて売る戦略のPython版

作成日:: 2020-01-11 14:49:08, 更新日:: 2024-12-12 20:57:43
comments   6
hits   7100

追いかけて売る戦略のPython版

追いかけて売る戦略のPython版

トレンド戦略では、一般的にさまざまな指標を使用して市場の方向性を判断し、さまざまな指標の数値比較結果を取引シグナルとして使用します。これにより、必然的にパラメータの使用と指標の計算が必要になります。パラメータを使用するのでフィッティングが行われます。この戦略は特定の市場状況では非常に優れたパフォーマンスを発揮しますが、運が悪く、市場のトレンドが現在のパラメータに非常に不利な場合、この戦略のパフォーマンスは非常に低くなる可能性があります。したがって、私の意見では、戦略設計は可能な限りシンプルであるべきであり、そのような戦略はより堅牢になります。今日はインジケーターを使わないトレンド戦略を紹介します。戦略コードは非常にシンプルで、わずか 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版

追いかけて売る戦略のPython版

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

この戦略は参考、バックテスト、テストのみを目的としています。興味があれば、最適化してアップグレードすることができます。