Heikin-Ashi Smoothed mua và bán chiến lược

Tác giả:ChaoZhang, Ngày: 2023-10-07 15:01:06
Tags:

Tổng quan

Chiến lược này dựa trên một chỉ số duy nhất - Smoothed Heikin-Ashi, để thực hiện xu hướng đơn giản sau các hoạt động mua và bán. Nó xác định hướng xu hướng thông qua chỉ số Smoothed Heikin-Ashi và xác định thời gian vào kết hợp với các mô hình nến lịch sử, để có được lợi nhuận.

Chiến lược logic

Chiến lược tính toán trung bình động của giá mở, cao, thấp và đóng để xây dựng Smoothed Heikin-Ashi.

Điều kiện mua: Các thanh hiện tại đóng > các thanh trước đóng, các thanh trước đóng > 2 thanh trước đây đóng, 3 thanh gần đây tăng.

Điều kiện bán: Các thanh hiện tại đóng cửa < các thanh trước đóng cửa, các thanh trước đóng cửa < 2 thanh trước đây đóng cửa, 3 thanh gần đây giảm.

Cả hai điều kiện mua và bán đều yêu cầu tín hiệu mới nhất là 0 hoặc tín hiệu ngược lại, để tránh giao dịch theo cùng một hướng liên tiếp.

Phân tích lợi thế

  • Logic đơn giản với chỉ số duy nhất
  • Sử dụng khả năng theo dõi xu hướng của Heikin-Ashi
  • Tránh bỏ xu hướng hoặc giao dịch ngược lại thông qua các mô hình nến
  • Giảm các giao dịch không cần thiết bằng cách lọc các tín hiệu trùng lặp

Phân tích rủi ro

  • Heikin-Ashi có hiệu ứng chậm trễ, có thể bỏ lỡ các bước ngoặt xu hướng
  • Chỉ xem xét 3 thanh mới nhất, thiếu phán đoán xu hướng dài hạn
  • Không thiết lập stop loss, rủi ro gia tăng lỗ
  • Bỏ qua các điều kiện thị trường tổng thể, dễ bị rủi ro hệ thống

Có thể cải thiện bằng cách kết hợp các chỉ số khác cho xu hướng dài hạn, tối ưu hóa chiến lược dừng lỗ, chú ý đến thị trường tổng thể v.v.

Hướng dẫn tối ưu hóa

  • Thêm các chỉ số khác để xác định xu hướng dài hạn
  • Tối ưu hóa stop loss như trailing stop hoặc stop loss dựa trên phần trăm
  • Xem xét chỉ số thị trường tổng thể để tránh giao dịch trong thị trường giới hạn phạm vi
  • Tối ưu hóa các tham số như thời gian trung bình động
  • Thêm các chỉ số khối lượng để đảm bảo hỗ trợ khối lượng giao dịch

Tóm lại

Chiến lược này sử dụng khả năng theo dõi xu hướng của Heikin-Ashi và kết hợp các mẫu nến để xác định thời gian nhập cảnh, trong khi kiểm soát tần suất giao dịch thông qua lọc các tín hiệu trùng lặp.


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

Thêm nữa