
これは、複数の指数移動平均 (EMA) クロスオーバーに基づくトレンド追跡戦略です。この戦略では、10 期間の短期 EMA、50 期間の中期 EMA、および 200 期間の長期 EMA のクロスオーバー関係を使用して、市場のトレンドを捉え、条件が満たされたときにロングおよびショート取引を開始します。この戦略の中心的な考え方は、複数の時間枠の移動平均を通じて市場のノイズをフィルタリングし、主なトレンドの方向を特定し、トレンドが継続したときに利益を得ることです。
この戦略では、取引シグナル生成メカニズムとしてトリプル EMA クロスオーバー システムを使用します。具体的には:
この戦略は、古典的なトレンド追跡システムです。複数のEMAを協調的に使用することで、主要なトレンドを確実に把握できるだけでなく、タイムリーな損益ストップロスも可能になります。ある程度のラグはあるものの、適切なパラメータ設定とリスク管理により、トレンド市場でも安定したリターンを得ることができます。戦略の最適化の余地は大きく、他のテクニカル指標を導入したり、取引ルールを改善したりすることでパフォーマンスを向上させることができます。
/*backtest
start: 2024-12-10 00:00:00
end: 2025-01-09 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=5
strategy("EMA Crossover Strategy (Enhanced Debug)", overlay=true)
// Inputs for EMA periods
shortEMA = input.int(10, title="Short EMA Period")
mediumEMA = input.int(50, title="Medium EMA Period")
longEMA = input.int(200, title="Long EMA Period")
// Calculating EMAs
emaShort = ta.ema(close, shortEMA)
emaMedium = ta.ema(close, mediumEMA)
emaLong = ta.ema(close, longEMA)
// Plot EMAs
plot(emaShort, color=color.green, title="Short EMA")
plot(emaMedium, color=color.blue, title="Medium EMA")
plot(emaLong, color=color.red, title="Long EMA")
// Conditions for entry and exit
longCondition = close > emaLong and ta.crossover(emaShort, emaMedium) and emaMedium > emaLong
shortCondition = close < emaLong and ta.crossunder(emaShort, emaMedium) and emaMedium < emaLong
closeLongCondition = ta.crossunder(emaShort, emaMedium)
closeShortCondition = ta.crossover(emaShort, emaMedium)
// Debugging labels for unexpected behavior
if (ta.crossover(emaShort, emaLong) and not ta.crossover(emaShort, emaMedium))
label.new(bar_index, high, "Short > Long", style=label.style_circle, color=color.red, textcolor=color.white)
// Debugging EMA relationships
if (emaMedium <= emaLong)
label.new(bar_index, high, "Medium < Long", style=label.style_cross, color=color.orange, textcolor=color.white)
// Entry logic
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Exit logic
if (closeLongCondition)
strategy.close("Long")
if (closeShortCondition)
strategy.close("Short")
// Display labels for signals
plotshape(series=longCondition, style=shape.labelup, color=color.green, location=location.belowbar, title="Buy Signal")
plotshape(series=shortCondition, style=shape.labeldown, color=color.red, location=location.abovebar, title="Sell Signal")