移動平均の組み合わせトレンド戦略


作成日: 2023-12-11 16:28:20 最終変更日: 2023-12-11 16:28:20
コピー: 0 クリック数: 670
1
フォロー
1621
フォロワー

移動平均の組み合わせトレンド戦略

概要

この戦略は,異なる周期の移動平均を組み合わせてトレンドの方向を決定し,限られた差分法の近似導関数を用い,可能な逆転点を予測する.この戦略は,小時レベルでの低波動性通貨ペアに適用されます.

戦略原則

この戦略は,20期,40期,80期の単一の移動平均を同時に使用する. 終了価格が3つの移動平均より高いときは,上昇傾向として定義され,終了価格が3つの移動平均より低いときは,下降傾向として定義される. 最低価格が3つの移動平均より高いか,最高価格が3つの移動平均より低い場合にのみ,トレンドが確認される.

可能な逆転点を予測するために,戦略は3期間の移動平均の有限差分法を用いて第一導関数に近似する.第一導関数が正であるときは上昇傾向が安定していることを示し,第一導関数が負であるときは下降傾向が安定していることを示している.

取引の具体的ルールは以下の通りです.

  1. 高速線が中速線より高く,中速線が遅速線より高く,そして第一導関数>0であるとき,多めにする.

  2. 速線が中線より低く,中線が遅線より低く,そして第1導関数であるとき,空白する.

  3. 多頭ストップは,最初の導関数<=0時;

  4. 空頭止損は,最初の導関数>=0であるとき.

優位分析

この戦略の利点は以下の通りです.

  1. 複数の移動平均の組み合わせを用いてトレンドを判断し,トレンド判断をより確実にする.

  2. 導関数を使って逆転点を予測し,早期に損失を止めて,小額で引き戻すことができます.

  3. 戦略の論理はシンプルで明快で,実装は分かりやすく,初心者向けに適しています.

  4. 勝率が高いので,トレンドの逆転を避けましょう.

リスク分析

この戦略にはいくつかのリスクがあります.

  1. 移動平均の組み合わせは,波動的な状況で誤った信号を発する可能性があります.

  2. 導関数反転信号は遅滞し,損失を完全に回避することはできません.

  3. ストップポイントを正しく設定しないことで,損失が拡大する可能性があります.

これらのリスクに対して,移動平均のパラメータを最適化したり,ストップポジションを調整したり,他の指標と組み合わせたりすることで改善することができます.

最適化の方向

この戦略は以下の点で最適化できます.

  1. 移動平均の周期を最適化し,異なる市場の特徴に合わせる.

  2. 移動平均の種類を試すには,指数移動平均などがあります.

  3. 波動率指数を使って動的ストップを設定する.

  4. 誤った信号を避けるために,他の指標と組み合わせて確認してください.

要約する

この移動平均は,複数の移動平均を用いてトレンドの方向を判断し,導関数を使って逆転を予測するトレンド戦略を組み合わせ,リスクを効果的に制御し,中短線操作に適しています. 戦略はシンプルで使いやすく,簡単に最適化でき,初心者の学習実践に適しています. 戦略のパラメータをさらに最適化することで,異なる品種に適応させ,よりよい効果を得ることができます.

ストラテジーソースコード
/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Big 3",overlay=true, default_qty_type=strategy.percent_of_equity)
 
// enter on Arrows
// take profit on touch with 80 SMA, gray, or at discretion
 
fast = sma(close,20)
mid = sma(close,40)
slow = sma(close,80)
 
plot(fast,linewidth=1)
plot(mid,linewidth=2)
plot(slow,linewidth=4)
 
isUptrend = close > fast and close > mid and close > slow
isDowntrend = close < fast and close < mid and close < slow
 
confirmed = (low > fast and low > mid and low > slow) or (high < fast and high < mid and high < slow)
deriv = 3 * mid[0] - 4 * mid[1] + mid[2]

stableUptrend = (fast > mid) and (mid > slow) and (deriv > 0)
stableDowntrend = (fast < mid) and (mid < slow) and (deriv < 0)
 
barcolor(isUptrend ? green : isDowntrend ? red : gray)
plotshape(not confirmed[1] and confirmed and isUptrend ? close : na,style=shape.arrowup,location=location.belowbar,color=green)
plotshape(not confirmed[1] and confirmed and isDowntrend ? close : na,style=shape.arrowdown,location=location.abovebar,color=red)

stop = na
//stop = input(1000, "Stop")


strategy.entry("long", strategy.long, when=(stableUptrend), stop=stop)
strategy.close("long", when=(deriv <= 0))

strategy.entry("short", strategy.short, when=(stableDowntrend), stop=stop)
strategy.close("short", when=(deriv >= 0))