
この戦略は,複数の時間枠の指数移動平均 ((EMA) と200期EMAフィルターに基づくトレンド追跡戦略である.その主要な考え方は,異なる時間枠のEMAを使用して市場のトレンド方向を識別し,トレンドが上昇し,価格が200期EMA上にあるときに多項を確立することです.このようにして,継続的な上昇状況を把握するために,継続的な上昇傾向の中でのみ取引を確実にし,同時に,リスク管理のために止損と止損のメカニズムを利用することができます.
戦略は,5分,15分および30分の3つの時間枠を使用して,それぞれ高速EMAと遅いEMAを計算します.各時間枠の高速EMAと遅いEMAを比較することで,その時間枠のトレンド方向を判断できます.そして,3つの時間枠のトレンドシグナルを合計して,総合的なトレンドシグナルが得られます.総合的なトレンドシグナルが3であるとき (つまり,すべての時間枠は上昇傾向にあります) そして現在の収束価格が5分200EMA期を超えているとき,戦略はポジションを開きます.
この戦略は,複数のタイムフレームのEMAを比較してトレンドの方向を判断し,200期EMAをトレンドフィルターとして使用し,トレンドが明らかに上向きで,価格が長期平均線上にあるときに多項を確立し,強な動きを把握します. 厳格な開場条件と固定されたストップ・ストップは,リスクを制御するのに役立ちます. しかし,この戦略は,トレンドの転換点に反応することが遅い,ストップ・ストップの位置は固定され,市場の突発的な波動に反応する際には制限があります. 将来の戦略の適応性や安定性は,より多くの時間枠を導入し,ストップ・ロスを最適化し,より多くの取引シグナルを追加し,パラメータを最適化することで,市場機会をよりうまく把握し,リスクを制御できるようにすることができます.
/*backtest
start: 2023-05-17 00:00:00
end: 2024-05-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Multi-Timeframe Trend Following with 200 EMA Filter - Longs Only", shorttitle="MTF_TF_200EMA_Longs", overlay=true, initial_capital=1000, default_qty_type=strategy.fixed, default_qty_value=1)
// Inputs
fast_length = input.int(9, title="Fast EMA Length", minval=1)
slow_length = input.int(21, title="Slow EMA Length", minval=1)
filter_length_200 = input.int(200, title="200 EMA Length", minval=1)
stop_loss_perc = input.float(1.0, title="Stop Loss Percentage", minval=0.1) / 100
take_profit_perc = input.float(3.0, title="Take Profit Percentage", minval=0.1) / 100
// Calculate EMAs for 5-minute, 15-minute, and 30-minute timeframes
ema_fast_5min = request.security(syminfo.tickerid, "5", ta.ema(close, fast_length), lookahead=barmerge.lookahead_on)
ema_slow_5min = request.security(syminfo.tickerid, "5", ta.ema(close, slow_length), lookahead=barmerge.lookahead_on)
ema_fast_15min = request.security(syminfo.tickerid, "15", ta.ema(close, fast_length), lookahead=barmerge.lookahead_on)
ema_slow_15min = request.security(syminfo.tickerid, "15", ta.ema(close, slow_length), lookahead=barmerge.lookahead_on)
ema_fast_30min = request.security(syminfo.tickerid, "30", ta.ema(close, fast_length), lookahead=barmerge.lookahead_on)
ema_slow_30min = request.security(syminfo.tickerid, "30", ta.ema(close, slow_length), lookahead=barmerge.lookahead_on)
// Calculate 200 EMA for the 5-minute timeframe
ema_200_5min = ta.ema(close, filter_length_200)
// Determine the trend for each timeframe
trend_5min = ema_fast_5min > ema_slow_5min ? 1 : -1
trend_15min = ema_fast_15min > ema_slow_15min ? 1 : -1
trend_30min = ema_fast_30min > ema_slow_30min ? 1 : -1
// Combine trend signals
combined_trend = trend_5min + trend_15min + trend_30min
// Define entry and exit conditions with 200 EMA filter
enter_long = combined_trend == 3 and close > ema_200_5min
exit_long = combined_trend < 3 or close < ema_200_5min
// Plot EMAs for the 5-minute timeframe
plot(ema_fast_5min, color=color.blue, linewidth=2, title="Fast EMA 5min")
plot(ema_slow_5min, color=color.red, linewidth=2, title="Slow EMA 5min")
plot(ema_200_5min, color=color.green, linewidth=2, title="200 EMA 5min")
// Strategy execution
if (enter_long)
strategy.entry("Long", strategy.long, stop=close * (1 - stop_loss_perc), limit=close * (1 + take_profit_perc))
if (exit_long)
strategy.close("Long")