
この戦略は,多層の移動平均 ((SMA)) に基づくトレンド追跡システムで,精密な分筆の交差検知技術と組み合わせている. 20,50,100,および200周期の移動平均の階層的な関係によって市場のトレンドを決定し,リアルタイムの価格と移動平均の交差を使用して取引シグナルを誘発する. 戦略は,異なる時間帯と取引時間の普遍性を十分に考慮して設計されており,様々な時間周期のグラフで動作することができます.
策略は3層のトレンドフィルタリング機構を採用し,50周期平均線が100周期平均線上にあることを要求し,100周期平均線が200周期平均線上にあることが上昇傾向を確認し,逆に下降傾向を確認する.入場信号は50周期平均線と価格の交差に基づいており,分筆データを使用して正確な交差検知を実現し,現在の価格行動と前K線の位置関係を比較して交差が発生したタイミングを決定する.出場信号は20周期平均線との価格の関係によって決定され,価格が20周期平均線を突破すると平仓信号を触発する.
これは,構造が整った,論理が明確なトレンド追跡戦略で,複数の層の移動平均の配合による使用により,信号の信頼性が保証され,トレンドの効果的な追跡が可能である.戦略の設計は,実用性と普遍性を十分に考慮し,異なる市場環境で使用するのに適している.さらなる最適化と改善により,この戦略は,実際の取引でより良いパフォーマンスを期待されている.
/*backtest
start: 2024-02-22 00:00:00
end: 2024-06-25 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Multi-SMA Strategy - Core Signals", overlay=true)
// ———— Universal Inputs ———— //
int smaPeriod1 = input(20, "Fast SMA")
int smaPeriod2 = input(50, "Medium SMA")
bool useTickCross = input(true, "Use Tick-Precise Crosses")
// ———— Timezone-Neutral Calculations ———— //
sma20 = ta.sma(close, smaPeriod1)
sma50 = ta.sma(close, smaPeriod2)
sma100 = ta.sma(close, 100)
sma200 = ta.sma(close, 200)
// ———— Tick-Precise Cross Detection ———— //
golden_cross = useTickCross ?
(high >= sma50 and low[1] < sma50[1]) :
ta.crossover(sma20, sma50)
death_cross = useTickCross ?
(low <= sma50 and high[1] > sma50[1]) :
ta.crossunder(sma20, sma50)
// ———— Trend Filter ———— //
uptrend = sma50 > sma100 and sma100 > sma200
downtrend = sma50 < sma100 and sma100 < sma200
// ———— Entry Conditions ———— //
longCondition = golden_cross and uptrend
shortCondition = death_cross and downtrend
// ———— Exit Conditions ———— //
exitLong = ta.crossunder(low, sma20)
exitShort = ta.crossover(high, sma20)
// ———— Strategy Execution ———— //
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)
strategy.close("Long", when=exitLong)
strategy.close("Short", when=exitShort)
// ———— Clean Visualization ———— //
plot(sma20, "20 SMA", color.new(color.blue, 0))
plot(sma50, "50 SMA", color.new(color.red, 0))
plot(sma100, "100 SMA", color.new(#B000B0, 0), linewidth=2)
plot(sma200, "200 SMA", color.new(color.green, 0), linewidth=2)
// ———— Signal Markers ———— //
plotshape(longCondition, "Long Entry", shape.triangleup, location.belowbar, color.green, 0)
plotshape(shortCondition, "Short Entry", shape.triangledown, location.abovebar, color.red, 0)
plotshape(exitLong, "Long Exit", shape.xcross, location.abovebar, color.blue, 0)
plotshape(exitShort, "Short Exit", shape.xcross, location.belowbar, color.orange, 0)