移動平均の組み合わせに基づく長期トレンド追跡戦略


作成日: 2024-02-23 14:54:34 最終変更日: 2024-02-23 14:54:34
コピー: 1 クリック数: 612
1
フォロー
1617
フォロワー

移動平均の組み合わせに基づく長期トレンド追跡戦略

概要

この戦略は,多組の快速平均線の組み合わせを計算して,トレンドの方向を識別し,長期ポジションの追跡を実現する. 快速平均線は,下から上へ移動し,遅速平均線に入るときに買入シグナルを生成し,快速平均線は上から下へ移動し,遅速平均線から出るときに売りシグナルを生成する.

戦略原則

  1. 3/6/9/12/15/18/21の7グループ急速EMA平均線を計算する.
  2. 24/27/30/…/200日の14組の慢速EMA平均線を計算する.
  3. 設定速EMA均線色判断ルール:3日線上6日線は上昇を示し,青色に設定;下降は下落を示し,色に設定.
  4. 設定遅いEMA均線色判定ルール:24日線上を走行25日線は上昇を示し,緑に設定;下を走行を示し,下落を示し,赤に設定。
  5. EMA線グループが低 EMA線グループを上下から横切ると,買い信号が作られ,トレンドが上昇することを表します.
  6. 速いEMA線グループが,上から下へと,遅いEMA線グループを通過すると,売れ信号が作られ,トレンドが下方へ転向することを表します.

平均線の組み合わせをゆっくりとマッチングすることで,中長線のトレンドの変化を効果的に識別し,長線を追跡することができる.

戦略的優位性

  1. 快速平均線配合,トレンド変化の識別能力が強い。快速平均線は短期トレンドを識別し,慢速平均線フィルタを整合し,組み合わせを使用すると識別精度が向上する。
  2. 複数の均線組み合わせにより,信号を判断しやすく,偽信号を回避する.
  3. 異なるEMA周期パラメータを使用し,異なるレベルの中長線トレンドを識別できます.操作周期は柔軟です.
  4. 長期ポジションの追跡戦略は,ほとんどのプライベートファンドが中長期ラインで運営するモデルに適合しています.

戦略リスク

  1. 長期にわたって追跡されていて,ショートラインの取引機会を逃している可能性があります.
  2. EMAは短期的な価格変動を捕捉するのに適していません. 価格の変動が大きい区間整理に遭遇すると,不必要な取引シグナルが生じることがあります.
  3. パラメータの設定が不適切である場合,取引シグナルが頻度や保守性が高くなり,パラメータのテスト後,リールで検証することが推奨されます.

戦略の最適化について

  1. 急速平均線の数を増やし,より短い周期EMAを設定することで,短線トレンドの判断力を向上させることができる.
  2. 慢平均線の数を増やし,より多くの中長期周期EMAを設定することで,中長期線傾向の判断力を向上させることができる.
  3. MA信号確認を追加し,EMA均線信号を発信する時に同時にMA均線のサポートをチェックすることで,偽信号を減らすことができる.
  4. 取引量の多空分析と組み合わせて,価格の急激な波動の偽破りの場合の誤信号を回避する.

要約する

この戦略は,急速平均線と遅い平均線の組み合わせシステムを構築し,株価の中間長線傾向の変化を識別し,典型的な追跡ポジション保有戦略の1つである.パラメータ選択と信号フィルタリングの面で,大きな最適化余地があり,投資家は自分のスタイルに従って調整し,異なる市場環境に対応することができます.

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

//@version=3
strategy("CM Super Guppy ala WY", pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=99, overlay=true)


///////////////////////////////////////////////
//* Backtesting Period Selector | Component *//
///////////////////////////////////////////////

//* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *//
//* https://www.tradingview.com/u/pbergden/ *//
//* Modifications made *//

