Chiến lược này dựa trên một chỉ số duy nhất để làm mịn đường nòng biển, để thực hiện các hoạt động mua bán theo xu hướng đơn giản. Chiến lược sử dụng chỉ số đường nòng biển mịn để xác định hướng xu hướng, kết hợp với hình dạng đường K lịch sử để đánh giá thời gian nhập cảnh để rút ra lợi nhuận.
Chiến lược này xây dựng đường cong bằng cách tính toán các đường trung bình di chuyển. Cụ thể, tính toán các đường trung bình di chuyển của giá mở, giá cao nhất, giá thấp nhất và giá đóng, sau đó tính toán đường cong bằng các giá mở, giá cao nhất, giá thấp nhất và giá đóng.
Xác định điều kiện mua: Giá mua K hiện tại lớn hơn giá mua K trước, giá mua K trước lớn hơn giá mua 2 K trước, gần 3 K là đường dương.
Xác định điều kiện bán: Giá đóng cửa K hiện tại nhỏ hơn giá đóng cửa K trước, giá đóng cửa K trước nhỏ hơn giá đóng cửa hai K trước, gần ba K đều là đường âm.
Các điều kiện mua và bán phải đáp ứng với tín hiệu gần nhất là 0 hoặc tín hiệu ngược lại, tránh giao dịch lặp lại liên tục.
Có thể cải thiện bằng cách kết hợp các chỉ số khác để đánh giá xu hướng dài hạn, tối ưu hóa chiến lược dừng lỗ, chú ý đến môi trường lớn.
Chiến lược này sử dụng chức năng theo dõi xu hướng của chỉ số đường biển, kết hợp với hình dạng đường K để đánh giá thời gian vào thị trường, kiểm soát tần số giao dịch bằng cách lọc các tín hiệu lặp lại. Lập luận của chiến lược đơn giản, rõ ràng và dễ thực hiện.
/*backtest
start: 2022-09-30 00:00:00
end: 2023-10-06 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Masoud Abdoli
//Heikin Ashi Smoothed Buy & Sell Strategy Rev.4
//Date: 01-Oct-2021
//@version=4
strategy(title="Abdoli's Heikin Ashi Smoothed Buy & Sell Strategy Rev.4", shorttitle="Heikin-Ashi Smoothed Rev.4", overlay=true,
initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
MaPeriod = input (title="Moving Average Period?", type=input.integer, defval=65, minval=5, maxval=100, step=5)
maOpen = ema(open , MaPeriod)
maHigh = ema(high , MaPeriod)
maLow = ema(low , MaPeriod)
maClose = ema(close, MaPeriod)
haClose = (maOpen+maHigh+maLow+maClose)/4
haOpen = 0.0
haOpen:= na(haOpen[1]) ? (maOpen[1]+maClose[1])/2 : (haOpen[1]+haClose[1])/2
haHigh = max(maHigh, max(haClose, haOpen))
haLow = min(maLow , max(haClose, haOpen))
plotcandle(haOpen, haHigh, haLow, haClose, title="heikin-Ashi smoothed", color=haOpen>haClose ? color.orange : color.blue)
B0 = haClose - haOpen
B1 = haClose[1] - haOpen[1]
B2 = haClose[2] - haOpen[2]
BuyCondition = B0 > 0.0 and B1 > 0.0 and B2 > 0.0 and haClose > haClose[1] and haClose[1] > haClose[2]
SellCondition= B0 < 0.0 and B1 < 0.0 and B2 < 0.0 and haClose < haClose[1] and haClose[1] < haClose[2]
last_signal = 0
Buy_final = BuyCondition and (nz(last_signal[1]) == 0 or nz(last_signal[1]) ==-1)
Sell_final = SellCondition and (nz(last_signal[1]) == 0 or nz(last_signal[1]) == 1)
last_signal := Buy_final ? 1 : Sell_final ? -1 : last_signal[1]
plotshape(Buy_final , style=shape.labelup , location=location.belowbar, color=color.blue, title="Buy label" , text="BUY" , textcolor=color.white)
plotshape(Sell_final, style=shape.labeldown, location=location.abovebar, color=color.red , title="Sell label", text="SELL", textcolor=color.white)
strategy.entry("Buy", strategy.long, when=Buy_final)
strategy.close("Buy", when=Sell_final)