
Chiến lược này đánh giá thời gian mua và bán bằng cách tính toán đường chéo hai đường bằng nhau của chỉ số MACD. Nó vẽ hình mũi tên trên biểu đồ để gợi ý tín hiệu giao dịch.
Chiến lược này đầu tiên tính toán đường nhanh (EMA 12), đường chậm (EMA 26) và chênh lệch MACD. Sau đó, tính toán thời gian mua và bán dựa trên đường nhanh và đường chậm và các giá trị dương và âm của chênh lệch MACD:
Để lọc tín hiệu giả, mã cũng đánh giá tình trạng tín hiệu của dòng K trước đó. Chỉ khi một trong các dòng K hiện tại là tín hiệu ngược lại (mua chuyển sang bán hoặc bán chuyển sang mua), tín hiệu hiện tại sẽ được kích hoạt.
Ngoài ra, mã cũng vẽ một hình ảnh mũi tên trên đường K để gợi ý thời gian mua và bán.
Chiến lược này có những ưu điểm sau:
Chiến lược này cũng có một số rủi ro:
Chiến lược này có thể được tối ưu hóa theo các hướng sau:
Chiến lược mũi tên chéo song song này nói chung là đơn giản và thực tế, thông qua phán đoán chéo song song và lọc chênh lệch MACD, bạn có thể nhận ra điểm mua và bán trong xu hướng đường dài và trung bình, tránh bỏ lỡ biến đổi giá. Các dấu hiệu mũi tên cũng làm cho hoạt động rõ ràng hơn và rõ ràng hơn.
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//Daniels stolen code
strategy(shorttitle="Daniels Stolen Code", title="Daniels Stolen Code", overlay=true, calc_on_order_fills=true, pyramiding=0)
//Define MACD Variables
fast = 12, slow = 26
fastMACD = ema(hlc3, fast)
slowMACD = ema(hlc3, slow)
macd = fastMACD - slowMACD
signal = sma(macd, 9)
hist = macd - signal
currMacd = hist[0]
prevMacd = hist[1]
currPrice = hl2[0]
prevPrice = hl2[1]
buy = currPrice > prevPrice and currMacd > prevMacd
sell = currPrice < prevPrice and currMacd < prevMacd
neutral = (currPrice < prevPrice and currMacd > prevMacd) or (currPrice > prevPrice and currMacd < prevMacd)
//Plot Arrows
timetobuy = buy==1 and (sell[1]==1 or (neutral[1]==1 and sell[2]==1) or (neutral[1]==1 and neutral[2]==1 and sell[3]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and sell[4]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and sell[5]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and neutral[5]==1 and sell[6]==1))
timetosell = sell==1 and (buy[1]==1 or (neutral[1]==1 and buy[2]==1) or (neutral[1]==1 and neutral[2]==1 and buy[3]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and buy[4]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and buy[5]==1) or (neutral[1]==1 and neutral[2]==1 and neutral[3]==1 and neutral[4]==1 and neutral[5]==1 and buy[6]==1))
plotshape(timetobuy, color=blue, location=location.belowbar, style=shape.arrowup)
plotshape(timetosell, color=red, location=location.abovebar, style=shape.arrowdown)
//plotshape(neutral, color=black, location=location.belowbar, style=shape.circle)
//Test Strategy
// strategy.entry("long", true, 1, when = timetobuy and time > timestamp(2017, 01, 01, 01, 01)) // buy by market if current open great then previous high
// strategy.close("long", when = timetosell and time > timestamp(2017, 01, 01, 01, 01))
strategy.order("buy", true, 1, when=timetobuy==1 and time > timestamp(2019, 01, 01, 01, 01))
strategy.order("sell", false, 1, when=timetosell==1 and time > timestamp(2019, 01, 01, 01, 01))
// strategy.entry(id = "Short", long = false, when = enterShort())
// strategy.close(id = "Short", when = exitShort())
//strategy.entry("long", true, 1, when = open > high[1]) // enter long by market if current open great then previous high
// strategy.exit("exit", "long", profit = 10, loss = 5) // ge