Chiến lược giao dịch đảo chiều dựa trên EMA 255 và MACD


Ngày tạo: 2023-09-20 15:08:14 sửa đổi lần cuối: 2023-09-20 15:08:14
sao chép: 0 Số nhấp chuột: 748
1
tập trung vào
1617
Người theo dõi

Tổng quan

Chiến lược này sử dụng các chỉ số EMA và MACD trong 255 chu kỳ để tìm kiếm cơ hội giao dịch đảo ngược. Khi giá rời khỏi 255 EMA, khi MACD xảy ra Gold Fork hoặc Dead Fork, thì bước vào đảo ngược.

Nguyên tắc chiến lược

  1. Sử dụng 255 chu kỳ EMA để đánh giá xu hướng trung và dài hạn. Giá đi xa EMA đại diện cho việc đi vào khu vực quá mua quá bán.

  2. EMA trên thiết lập lên đường ray, EMA dưới thiết lập xuống đường ray, chiều rộng đường ray được điều chỉnh động thông qua chỉ số ATR.

  3. Khi giá cao hơn đường ray là khu vực mua quá mức, khi giá thấp hơn đường ray là khu vực bán quá mức. Trong những trường hợp này, hãy chờ tín hiệu đảo ngược.

  4. Chỉ số MACD sử dụng tham số tiêu chuẩn ((12,26,9)). Khi MACD Gold Forks là tín hiệu đa đầu, khi chết Forks là tín hiệu đầu trống.

  5. Kết hợp các tín hiệu EMA và MACD, tham gia vào một bước ngược khi giá rời khỏi EMA và MACD đảo ngược.

Phân tích lợi thế

  1. Sử dụng 255 chu kỳ EMA có thể đánh giá tốt hơn xu hướng trung và dài hạn.

  2. MACD Gold Fork Dead Fork có thể nắm bắt cơ hội đảo ngược ngắn hạn một cách nhạy cảm hơn.

  3. Định vị đường quỹ đạo EMA lên xuống có thể xác định khu vực quá mua quá bán và tránh đi theo xu hướng.

  4. Chiến lược giao dịch đảo ngược, có thể vào trước khi giá đảo ngược, có một số kế hoạch.

  5. Việc sử dụng ATR dừng động có thể kiểm soát rủi ro hiệu quả.

Phân tích rủi ro

  1. Tín hiệu MACD có thể bị đảo ngược, dẫn đến tổn thất không cần thiết.

  2. Trong trường hợp có xu hướng mạnh, có khả năng đảo ngược thất bại cao hơn, nên tránh đảo ngược mù quáng.

  3. Thiết lập dừng lỗ quá nhỏ có thể dẫn đến việc dừng lỗ được kích hoạt, thiết lập quá lớn có thể không kiểm soát đủ rủi ro.

  4. Thiết lập tham số không đúng cũng ảnh hưởng đến hiệu quả của chiến lược, cần được kiểm tra và tối ưu hóa nhiều lần.

  5. Chi phí giao dịch cũng ảnh hưởng đến thu nhập cuối cùng và cần xem xét tác động của nó đối với chiến lược.

Hướng tối ưu hóa

  1. Có thể thử nghiệm các tham số chu kỳ khác nhau của EMA để tìm các chỉ số đánh giá xu hướng trung hạn và dài hạn phù hợp hơn.

  2. Bạn có thể thử các chỉ số khác kết hợp với EMA để đánh giá vùng quá mua quá bán. Ví dụ như Bollinger Bands, KD, RSI, v.v.

  3. Các tham số MACD cũng có thể được tối ưu hóa để tìm các tham số kết hợp nhạy cảm hơn hoặc ổn định hơn.

  4. Có thể thử nghiệm các phương thức dừng lỗ khác, chẳng hạn như trailing stop loss để khóa lợi nhuận.

  5. Các tham số có thể được tối ưu hóa theo chu kỳ khác nhau của các giống khác nhau, làm cho chiến lược thích ứng hơn.

  6. Có thể kết hợp với chỉ số cường độ xu hướng để tránh đảo ngược trong xu hướng mạnh.

Tóm tắt

Chiến lược này kết hợp các phán đoán xu hướng dài hạn trong EMA và tín hiệu đảo ngược ngắn hạn của MACD, và là một chiến lược đảo ngược cơ bản. Chiến lược này có một số lợi thế, nhưng cũng có một số rủi ro cần được đề phòng. Bằng cách tiếp tục tối ưu hóa các tham số và kiểm soát rủi ro, chiến lược này có thể trở thành một chiến lược giao dịch định lượng hiệu quả.

