Tác giả:ChaoZhang, Ngày: 2024-01-25 12:54:16
Tags:

img

Tổng quan

Chiến lược này là một chiến lược tổng hợp dựa trên chênh lệch EMA và chỉ số MACD cho giao dịch BTC ngắn hạn. Nó kết hợp các tín hiệu từ EMA và MACD để tạo ra tín hiệu mua và bán trong một số điều kiện nhất định.

Chiến lược logic

Nó tạo ra tín hiệu mua khi chênh lệch là âm và dưới ngưỡng và MACD có chéo giảm. Nó tạo ra tín hiệu bán khi chênh lệch là dương và trên ngưỡng và MACD có chéo tăng.

Phân tích lợi thế

  1. Sử dụng các chỉ số tổng hợp, tín hiệu đáng tin cậy hơn
  2. Có các thiết lập dừng lỗ và lấy lợi nhuận để kiểm soát rủi ro

Phân tích rủi ro

  1. Dừng lỗ có thể bị phá vỡ trong khi biến động thị trường lớn
  2. Các thông số cần được tối ưu hóa cho các môi trường thị trường khác nhau
  3. Hiệu ứng cần phải được thử nghiệm trên các đồng xu và sàn giao dịch khác nhau

Hướng dẫn tối ưu hóa

  1. Thêm kích thước vị trí và các chiến lược kim tự tháp để cải thiện hiệu quả vốn
  2. Thêm các phương pháp dừng lỗ như dừng lỗ để giảm rủi ro
  3. Hiệu ứng thử nghiệm trên các sàn giao dịch và đồng tiền khác nhau

Kết luận

Chiến lược này tích hợp các điểm mạnh của cả chỉ số EMA và MACD và sử dụng các tín hiệu tổng hợp để lọc hiệu quả các tín hiệu sai. Với các thông số tối ưu và chiến lược vị trí, lợi nhuận ổn định có thể đạt được.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("EMA50Diff & MACD Strategy", overlay=false)
EMA = input(18, step=1)
MACDfast = input(12)
MACDslow = input(26)
EMADiffThreshold = input(8)
MACDThreshold = input(80)
TargetValidityThreshold = input(65, step=5)
Target = input(120, step=5)
StopLoss = input(650, step=5) 
ema = ema(close, EMA)
hl = plot(0, color=white, linewidth=1)
diff = close - ema
clr = color(blue, transp=100)
if diff>0
    clr := lime
else 
    if diff<0
        clr := red

fastMA = ema(close, MACDfast)
slowMA = ema(close, MACDslow)
macd = (fastMA - slowMA)*3
signal = sma(macd, 9)
plot(macd, color=aqua, linewidth=2)
plot(signal, color=purple, linewidth=2)

macdlong = macd<-MACDThreshold and signal<-MACDThreshold and crossover(macd, signal)
macdshort = macd>MACDThreshold and signal>MACDThreshold and crossunder(macd, signal)
position = 0.0
position := nz(strategy.position_size, 0.0)
long = (position < 0 and close < strategy.position_avg_price - TargetValidityThreshold and macdlong) or 
     (position == 0.0 and diff < -EMADiffThreshold and diff > diff[1] and diff[1] < diff[2] and macdlong)

short = (position > 0 and close > strategy.position_avg_price + TargetValidityThreshold and macdshort) or 
      (position == 0.0 and diff > EMADiffThreshold and diff < diff[1] and diff[1] > diff[2] and macdshort)
amount = (strategy.equity / close) //- ((strategy.equity / close / 10)%10)
bgclr = color(blue, transp=100) //#0c0c0c
if long
    strategy.entry("long", strategy.long, amount)
    bgclr := green
if short
    strategy.entry("short", strategy.short, amount)
    bgclr := maroon
bgcolor(bgclr, transp=20)
strategy.close("long", when=close>strategy.position_avg_price + Target)
strategy.close("short", when=close<strategy.position_avg_price - Target)
strategy.exit("STOPLOSS", "long", stop=strategy.position_avg_price - StopLoss)
strategy.exit("STOPLOSS", "short", stop=strategy.position_avg_price + StopLoss)
//plotshape(long, style=shape.labelup, location=location.bottom, color=green)
//plotshape(short, style=shape.labeldown, location=location.top, color=red)
pl = plot(diff, style=histogram, color=clr)
fill(hl, pl, color=clr)


Thêm nữa