Chiến lược giao dịch BTC dựa trên đường trung bình động EMA và chỉ báo MACD


Ngày tạo: 2024-01-25 12:54:16 sửa đổi lần cuối: 2024-01-25 12:54:16
sao chép: 0 Số nhấp chuột: 593
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch BTC dựa trên đường trung bình động EMA và chỉ báo MACD

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 đường trung bình EMA và MACD cho giao dịch ngắn BTC. Nó kết hợp các tín hiệu của đường trung bình EMA và MACD để tạo ra tín hiệu mua và bán trong các điều kiện cụ thể.

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

Một tín hiệu mua được tạo ra khi chênh lệch là âm và nhỏ hơn ngưỡng và MACD có giao thoa không. Một tín hiệu bán được tạo ra khi chênh lệch là dương và lớn hơn ngưỡng và MACD có giao thoa đa đầu.

Bằng cách kết hợp các tín hiệu sử dụng chênh lệch đường trung bình EMA và MACD, bạn có thể lọc ra một số tín hiệu giả, tăng độ tin cậy của tín hiệu.

Phân tích lợi thế

  1. Dấu tích tổng hợp giúp tín hiệu đáng tin cậy hơn.
  2. Cài đặt các tham số thời gian ngắn, phù hợp với giao dịch đường ngắn
  3. Có thiết lập dừng và dừng để kiểm soát rủi ro

Phân tích rủi ro

  1. Hạn chế có thể bị phá vỡ khi thị trường biến động mạnh
  2. Cần tối ưu hóa các tham số để phù hợp hơn với các môi trường thị trường khác nhau
  3. Cần thử nghiệm hiệu quả của các đồng tiền khác nhau và các sàn giao dịch khác nhau

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

  1. Tối ưu hóa các tham số của EMA và MACD để phù hợp hơn với môi trường biến động của BTC
  2. Tăng vị trí mở kho và chiến lược giảm kho, tối ưu hóa hiệu quả sử dụng vốn
  3. Tăng các phương thức dừng lỗ, chẳng hạn như dừng di chuyển, dừng rung, để giảm rủi ro
  4. Kiểm tra hiệu quả của các sàn giao dịch và các đồng tiền khác nhau

Tóm tắt

Chiến lược này tích hợp các ưu điểm của hai chỉ số đường trung bình và MACD, sử dụng tín hiệu tổng hợp, có thể lọc hiệu quả các tín hiệu giả. Bằng cách tối ưu hóa tham số và chiến lược mở vị trí, có thể có được lợi nhuận ổn định. Tuy nhiên, cũng cần cảnh giác về rủi ro bị phá vỡ, cần được thử nghiệm và hoàn thiện hơn nữa.

Mã nguồn chiến lượ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)