ダブル移動平均クロスオーバートレンドフォロー戦略


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

概要

この戦略は,双均線交差原理を適用し,トレンド追跡指標と組み合わせて,トレンドの判断と追跡を実現する.主な考えは,短期平均線上には長期平均線を穿越するときに多行し,短期平均線下には長期平均線を穿越するときに空行することである.同時に,百日平均線を加え,全体的なトレンド方向を判断し,偽突破を避ける.

戦略原則

この戦略は主に双均線交差システムとトレンド追跡システムで構成されている.

双均線交差系には,速線EMA1と遅線EMA2が含まれている.このうちEMA1は10日線をデフォルトで,EMA2は20日線をデフォルトで持つ.速線で遅線を横切るときに買い信号が生成され,速線の下で遅線を横切るときに売り信号が生成される.

百日平均線EMA100を足して,全体的なトレンドの方向を判断する.価格が上昇傾向にあるときのみ (価格が100日平均線より高く),快線上の慢線を突破して買い信号が生じる.価格が下降傾向にあるときのみ (価格が100日平均線より低い),快線下の慢線を突破して売り信号が生じる.これは,ほとんどの偽の突破をフィルターできる.

また,K線で購入と売却の矢印が表示され,取引信号が直視的に表示されます.

トレンド追跡システムは,日中の日線と周期内の日線を使用してトレンドの方向を再び確認する. 5分と60分間のHeikin-Ashi平均線を用いて判断する.周期内の日線を用いた8日,12日の平均線を用いて判断する.

真の取引信号は,当日と周期間の判断が一致するときにのみ発信されます.これは,主ではないトレンドの方向のほとんどのノイズをさらにフィルターすることができます.

優位分析

この戦略の最大の利点は,トレンドトラッキングと均線交差を同時に統合することで,偽信号を効果的にフィルターし,引き下げを許容範囲内に抑えることができるということです.

具体的には,双均線交差システムの優位性は以下の通りです.

  1. 操作がシンプルで,原理が分かりやすく,初心者にも適しています.

  2. 逆転を避けるために順調に操作する.

  3. 快線と遅線のパラメータは調整可能で,異なる周期に対応できます.

  4. 収益性が高く,大きなトレンドでは利益が目立つ.

EMA100に参加するメリット:

  1. 逆転操作をフィルターし,損失を減らす.

  2. トレンド操作で,逆戻りも制御できます.

トレンドトラッキングのメリット:

  1. 複数の時間的な判断で,単一の時間帯のノイズの影響を受けないこと.

  2. 取引の方向性が大規模な動きと一致することを確認し,撤退を減らす.

  3. Heikin-Ashiは価格差を平滑化し,ノイズをフィルターし,トレンドのみを捉えます.

リスク分析

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

  1. 長期的に見ると,平均線が交差する頻度が多く,取引機会と外為コストが過剰に増加する.

  2. トレンドシグナルが遅れて,トレンドの初期段階を逃している可能性があります.

  3. 大規模なトレンドが逆転すると,大きな損失が起こりかねない.

  4. パラメータ設定は最適化が必要で,不適切な設定は戦略のパフォーマンスに影響する.

対策として

  1. 取引を無効にするため,清算時に操作頻度を減らす.

  2. 平均線周期を適切に短縮して,トレンドの早期信号を取得する.

  3. ストップポイントを設定し,単発損失を制御します.

  4. パラメータの設定を最適化し,異なる品種と行情環境に合わせて調整する.

最適化の方向

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

  1. 平均線周期最適化。 複数のパラメータの組み合わせをテストして最適な周期を探せ。

  2. 月の線や四月の線の指標など.

  3. 追加ストップメカニズム 移動ストップまたは指数型ストップを設定する

  4. 取引量指標と組み合わせる.例えばエネルギー潮がKDJなどの指標と組み合わせる.

  5. 入場タイミングを最適化.MACDなどのより敏感な指標の補助も考慮できる.

  6. 多品種適応最適化 調整パラメータが多品種適応

