2つの移動平均のクロスオーバートレンド追跡戦略

作者: リン・ハーンチャオチャン, 日時: 2023-09-28 11:52:16
タグ:

概要

この戦略は,トレンドを決定し,追跡するためにトレンド追跡指標と組み合わせた二重移動平均クロスオーバー原則を使用する.主なアイデアは,短期移動平均が長期移動平均を超えるとロングに移動し,短期移動平均が長期移動平均を下回るとショートに移動することです.全体的なトレンド方向は,誤ったブレイクを避けるために100日移動平均によって決定されます.

戦略の論理

この戦略は主に二重移動平均クロスオーバーシステムとトレンド追跡システムで構成されています.

デュアル移動平均クロスオーバーシステムには,高速EMA1と遅いEMA2が含まれます.デフォルト期間はEMA1の10日とEMA2の20日です.EMA1がEMA2を超えると購入信号が生成されます.EMA1がEMA2を下回ると販売信号が生成されます.

100日間のEMA (EMA100) は,全体的なトレンド方向を決定するために追加されます. 価格が上昇傾向にあるとき (価格が100日間のEMAよりも高いとき) 購入信号は生成されます. 価格が下落傾向にあるとき (価格が100日間のEMAよりも低いとき) 販売信号は生成されます. これにより,ほとんどの偽のブレイクアウト状況がフィルタリングされます.

買って売る矢印もキャンドルに描かれていて 取引信号を視覚的に表示します

トレンドトラッキングシステムは,トレンド方向を再確認するために,日内線とサイクル日線を使用する.日内線は日々の線の8日および12日間の移動平均を使用する一方で,日内線は5分および60分ヘイキン・アシ移動平均を使用する.

取引シグナルは,日内とサイクル判断が一致するときにのみ生成される.これは,主要なトレンド方向ではないノイズの大半をさらにフィルターします.

利点分析

この戦略の最大の利点は,トレンド追跡と移動平均のクロスオーバーシステムの統合であり,誤った信号を効果的にフィルタリングし,引き上げを許容可能な水準にとどめます.

具体的には,二重移動平均クロスオーバーシステムの利点は以下の通りである.

  1. シンプルな論理と分かりやすい,初心者にとって適しています.

  2. トレンドフォロー トレンドに逆らって取引しない

  3. 異なるサイクルに適応できる 速いEMAと遅いEMA期間をカスタマイズできます

  4. 主要なトレンドで強い収益性

EMA100 を追加すると,次の利点があります.

  1. トレンドに反して取引を避け 損失を減らす

  2. 傾向を追求し 引き上げを制御できるようにする

トレンド追跡システムには以下の利点があります.

  1. 複数のタイムフレーム分析で 単一の期間からの騒音を避ける

  2. 主要なトレンド方向に一致し 引き上げを減らす

  3. ハイキン・アシは騒音を消し 傾向を捉えるだけです

リスク分析

この戦略に注意すべきリスクは:

  1. 長期間の konsolide の際の頻繁なクロスオーバーと追加的な取引コスト

  2. 遅れた信号,初期のトレンド段階を逃している.

  3. 大規模なトレンドが逆転すると 深刻な損失を被る

  4. パラメータ最適化によって性能が向上します

解決策:

  1. 取引の頻度を調整する.

  2. EMA 期間を短縮して,より早いトレンドシグナルを得る.

  3. 単一の損失を制御するためにストップ損失を使用します.

  4. 異なる製品と市場条件に合わせてパラメータを最適化する.

オプティマイゼーションの方向性

この戦略は,次の分野において最適化できます.

  1. EMA期間の最適化 最適な期間の組み合わせをテストする

  2. タイムフレームの判断を追加します.例:月額または四半期線.

  3. 移動式や指数式ストップのようなストップ・ロスのメカニズムを組み込む

  4. バランス・ボリューム (On Balance Volume) のようなボリューム・インジケーターと組み合わせます

  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)







もっと