EMA dan Strategi Dagangan BTC Berasaskan MACD

Penulis:ChaoZhang
Tag:

img

Ringkasan

Logika Strategi

Dengan menggabungkan isyarat dari kedua-dua perbezaan EMA dan MACD, beberapa isyarat palsu boleh ditapis dan kebolehpercayaan isyarat dapat ditingkatkan.

Analisis Kelebihan

  1. Menggunakan penunjuk komposit, isyarat yang lebih boleh dipercayai
  2. Mengambil parameter jangka pendek, sesuai untuk perdagangan jangka pendek
  3. Mempunyai tetapan stop loss dan mengambil keuntungan untuk mengawal risiko

Analisis Risiko

  1. Parameter perlu dioptimumkan untuk persekitaran pasaran yang berbeza
  2. Kesan perlu diuji pada syiling dan pertukaran yang berbeza

Arahan pengoptimuman

  1. Mengoptimumkan parameter EMA dan MACD untuk menyesuaikan dengan turun naik BTC
  2. Tambah ukuran kedudukan dan strategi piramid untuk meningkatkan kecekapan modal
  3. Tambah kaedah stop loss seperti trailing stop loss untuk mengurangkan risiko
  4. Kesan ujian pada bursa dan syiling yang berbeza

Kesimpulan

Strategi ini mengintegrasikan kekuatan kedua-dua penunjuk EMA dan MACD dan menggunakan isyarat komposit untuk menapis isyarat palsu dengan berkesan. Dengan parameter yang dioptimumkan dan strategi kedudukan, pulangan yang stabil dapat dicapai. Tetapi risiko seperti stop loss yang dipukul memerlukan perhatian dan ujian dan peningkatan lanjut diperlukan.


/*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)


Lebih lanjut