Chiến lược này được thiết kế dựa trên chéo vàng và chéo chết của trung bình di chuyển nhanh và chậm. Khi MA nhanh vượt qua trên MA chậm, đi dài. Khi MA nhanh vượt dưới MA chậm, đi ngắn. Chiến lược này phù hợp với giao dịch trung hạn đến dài hạn và có thể nắm bắt sự đảo ngược xu hướng trên thị trường.
Chiến lược này sử dụng đường trung bình động theo cấp số nhân (EMA) để tính toán đường nhanh và đường chậm. Độ dài MA nhanh là 10 giai đoạn và chiều dài MA chậm là 30 giai đoạn. Chiến lược đầu tiên tính toán đường EMA nhanh và đường EMA chậm, sau đó vẽ các đường và hiển thị nền màu khác nhau để chỉ hướng xu hướng.
Khi đóng cửa ngày hôm nay nằm trên MA nhanh và MA nhanh nằm trên MA chậm, nền màu xanh lá cây, cho thấy xu hướng tăng. Khi đóng cửa ngày hôm nay nằm dưới MA nhanh và MA nhanh nằm dưới MA chậm, nền màu đỏ, cho thấy xu hướng giảm.
Trong một xu hướng tăng, nếu có một ngọn nến màu đỏ (khép dưới mở) và hôm qua cũng là một ngọn nến màu đỏ, đi dài. Đặt dừng lỗ ở 300 điểm và lấy lợi nhuận bằng cách đóng vị trí ngắn.
Trong xu hướng giảm, nếu có một ngọn nến màu xanh lá cây (khép trên mở) và hôm qua cũng là một ngọn nến màu xanh lá cây, đi ngắn.
Sau khi mở một vị trí theo mỗi hướng, nếu thời gian giữ vượt quá 1008000000 mili giây (khoảng 2 tuần), buộc phải đóng vị trí để ngăn chặn bế tắc.
Nhìn chung, chiến lược này khá cân bằng, sử dụng EMA kép cho xu hướng và các bộ lọc nến với các quy tắc bổ sung để tránh tín hiệu sai. Nhưng các thông số EMA và các quy tắc dừng lỗ / lợi nhuận cần tối ưu hóa hơn nữa.
/*backtest start: 2023-10-10 00:00:00 end: 2023-11-09 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © yeainshukla //@version=5 strategy('BuyRedSellGreen4H', overlay = true) greenCandle = close > open redCandle = open > close start = timestamp(2023,9,18,0,00) end = timestamp(2023,12,31,0,00) fastLength = input.int(10, title="Fast Average Length") slowLength = input.int(30, title="Slow Average Length") averageData = input.source(close, title="Average Data Source") // Calculate exponential moving averages fastAverage = ta.ema(averageData, fastLength) slowAverage = ta.ema(averageData, slowLength) // Plot averages plot(fastAverage, color=color.navy, title="Fast EMA") plot(slowAverage, color=color.fuchsia, linewidth=2, title="Slow EMA") // Show the moving average trend with a coloured background backgroundColor = if close > fastAverage and fastAverage > slowAverage color.new(color.green, 85) else if close < fastAverage and fastAverage < slowAverage color.new(color.red, 85) else color.new(color.orange, 90) bgcolor(backgroundColor, title="EMA Background") if time >= start and time < end if(close < open) if(close[1] < open[1]) strategy.entry("Enter Long", strategy.long) strategy.exit("Exit Long", from_entry="Enter Long") strategy.close("Enter Short") else if(close[1] > open[1]) strategy.entry("Enter Short", strategy.short) strategy.exit("Exit Short", from_entry="Enter Short") strategy.close("Enter Long") if strategy.position_size < 0 or strategy.position_size > 0// short and long is opened. if((time - strategy.opentrades.entry_time(strategy.opentrades - 1)) > 1008000000) strategy.close("Enter Short") strategy.close("Enter Long")