
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 moving average ((EMA) của nhiều chỉ số. Bằng cách sử dụng các đường EMA của ba chu kỳ khác nhau ((10, 30, 50), kết hợp với giá vượt qua và định hướng xu hướng, xây dựng một hệ thống tín hiệu mua và bán hoàn chỉnh.
Chiến lược này sử dụng cơ chế phán đoán cấp bậc để xác định tín hiệu giao dịch:
Đây là một chiến lược theo dõi xu hướng được thiết kế hợp lý, logic rõ ràng. Bằng cách sử dụng nhiều đường trung bình, nó đảm bảo sự ổn định của chiến lược và cung cấp tín hiệu giao dịch rõ ràng. Mặc dù có một số rủi ro bị tụt hậu, nhưng thông qua các biện pháp tối ưu hóa và kiểm soát rủi ro hợp lý, chiến lược tổng thể thể hiện giá trị thực tế tốt.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © banyat6913
//@version=5
strategy("EMA Trend Strategy", overlay=true)
// Input Parameters
ema_short_length = input.int(10, title="EMA Short Length", minval=1)
ema_mid_length = input.int(30, title="EMA Mid Length", minval=1)
ema_long_length = input.int(50, title="EMA Long Length", minval=1)
// Calculate EMA
ema_short = ta.ema(close, ema_short_length)
ema_mid = ta.ema(close, ema_mid_length)
ema_long = ta.ema(close, ema_long_length)
// **TREND UP**
// 1. EMA 10 > EMA 30 > EMA 50
uptrend_condition = ema_short > ema_mid and ema_mid > ema_long
// 2. Bullish Candle Crossing Up EMA 30
bullish_candle = close > open
cross_up_ema_mid = ta.crossover(close, ema_mid)
// 3. If EMA 30 crosses down EMA 50 -> Close Buy Order
ema_30_cross_down_50 = ta.crossunder(ema_mid, ema_long)
// Buy Signal
buy_signal = uptrend_condition and cross_up_ema_mid
// Sell Signal for closing Buy Order
close_buy_signal = ema_30_cross_down_50
// **TREND DOWN**
// 1. EMA 50 > EMA 30 > EMA 10
downtrend_condition = ema_long > ema_mid and ema_mid > ema_short
// 2. Bearish Candle Crossing Down EMA 30
bearish_candle = close < open
cross_down_ema_mid = ta.crossunder(close, ema_mid)
// 3. If EMA 30 crosses up EMA 50 -> Close Sell Order
ema_30_cross_up_50 = ta.crossover(ema_mid, ema_long)
// Sell Signal
sell_signal = downtrend_condition and cross_down_ema_mid
// Buy Signal for closing Sell Order
close_sell_signal = ema_30_cross_up_50
// Backtesting Logic
if (buy_signal)
strategy.entry("Buy", strategy.long)
if (close_buy_signal)
strategy.close("Buy")
if (sell_signal)
strategy.entry("Sell", strategy.short)
if (close_sell_signal)
strategy.close("Sell")
// Plot EMA Lines
plot(ema_short, color=color.blue, title="EMA 10")
plot(ema_mid, color=color.orange, title="EMA 30")
plot(ema_long, color=color.green, title="EMA 50")
// Plot Buy and Sell Signals on Chart
plotshape(buy_signal, style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), text="BUY", title="Buy Signal")
plotshape(close_buy_signal, style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), text="CLOSE BUY", title="Close Buy Signal")
plotshape(sell_signal, style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), text="SELL", title="Sell Signal")
plotshape(close_sell_signal, style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), text="CLOSE SELL", title="Close Sell Signal")