
この戦略は,複数の指数移動平均 (EMA) をベースにしたトレンド追跡と逆転取引戦略で,異なる周期のEMAの相対的な位置を分析することによって市場トレンドを識別し,取引シグナルを生成します.この戦略は,3つの異なる周期の指数移動平均 (,10周期,20周期,30周期) を利用して,トレンド意思決定の枠組みを構築し,トレンドの早期の変化を捉え,正確な入場と出場を実現します.
戦略の核心は以下の重要なステップに基づいています.
マルチ指数移動平均トレンド逆転取引戦略は,精密なEMA分析により,動的で比較的安定したトレンド取引方法を提供します.戦略の核心は,トレンドの転換点を捉え,多周期EMAの相対的な関係に基づいて取引決定を行うことです.一定のリスクがあるにもかかわらず,継続的な最適化とリスク管理により,戦略の安定性と収益性を大幅に向上させることができます.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-03-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Perfect Order Strategy", overlay=true)
// User input - EMA periods
aPeriod = input.int(10, "EMA A Period", minval=1)
bPeriod = input.int(20, "EMA B Period", minval=1)
cPeriod = input.int(30, "EMA C Period", minval=1)
// User input - EMA colors
colorA = input.color(color.red, "EMA A Color")
colorB = input.color(color.orange, "EMA B Color")
colorC = input.color(color.aqua, "EMA C Color")
// User input - Label colors
upTColor = input.color(color.red, "UP-T Color")
downTColor = input.color(color.aqua, "Down-T Color")
endColor = input.color(color.black, "End Color")
// Calculate EMAs
emaA = ta.ema(close, aPeriod)
emaB = ta.ema(close, bPeriod)
emaC = ta.ema(close, cPeriod)
// Plot EMAs on the chart
plot(emaA, title="EMA A", color=colorA, linewidth=1)
plot(emaB, title="EMA B", color=colorB, linewidth=1)
plot(emaC, title="EMA C", color=colorC, linewidth=1)
// Condition checks
condition1 = emaA > emaB and emaB > emaC // Uptrend condition
condition2 = emaA < emaB and emaB < emaC // Downtrend condition
// Variables for state management
var bool wasCondition1 = false
var bool wasCondition2 = false
var bool endDisplayed = false // Control for displaying "End" label
// Label display logic and trade signals
if condition1 and not wasCondition1
label.new(bar_index, high, "UP-T", color=upTColor, textcolor=color.white, style=label.style_label_down)
strategy.entry("Long", strategy.long) // Enter long on "UP-T"
wasCondition1 := true
wasCondition2 := false
endDisplayed := false
else if condition2 and not wasCondition2
label.new(bar_index, low, "Down-T", color=downTColor, textcolor=color.black, style=label.style_label_up)
strategy.entry("Short", strategy.short) // Enter short on "Down-T"
wasCondition2 := true
wasCondition1 := false
endDisplayed := false
else if (not condition1 and wasCondition1) or (not condition2 and wasCondition2)
if not endDisplayed
label.new(bar_index, high, "End", color=endColor, textcolor=color.white, style=label.style_label_down)
strategy.close_all() // Close all positions on "End"
endDisplayed := true
wasCondition1 := false
wasCondition2 := false
else if not condition1 and not condition2
wasCondition1 := false
wasCondition2 := false
endDisplayed := false