
Chiến lược này là một chiến lược giao dịch theo dõi xu hướng và đảo ngược dựa trên nhiều chỉ số động trung bình (EMA) để xác định xu hướng thị trường và tạo tín hiệu giao dịch bằng cách phân tích vị trí tương đối của EMA của các chu kỳ khác nhau. Chiến lược sử dụng ba chu kỳ khác nhau của chỉ số động trung bình (10 chu kỳ, 20 chu kỳ và 30 chu kỳ) để xây dựng khung quyết định giao dịch nhằm nắm bắt sự thay đổi sớm của xu hướng và thực hiện các bước vào và ra chính xác.
Các nguyên tắc cốt lõi của chiến lược được xây dựng dựa trên các bước quan trọng sau:
Chiến lược giao dịch đảo ngược xu hướng trung bình di chuyển đa chỉ số cung cấp một phương pháp giao dịch xu hướng động và tương đối ổn định thông qua phân tích EMA tinh tế. Cốt lõi của chiến lược là nắm bắt các điểm thay đổi xu hướng và đưa ra quyết định giao dịch dựa trên mối quan hệ tương đối của EMA đa chu kỳ. Mặc dù có một số rủi ro, nhưng bằng cách tối ưu hóa và quản lý rủi ro liên tục, bạn có thể nâng cao đáng kể sự ổn định và khả năng lợi nhuận của chiến lược.
/*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