
Chiến lược này là một hệ thống giao dịch theo dõi xu hướng dựa trên sự giao nhau của hai đường cong. Bằng cách so sánh mối quan hệ vị trí tương đối giữa trung bình di chuyển ngắn hạn và dài hạn (theo thứ tự ngày 9 và 21), chiến lược này nắm bắt được thời điểm chuyển đổi của xu hướng thị trường.
Lý luận cốt lõi của chiến lược dựa trên tín hiệu chéo của hai trung bình di chuyển theo chu kỳ khác nhau. Khi đường trung bình ngắn hạn (ngày 9) lên vượt qua đường trung bình dài hạn (ngày 21), hệ thống cho rằng động lực thị trường chuyển sang phía trên, kích hoạt nhiều tín hiệu; Khi đường trung bình ngắn hạn đi xuống vượt qua đường trung bình dài hạn, hệ thống cho rằng động lực thị trường chuyển sang phía dưới, giao dịch chấm dứt.
Đây là một chiến lược theo dõi xu hướng cổ điển và thực tế, nắm bắt sự thay đổi động lực của thị trường thông qua giao thoa hai đường ngang. Mặc dù có một số rủi ro về sự chậm trễ và tín hiệu sai, nhưng tính năng đơn giản và ổn định của nó làm cho nó trở thành một công cụ quan trọng trong lĩnh vực giao dịch định lượng.
/*backtest
start: 2024-05-20 00:00:00
end: 2024-12-13 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Simple MA Crossover Strategy", overlay=true)
// Input parameters
shortMA = ta.sma(close, 9)
longMA = ta.sma(close, 21)
// Buy/Sell conditions
buyCondition = ta.crossover(shortMA, longMA)
sellCondition = ta.crossunder(shortMA, longMA)
// Plot moving averages
plot(shortMA, color=color.blue, title="Short MA")
plot(longMA, color=color.red, title="Long MA")
// Execute trades
if (buyCondition)
strategy.entry("Buy", strategy.long)
if (sellCondition)
strategy.close("Buy")
// Track trades, wins, and losses
var int totalTrades = 0
var int totalWins = 0
var int totalLosses = 0
if (strategy.opentrades > 0)
totalTrades := totalTrades + 1
if (strategy.opentrades == 0 and strategy.opentrades[1] > 0)
if (strategy.netprofit > 0)
totalWins := totalWins + 1
else
totalLosses := totalLosses + 1
// Plot trade statistics
var label tradeStats = na
if (not na(tradeStats))
label.delete(tradeStats)
tradeStats := label.new(bar_index, high, text="Trades: " + str.tostring(totalTrades) + "\nWins: " + str.tostring(totalWins) + "\nLosses: " + str.tostring(totalLosses), style=label.style_label_down, color=color.white, textcolor=color.black)