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