Chiến lược này dựa trên hình thức giao dịch của ba đường trung bình di chuyển. Khi đường trung bình di chuyển trên đường trung bình di chuyển nhanh, hãy làm nhiều hơn khi đường trung bình di chuyển trên đường trung bình di chuyển; Khi đường trung bình di chuyển dưới đường trung bình di chuyển và đường trung bình di chuyển dưới đường chậm, hãy làm trống.
Cụ thể, chiến lược này giao dịch bằng cách sử dụng các đường chéo giữa ba đường trung bình di chuyển theo chu kỳ khác nhau. Đường nhanh đại diện cho xu hướng ngắn hạn hiện tại, đường trung bình đại diện cho xu hướng trung hạn và đường chậm đại diện cho xu hướng dài hạn. Khi ba đường trung bình ngắn và dài xảy ra một lần chéo lên, nó cho thấy xu hướng bắt đầu, làm nhiều hơn; khi nó xảy ra một lần chéo xuống, nó cho thấy xu hướng đảo ngược, làm trống.
Có thể quản lý rủi ro bằng cách điều chỉnh thời gian giữ vị trí, tối ưu hóa tham số đường trung bình, giới thiệu chiến lược dừng lỗ.
Chiến lược này dựa trên định hướng của xu hướng. Lợi thế là tín hiệu giao dịch đơn giản, rõ ràng và có thể cấu hình; Nhược điểm là dễ bị tụt hậu và cần tối ưu hóa tham số. Có thể tăng hiệu quả thông qua các tham số điều chỉnh, chiến lược dừng lỗ và kiểm soát rủi ro rút lui.
/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// © DaynTrading
//@version=4
// strategy(
// title="Simple Moving Average Cross",
// overlay=true,
// initial_capital=5000,
// default_qty_type=strategy.percent_of_equity,
// default_qty_value=2,
// commission_type=strategy.commission.percent,
// commission_value=0.075,
// pyramiding=0
// )
sma_top_input = input(title="SMA Top", type=input.integer, defval=20)
sma_mid_input = input(title="SMA Mid", type=input.integer, defval=50)
sma_low_input = input(title="SMA Low", type=input.integer, defval=200)
bars_long = input(title="Long: After trigger, how many bars to wait?", type=input.integer, defval=5)
bars_short = input(title="Short: After trigger, how many bars to wait?", type=input.integer, defval=5)
sma_top = sma(close, sma_top_input)
sma_mid = sma(close, sma_mid_input)
sma_low = sma(close, sma_low_input)
long = sma_top > sma_mid and sma_mid > sma_low
short = sma_top < sma_mid and sma_mid < sma_low
long_condition = long and long[bars_long] and not long[bars_long + 1]
short_condition = short and short[bars_short] and not short[bars_short + 1]
close_long = sma_top < sma_mid and sma_mid < sma_low and not long[bars_long + 1]
close_short = sma_top > sma_mid and sma_mid > sma_low and not short[bars_short + 1]
plot(sma_top, title="SMA Top", color=#95f252, linewidth=2)
plot(sma_mid, title="SMA Mid", color=#FF1493, linewidth=2)
plot(sma_low, title="SMA Low", color=#6a0dad, linewidth=2)
strategy.entry("LongPosition", strategy.long, when = long_condition)
strategy.entry("ShortPosition", strategy.short, when = short_condition)
strategy.close("LongPosition", when = close_short)
strategy.close("ShortPosition", when = close_long)