
Chiến lược này là một chiến lược giao dịch theo dõi xu hướng dựa trên hệ thống đường hai chiều, kết hợp với chỉ số di chuyển trung bình ((EMA) trong phân tích kỹ thuật, mua bằng cách đặt đơn giá giới hạn ở vị trí EMA20. Chiến lược sử dụng phương pháp quản lý tiền bảo thủ, giao dịch mỗi lần chỉ với 10% lợi nhuận trên tài khoản và thiết lập điểm dừng để kiểm soát rủi ro. Chiến lược sử dụng đường trung bình di chuyển chỉ số hai chu kỳ 30 ngày và 300 ngày để xác định xu hướng thị trường, chỉ tìm kiếm cơ hội khi thị trường có xu hướng tăng lên.
Lập luận cốt lõi của chiến lược này dựa trên những điểm then chốt sau:
Chiến lược này xây dựng một hệ thống giao dịch tương đối ổn định bằng cách kết hợp hệ thống thống nhất định trong phân tích kỹ thuật và các quy tắc kiểm soát rủi ro nghiêm ngặt. Ưu điểm cốt lõi của chiến lược là tính năng theo dõi xu hướng và cơ chế quản lý rủi ro tốt, tối ưu hóa giá nhập cảnh bằng cách giới hạn giá cả, đồng thời kiểm soát rủi ro bằng cách quản lý quỹ bảo thủ. Mặc dù chiến lược có thể hoạt động kém trong thị trường bất ổn, nhưng bằng hướng tối ưu hóa được đề xuất, có thể nâng cao hơn nữa sự ổn định và khả năng lợi nhuận của chiến lược.
/*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"}]
*/
//@version=5
strategy("Limit Buy at EMA20 (Last 30 Days)", overlay=true)
// Inputs for EMAs
ema20Length = input.int(30, title="EMA 20 Length")
ema300Length = input.int(300, title="EMA 300 Length")
tpPercentage = input.float(10.0, title="Take Profit (%)", step=0.1) / 100
slPercentage = input.float(5.0, title="Stop Loss (%)", step=0.1) / 100 // Stop loss at 15%
// Calculate EMAs
ema20 = ta.ema(close, ema20Length)
ema300 = ta.ema(close, ema300Length)
// Plot EMAs
plot(ema20, color=color.blue, title="EMA 20")
plot(ema300, color=color.red, title="EMA 300")
// Limit backtesting to the last 30 days
startTime = timestamp(year(timenow), month(timenow), dayofmonth(timenow) - 30, 0, 0)
if (time < startTime)
strategy.close_all()
strategy.cancel_all()
// Entry Condition: Price above EMA300
longCondition = close > ema300 and time >= startTime
// Calculate position size (10% of equity)
positionSize = strategy.equity * 0.10 / ema20 // Use EMA20 as the limit price
// Place a limit buy order at EMA20
if (longCondition)
strategy.order("Limit Buy", strategy.long, qty=positionSize, limit=ema20)
// Calculate TP and SL levels
tpPrice = ema20 * (1 + tpPercentage)
slPrice = ema20 * (1 - slPercentage)
// Set take profit and stop loss
if (strategy.position_size > 0)
strategy.exit("Take Profit/Stop Loss", "Limit Buy", stop=slPrice, limit=tpPrice)