
Strategi ini adalah strategi gabungan berdasarkan perbezaan EMA dan MACD untuk perdagangan garis pendek BTC. Ia menggabungkan isyarat EMA dan MACD untuk menghasilkan isyarat beli dan jual dalam keadaan tertentu.
Apabila nilai selisih adalah negatif, dan lebih kecil daripada paras paras paras, dan MACD muncul dengan silang kepala kosong, menghasilkan isyarat beli. Apabila nilai selisih adalah positif, dan lebih besar daripada paras paras, dan MACD muncul dengan silang kepala banyak, menghasilkan isyarat jual.
Dengan menggabungkan isyarat yang menggunakan perbezaan rata-rata EMA dan penunjuk MACD, beberapa isyarat palsu dapat disaring dan meningkatkan kebolehpercayaan isyarat.
Strategi ini mengintegrasikan kelebihan kedua-dua indikator garis rata dan MACD, menggunakan isyarat komposit, yang dapat menyaring isyarat palsu dengan berkesan. Dengan parameter pengoptimuman dan strategi pembukaan kedudukan, keuntungan yang stabil dapat diperoleh. Tetapi juga perlu waspada terhadap risiko kerugian berhenti yang akan ditembusi, yang memerlukan ujian dan penyempurnaan lebih lanjut.
/*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)