
Chiến lược chéo hai đường bằng nhau là một chiến lược giao dịch theo xu hướng cổ điển. Chiến lược này sử dụng hai đường trung bình di chuyển, một là đường trung bình di chuyển nhanh và một là đường trung bình di chuyển chậm. Khi đường trung bình di chuyển nhanh đi từ trên xuống đường trung bình di chuyển chậm, nó được gọi là “gold crossing”, cho thấy xu hướng tăng có thể được hình thành, tại thời điểm đó mở nhiều vị trí.
Cốt lõi của chiến lược này là sử dụng các đặc tính xu hướng và tín hiệu giao chéo của đường trung bình di chuyển để xác định hướng xu hướng và thời gian mở vị trí. Đầu tiên, bạn đặt các tham số cho các chu kỳ của đường trung bình di chuyển nhanh (bằng mặc định 50) và đường trung bình di chuyển chậm (bằng mặc định 200) và chọn sử dụng SMA hoặc EMA. Sau đó, tính toán hai đường trung bình di chuyển để xác định sự giao chéo của chúng:
Chiến lược chéo hai đường bằng nhau là một chiến lược theo dõi xu hướng đơn giản và cổ điển, đánh giá định hướng xu hướng và thời gian mở vị trí bằng cách chéo hai trung bình di chuyển có chu kỳ khác nhau, phù hợp để nắm bắt xu hướng trung và dài hạn. Tuy nhiên, tham số cố định có thể hoạt động không ổn định trong môi trường thị trường thay đổi, cần phải được tối ưu hóa hơn nữa để trở thành một chiến lược giao dịch tương đối ổn định. Chiến lược này có thể làm nền tảng cho chiến lược xu hướng và liên tục cải thiện và mở rộng trên cơ sở này.
/*backtest
start: 2023-05-11 00:00:00
end: 2024-05-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
//==============================================================================
// A baseline strategy with a well known concept, golden cross & death cross.
// Support for both Simple & Exponential moving averages.
// Support for long & short stop losses as a percentage.:well
//==============================================================================
strategy("Basic Moving Average Crosses", overlay=true)
//------------------------------------------------------------------------------
// configuration
//------------------------------------------------------------------------------
maQuickLength = input(50, title="Quick MA Length")
maSlowLength = input(200, title="Quick MA Length")
useSma = input(true, title="Use SMA? If false, EMA is used.")
maQuick = useSma ? ta.sma(close, maQuickLength) : ta.ema(close, maQuickLength)
maSlow = useSma ? ta.sma(close, maSlowLength) : ta.ema(close, maSlowLength)
stop_loss_percentage = input(2.0, title="Stop Loss (%)")
var float longStopLevel = na
var float shortStopLevel = na
bool isGoldenCross = ta.crossover(maQuick, maSlow)
bool isDeathCross = ta.crossunder(maQuick, maSlow)
//------------------------------------------------------------------------------
// position opening logic
//------------------------------------------------------------------------------
if(strategy.position_size == 0)
// Golden cross, enter a long position
if(isGoldenCross)
strategy.entry("Buy", strategy.long)
longStopLevel := close - close * stop_loss_percentage/100.0
strategy.exit("StopLossLong", "Buy", stop=longStopLevel)
// Death cross, enter short position
else if(isDeathCross)
strategy.entry("Sell", strategy.short)
shortStopLevel := close + close * stop_loss_percentage/100.0
strategy.exit("StopLossShort", "Sell", stop=shortStopLevel)
//------------------------------------------------------------------------------
// position closing logic
//------------------------------------------------------------------------------
else
// Close long position on death cross
if(strategy.position_size > 0 and isDeathCross)
strategy.close("Buy")
// Close short position on golden cross
else if(strategy.position_size < 0 and isGoldenCross)
strategy.close("Sell")
//------------------------------------------------------------------------------
// ploting
//------------------------------------------------------------------------------
plot(maQuick, color=color.yellow)
plot(maSlow, color=color.blue)