testStartYear = input(2017, "Backtest Start Year") 
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(3, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true

///////////////////////////////////////////////

src = close, 
len1 = input(3, minval=1, title="Fast EMA 1")
len2 = input(6, minval=1, title="Fast EMA 2")
len3 = input(9, minval=1, title="Fast EMA 3")
len4 = input(12, minval=1, title="Fast EMA 4")
len5 = input(15, minval=1, title="Fast EMA 5")
len6 = input(18, minval=1, title="Fast EMA 6")
len7 = input(21, minval=1, title="Fast EMA 7")
//Slow EMA
len8 = input(24, minval=1, title="Slow EMA 8")
len9 = input(27, minval=1, title="Slow EMA 9")
len10 = input(30, minval=1, title="Slow EMA 10")
len11 = input(33, minval=1, title="Slow EMA 11")
len12 = input(36, minval=1, title="Slow EMA 12")
len13 = input(39, minval=1, title="Slow EMA 13")
len14 = input(42, minval=1, title="Slow EMA 14")
len15 = input(45, minval=1, title="Slow EMA 15")
len16 = input(48, minval=1, title="Slow EMA 16")
len17 = input(51, minval=1, title="Slow EMA 17")
len18 = input(54, minval=1, title="Slow EMA 18")
len19 = input(57, minval=1, title="Slow EMA 19")
len20 = input(60, minval=1, title="Slow EMA 20")
len21 = input(63, minval=1, title="Slow EMA 21")
len22 = input(66, minval=1, title="Slow EMA 22")
len23 = input(200, minval=1, title="EMA 200")

//Fast EMA
ema1 = ema(src, len1)
ema2 = ema(src, len2)
ema3 = ema(src, len3)
ema4 = ema(src, len4)
ema5 = ema(src, len5)
ema6 = ema(src, len6)
ema7 = ema(src, len7)

//Slow EMA
ema8 = ema(src, len8)
ema9 = ema(src, len9)
ema10 = ema(src, len10)
ema11 = ema(src, len11)
ema12 = ema(src, len12)
ema13 = ema(src, len13)
ema14 = ema(src, len14)
ema15 = ema(src, len15)
ema16 = ema(src, len16)
ema17 = ema(src, len17)
ema18 = ema(src, len18)
ema19 = ema(src, len19)
ema20 = ema(src, len20)
ema21 = ema(src, len21)
ema22 = ema(src, len22)

//EMA 200
ema23 = ema(src, len23)

//Fast EMA Color Rules
colfastL = (ema1 > ema2 and ema2 > ema3 and ema3 > ema4 and ema4 > ema5 and ema5 > ema6 and ema6 > ema7)
colfastS = (ema1 < ema2 and ema2 < ema3 and ema3 < ema4 and ema4 < ema5 and ema5 < ema6 and ema6 < ema7)
//Slow EMA Color Rules
colslowL = ema8 > ema9 and ema9 > ema10 and ema10 > ema11 and ema11 > ema12 and ema12 > ema13 and ema13 > ema14 and ema14 > ema15 and ema15 > ema16 and ema16 > ema17 and ema17 > ema18 and ema18 > ema19 and ema19 > ema20 and ema20 > ema21 and ema21 > ema22
colslowS = ema8 < ema9 and ema9 < ema10 and ema10 < ema11 and ema11 < ema12 and ema12 < ema13 and ema13 < ema14 and ema14 < ema15 and ema15 < ema16 and ema16 < ema17 and ema17 < ema18 and ema18 < ema19 and ema19 < ema20 and ema20 < ema21 and ema21 < ema22 
//Fast EMA Final Color Rules
colFinal = colfastL and colslowL? aqua : colfastS and colslowS? orange : gray
//Slow EMA Final Color Rules
colFinal2 = colslowL  ? lime : colslowS ? red : gray
//Fast EMA Plots
p1=plot(ema1, title="Fast EMA 1", style=line, linewidth=2, color=colFinal)
plot(ema2, title="Fast EMA 2", style=line, linewidth=1, color=colFinal)
plot(ema3, title="Fast EMA 3", style=line, linewidth=1, color=colFinal)
plot(ema4, title="Fast EMA 4", style=line, linewidth=1, color=colFinal)
plot(ema5, title="Fast EMA 5", style=line, linewidth=1, color=colFinal)
plot(ema6, title="Fast EMA 6", style=line, linewidth=1, color=colFinal)
p2=plot(ema7, title="Fast EMA 7", style=line, linewidth=2, color=colFinal)

//Slow EMA Plots
p3=plot(ema8, title="Slow EMA 8", style=line, linewidth=1, color=colFinal2)
plot(ema9, title="Slow EMA 9", style=line, linewidth=1, color=colFinal2)
plot(ema10, title="Slow EMA 10", style=line, linewidth=1, color=colFinal2)
plot(ema11, title="Slow EMA 11", style=line, linewidth=1, color=colFinal2)
plot(ema12, title="Slow EMA 12", style=line, linewidth=1, color=colFinal2)
plot(ema13, title="Slow EMA 13", style=line, linewidth=1, color=colFinal2)
plot(ema14, title="Slow EMA 14", style=line, linewidth=1, color=colFinal2)
plot(ema15, title="Slow EMA 15", style=line, linewidth=1, color=colFinal2)
plot(ema16, title="Slow EMA 16", style=line, linewidth=1, color=colFinal2)
plot(ema17, title="Slow EMA 17", style=line, linewidth=1, color=colFinal2)
plot(ema18, title="Slow EMA 18", style=line, linewidth=1, color=colFinal2)
plot(ema19, title="Slow EMA 19", style=line, linewidth=1, color=colFinal2)
plot(ema20, title="Slow EMA 20", style=line, linewidth=1, color=colFinal2)
plot(ema21, title="Slow EMA 21", style=line, linewidth=1, color=colFinal2)
plot(ema22, title="Slow EMA 22", style=line, linewidth=2, color=colFinal2)
p4=plot(ema23, title="EMA 200", style=line, linewidth=2)


// Strategy Center
enterLong = colfastL and colslowL
exitLong = not colfastL

if testPeriod()
    strategy.entry("WY Long", strategy.long, when=enterLong, comment="WY Long")
else
    strategy.cancel(id="WY Long")

if testPeriod()
    strategy.close("WY Long", when=exitLong)