要約する

この戦略は,双均線交差とトレンド追跡システムを統合し,それぞれの優位性を効果的に発揮し,単一のシステムの問題を回避できます.多時間次元判断は,取引方向の正しさを保証し,撤回制御は良好です.さらに最適化することで,より多くの市場環境に適応し,実戦価値があります.

ストラテジーソースコード
/*backtest
start: 2023-09-20 00:00:00
end: 2023-09-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © askkuldeeprandhawa

//@version=4

strategy("KSR Strategy", overlay=true)



par1=input(10)
par2=input(20)
ema1=ema(close,par1)
ema2=ema(close,par2)
buy=ema1>ema2
sell=ema2<ema1
mycolor= iff(buy,color.green,iff(sell,color.blue,color.red))
barcolor(color=mycolor)



ema100=ema(close,100)
ibuy=crossover(ema1,ema2)
iSell=crossunder(ema1,ema2)

varp=tostring(close[1])
plotshape(ibuy, "Up Arrow", shape.triangleup, location.belowbar, color.green, 0, 0,"Buy" , color.green, true, size.tiny)
plotshape(iSell, "Down Arrow", shape.triangledown, location.abovebar, color.red, 0, 0, "Sell", color.red, true, size.tiny)

crossed =crossover(ema(close,par1), ema(close,par2))
// if crossed
//     l = label.new(bar_index, na, tostring(close), 
//          color=color.green, 
//          textcolor=color.white,
//          style=label.style_labelup, yloc=yloc.belowbar)
         
crossed2 =crossunder(ema(close,par1), ema(close,par2))
// if crossed2
//     l = label.new(bar_index, na, tostring(close), 
//          color=color.red, 
//          textcolor=color.white,
//          style=label.style_labeldown, yloc=yloc.abovebar)
         
plot(ema(close,par1),"EMA Short",color=color.white)
plot(ema(close,par2),"EMA Long",color=color.orange)


longCondition = crossover(ema(close, par1), ema(close, par2))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = crossunder(ema(close, par1), ema(close, par2))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)




ma1_len = input(title="MA1", type=input.integer, defval=8, minval=1, maxval=100, step=1)
ma2_len = input(title="MA2", type=input.integer, defval=12, minval=1, maxval=100, step=1)

o = ema(open, ma1_len)
c = ema(close, ma1_len)
h = ema(high, ma1_len)
l = ema(low, ma1_len)

tim1=input('D',"Short Time")
tim2=input('W',"Long Time")

ema_p=input(title="EMA Period", type=input.integer, defval=16, minval=1, maxval=100, step=1)
refma = ema(close, ema_p)
plot(refma, title="EMA" , linewidth=1, color=close < refma ? color.orange : color.blue)
ha_t = heikinashi(syminfo.tickerid)
ha_o = security(ha_t, tim2, o)
ha_c = security(ha_t, tim2, c)
ha_h = security(ha_t, tim2, h)
ha_l = security(ha_t, tim2, l)
o2 = ema(ha_o, ma2_len)
c2 = ema(ha_c, ma2_len)
h2 = ema(ha_h, ma2_len)
l2 = ema(ha_l, ma2_len)
ha_col = ha_c > ha_o ? color.red : color.green
plotshape(true, style=shape.circle, color=ha_c > ha_o ? color.green : color.red, location=location.bottom)


ha_t1 = heikinashi(syminfo.tickerid)
ha_o1 = security(ha_t1, tim1, o)
ha_c1 = security(ha_t1, tim1, c)
ha_h1 = security(ha_t1, tim1, h)
ha_l1 = security(ha_t1, tim1, l)
o3 = ema(ha_o1, ma2_len)
c3 = ema(ha_c1, ma2_len)
h3 = ema(ha_h1, ma2_len)
l3 = ema(ha_l1, ma2_len)
ha_col1 = ha_c1 > ha_o1 ? color.red : color.green
plotshape(true, style=shape.circle, color=ha_c1 > ha_o1 ? color.green : color.red, location=location.top)