Chiến lược xu hướng tăng đa EMA là một chiến lược theo xu hướng dựa trên nhiều đường trung bình động theo cấp số nhân (EMA) của các giai đoạn khác nhau để xác định xu hướng. Nó đi dài khi giá vượt quá đường EMA 10 ngày và các đường EMA dài hơn khác đang được sắp xếp theo hướng tăng; và sử dụng mức dừng lỗ 8% để khóa lợi nhuận.
Chiến lược này sử dụng 6 EMA của các giai đoạn 10, 20, 50, 100, 150 và 200 ngày. Các EMA này được sử dụng để xác định giai đoạn chu kỳ hiện tại của thị trường. Khi các EMA ngắn hơn (ví dụ 10 ngày) vượt qua các EMA dài hơn (ví dụ 20-, 50 ngày), nó báo hiệu thị trường đã bước vào giai đoạn đánh dấu của xu hướng tăng.
Cụ thể, chiến lược sẽ kéo dài khi đáp ứng các điều kiện sau:
Sau khi mở vị trí dài, lệnh dừng lỗ 8% được sử dụng để khóa lợi nhuận. Điều đó có nghĩa là vị trí sẽ được giữ mở miễn là giá không giảm hơn 8% so với giá nhập cảnh. Một khi mức rút vượt quá 8%, vị trí sẽ được đóng để dừng lỗ.
Tóm lại, ý tưởng chính của chiến lược này là bước vào xu hướng tăng khi được xác nhận bởi sự sắp xếp EMA nhiều lần, và sử dụng dừng lỗ để khóa lợi nhuận.
Chiến lược xu hướng tăng giá Multi-EMA có những điểm mạnh chính sau:
Ngoài ra còn có một số rủi ro cần lưu ý cho chiến lược này:
Để đối phó với những rủi ro này, chúng ta có thể tối ưu hóa bằng cách điều chỉnh các khoảng thời gian EMA hoặc kết hợp các chỉ số phụ để cải thiện phán đoán.
Xem xét các đặc điểm của chiến lược này, việc tối ưu hóa trong tương lai có thể tập trung vào các khía cạnh sau:
Nhìn chung, Chiến lược xu hướng bò đa EMA là một hệ thống theo xu hướng mạnh mẽ và đáng tin cậy, cân bằng xác định xu hướng và kiểm soát rủi ro. Vẫn có tiềm năng cải thiện lớn thông qua điều chỉnh tham số và tối ưu hóa thuật toán. Đây là một chiến lược hiệu quả đáng thử và nghiên cứu.
/*backtest start: 2023-01-15 00:00:00 end: 2024-01-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('SirSeff\'s EMA Rainbow', overlay=true) // Testing Start dates testStartYear = input(2000, 'Backtest Start Year') testStartMonth = input(1, 'Backtest Start Month') testStartDay = input(1, 'Backtest Start Day') testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0) //Stop date if you want to use a specific range of dates testStopYear = input(2100, 'Backtest Stop Year') testStopMonth = input(12, 'Backtest Stop Month') testStopDay = input(30, 'Backtest Stop Day') testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0) testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false // Component Code Stop //TSP trailStop = input.float(title='Long Trailing Stop (%)', minval=0.0, step=0.1, defval=8) * 0.01 longStopPrice = 0.0 longStopPrice := if strategy.position_size > 0 stopValue = close * (1 - trailStop) math.max(stopValue, longStopPrice[1]) else 0 //PLOTS plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Long Trail Stop', offset=1, title='Long Trail Stop') plot(ta.ema(close, 20)) plot(ta.ema(close, 50)) plot(ta.ema(close, 100)) plot(ta.ema(close, 150)) plot(ta.ema(close, 200)) //OPEN longCondition = ta.ema(close, 10) > ta.ema(close, 20) and ta.ema(close, 20) > ta.ema(close, 50) and ta.ema(close, 100) > ta.ema(close, 150) and ta.ema(close, 150) > ta.ema(close, 200) if longCondition and ta.crossover(close,ta.ema(close,10)) and testPeriod() strategy.entry("BUY1", strategy.long) if longCondition and ta.crossover(ta.ema(close,10),ta.ema(close,20)) and testPeriod() strategy.entry("BUY2'", strategy.long) //CLOSE @ TSL if strategy.position_size > 0 and testPeriod() strategy.exit(id='TSP', stop=longStopPrice)