月間および四半期移動平均操作に基づく量子取引戦略

作者: リン・ハーンチャオチャン開催日:2023年12月15日 11:49:06
タグ:

img

概要

この戦略は,主に月間線と四半期線の移動平均線をベースに運用する.具体的には,20日線が月間線,60日線が四半期線として使用される.戦略信号は,両移動平均線の黄金十字と死十字から来る.月間線が四半期線を超えると,ロング;月間線が四半期線を下回ると,ポジションを閉じる.この戦略は,統合と分散の機会を把握するために中期および長期間の運用に適している.

戦略の論理

この戦略は,月間線指標として20日間の単純な移動平均値と四半期線指標として60日間の単純な移動平均値を使用しています. 具体的な取引信号生成論理は以下のとおりです.

  1. 20日線が60日線を超えると 金色の十字が現れ ロングにします
  2. 過去10日間の最高値から10%以上下がると 利益を得るためにロングポジションを閉じる
  3. 20日線が60日線を下回る時,つまり,死十字が起こると,すべてのポジションを閉じる.
  4. 損失が10%に達すると ストップ損失です

月間線と四半期線の移動平均クロスオーバーを使用して,中期および長期的トレンドを決定します.ロングに行くためのゴールデンクロスは中期および長期の牛市場開始を示し,ショートに行くためのデスクロスは中期および長期の熊市場開始を示します.同時に,リスクを制御するためにストップ・プロフィートおよびストップ・ロスト戦略を使用します.

戦略 の 利点

  1. 月間および四半期移動平均を用いることで,市場の騒音をフィルタリングし,中長期の傾向を把握できます.
  2. 戦略のパラメータはシンプルで 簡単に実行できます
  3. リスク管理のために 利得とストップ・ロスのパラメータを 調整できます

リスク分析

  1. トレンド逆転点を特定できず 損失の危険があります
  2. 月間および四半期移動平均は遅延効果を持ち,短期的な機会を逃す可能性があります.
  3. 適切なストップ・ロスト・ポイントを 選択する必要があります 早くストップ・アウトされないように

解決策:

  1. 遅延ストップロスを採用して タイミングでストップアウトします
  2. 信号をフィルタリングし,傾向を決定するために他の指標を組み込む.
  3. 戦略を最適化するために 移動平均パラメータを調整します

戦略の最適化のための方向性

  1. フィルタリングのための他の指標,例えばKD指標などを追加し,誤ったブレイクを避ける.
  2. 最適なパラメータ組み合わせを見つけるために 移動平均パラメータを最適化します
  3. 利益を引き出す戦略を追加して,より多くの利益を得るために利益を引き継ぐ.

概要

この戦略は,移動平均値の黄金十字と死十字を通して中期および長期的トレンド方向を判断することによって,月間および四半期移動平均値の利点を体系的に利用する.同時に,リスクを制御するために合理的なストップ損失と利益メカニズムが設定されている.この戦略を最適化するにはまだ多くの余地があり,さらなるテストと最適化に価値がある.


/*backtest
start: 2022-12-08 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("均線操作-月季", overlay=true, initial_capital = 100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 30)
sma20 = sma(close, 20)
sma60 = sma(close, 60)

plot(sma20, title="月線", color=color.purple,linewidth=2)
plot(sma60, title="季線", color=color.yellow,linewidth=2)

backtest_year = input(title="backtest_year",type=input.integer,defval=2020)
backtest_month = input(title="backtest_month",type=input.integer,defval=10)
backtest_date = input(title="backtest_date",type=input.integer,defval=1)
backtest_start_time = timestamp(backtest_year,backtest_month,backtest_date,0,0,0)

to_long = sma20 > sma60  and close > highest(10)*0.9 // 黃金交叉
to_close = sma20 < sma60 // 死亡交叉
to_exit = close < highest(10)*0.9 //股價嚴重回檔
to_stop = close < 0.9*strategy.position_avg_price 

// to_long = crossover(sma20, sma60)   // 黃金交叉
// to_close = crossunder(sma20, sma60) // 死亡交叉

//plotchar(to_long, char="B", text="買", color=color.red, location=location.belowbar)
//plotchar(to_close, char="S", text="賣", color=color.green, location=location.abovebar)
//strategy.close("open long",when = tslide, comment="多單滑價7%出場")
if true
    strategy.entry("golden", strategy.long,  when=to_long,comment="多單入場")
    strategy.close("golden",  when=to_exit,comment="多單滑價7%出場")
    strategy.close("golden",  when=to_close,comment="月線季線死亡交叉")
    strategy.close("golden",  when=to_stop,comment="虧損10%強迫停損")


もっと