Mã nguồn chiến lược
/*backtest
start: 2023-09-12 00:00:00
end: 2023-09-19 00:00:00
period: 15m
basePeriod: 5m
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/
// © bufirolas

//--- From 15 Trading Examples by Trader Alyx ---
// Seems like this strategy works better if we reverse the EMA filter logic.

// "Description: This basic scalping strategy allows you to enter the market based upon sentiment
// provided by the EMA, set at 255 periods. When price is trading below the 255 EMA, you would
// look to enter a LONG BUY positions, and when price is trading above the 255 EMA, you would
// look to enter a SELL SHORT position. The MACD lagging indicator will show you clear signals for
// when to do this. When the MACD lines cross in a bullish manner and price is below the 255
// EMA, buy. When the MACD lines cross in a bearish manner and price is above the 255 EMA,
// sell.
// NOTE: Make sure that price is trading away from the 255EMA before entering a LONG or SHORT
// position. As you can see in the chart below, the clearest signs for trade entry were presented
// when price was trading AWAY from the 255EMA"

//@version=4
// strategy("255 EMA Strategy", overlay=true, pyramiding=1, default_qty_type=strategy.cash, default_qty_value=100, commission_value = 0.04, initial_capital=100)

//Inputs
i_reverse=input(false, title="Trade Reverse")
i_EMAreverse=input(true, title="EMA Reverse Entry")
i_EMAlength=input(defval=255, title="EMA Length")
i_EMAexpander=input(defval=5, title="EMA Expander")
i_MACDmult=input(defval=1, minval=1, title="MACD Mult")

//SL & TP Calculations
i_SL=input(true, title="Use Swing Lo/Hi Stop Loss & Take Profit")
i_SwingLookback=input(20, title="Swing Lo/Hi Lookback")
i_SLExpander=input(defval=0, step=.2, title="SL Expander")*.01
i_TPExpander=input(defval=0, step=.2, title="TP Expander")*.01


//Strategy Variables
EMA=ema(close,i_EMAlength)
[macdLine, signalLine, histLine]=macd(close, 12*i_MACDmult, 26*i_MACDmult, 9*i_MACDmult)
EMAupper=EMA+((atr(100))*i_EMAexpander)
EMAlower=EMA-((atr(100))*i_EMAexpander)

//SL & TP Variables
SwingLow=lowest(i_SwingLookback)
SwingHigh=highest(i_SwingLookback)

//Calculations
EMAbuy=i_EMAreverse ? close > EMAupper : close < EMAlower
EMAsell=i_EMAreverse ? close < EMAlower : close > EMAupper
MACDbuy=crossover(macdLine, signalLine)
MACDsell=crossunder(macdLine, signalLine)

//SL & TP Calculations
bought=strategy.position_size != strategy.position_size[1]
lSL=valuewhen(bought, SwingLow, 0)*(1-i_SLExpander)
sSL=valuewhen(bought, SwingHigh, 0)*(1+i_SLExpander)
lTP=strategy.position_avg_price + (strategy.position_avg_price-(valuewhen(bought, SwingLow, 0))*(1-i_TPExpander))
sTP=strategy.position_avg_price - (valuewhen(bought, SwingHigh, 0) - strategy.position_avg_price)*(1+i_TPExpander*100)
islong=strategy.position_size > 0
isshort=strategy.position_size < 0
SL= islong ? lSL : isshort ? sSL : na
TP= islong ? lTP : isshort ? sTP : na


//Entries
strategy.entry("long", long=not i_reverse?true:false, when=EMAbuy and MACDbuy)
strategy.entry("short", long=not i_reverse?false:true, when=EMAsell and MACDsell)

//Exits
if i_SL
    strategy.exit("longexit", "long", stop=SL, limit=TP)
    strategy.exit("shortexit", "short", stop=SL, limit=TP)

//Plots
plot(EMA, "EMA", color=color.white, linewidth=2)
plot(EMAupper, "EMA Upper Band")
plot(EMAlower, "EMA Lower Band")
plot(i_SL ? SL : na, color=color.red, style=plot.style_cross, title="SL")
plot(i_SL ? TP : na, color=color.green, style=plot.style_cross, title="TP")