Chiến lược giao dịch trung bình chuyển động theo hàm số tăng dần của Heiken Ashi

Tác giả:ChaoZhang, Ngày: 2023-12-22 13:18:34
Tags:

img

Tổng quan

Chiến lược này kết hợp giữa Heiken Ashi chậm và các đường trung bình động theo cấp số nhân để xác định xu hướng và thực hiện giao dịch dài / ngắn trong các thị trường xu hướng. Nó đi dài khi giá trên EMA 100 ngày và đi ngắn khi giá dưới EMA 100 ngày, đóng các vị trí trên các tín hiệu đảo ngược cụ thể.

Chiến lược logic

Chiến lược sử dụng các chỉ số sau:

  1. Slow Heiken Ashi: Một loại nến đặc biệt được tính bằng cách sử dụng giá trung bình của thanh trước, lọc ra tiếng ồn thị trường và xác định xu hướng.

  2. Trung bình Di chuyển biểu thức: Trung bình giá được làm mịn với trọng số biểu thức được áp dụng. Bao gồm EMA từ 5 ngày đến 100 ngày.

Logic giao dịch cụ thể là:

  1. Đi dài khi giá vượt trên đường EMA 100 ngày, đi ngắn khi giá vượt dưới đường EMA 100 ngày.

  2. Các vị trí thoát khi giá mở của Heiken Ashi vượt qua giá đóng (dấu hiệu đảo ngược tiềm năng).

Phân tích lợi thế

Chiến lược này kết hợp các tín hiệu theo xu hướng và đảo ngược, nắm bắt sự biến động giá lớn trong các thị trường xu hướng trong khi tránh tổn thất quá mức khi xu hướng đảo ngược.

  1. EMA xác định hướng xu hướng thị trường tổng thể, ngăn chặn sự phân tâm từ biến động địa phương.

  2. Heiken Ashi crossover cung cấp phát hiện sớm các đảo ngược tiềm năng.

  3. Bộ lọc KAMA thích nghi làm giảm tín hiệu sai.

Phân tích rủi ro

  1. Một đột ngột, phá vỡ EMA lớn có thể dẫn đến tổn thất khuếch đại.

  2. Các tín hiệu đảo ngược có thể bị chậm trễ.

  3. Các thông số EMA không phù hợp ảnh hưởng tiêu cực đến hiệu suất. Các thông số nên thích nghi với các sản phẩm và môi trường thị trường khác nhau.

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

  1. Bao gồm các chỉ số bổ sung như MACD và Bollinger Bands để tránh lỗi EMA / Heiken Ashi đồng thời.

  2. Tối ưu hóa các thông số EMA dựa trên biến động thị trường, thắt chặt dừng / tăng dung nạp trượt phù hợp.

  3. Sử dụng máy học để tự động điều chỉnh các tham số, lọc các quy tắc và cải thiện độ bền.

Kết luận

Chiến lược này tương đối đơn giản và thực tế nói chung, kết hợp cả các yếu tố xu hướng và đảo ngược. Với các tham số và kiểm soát rủi ro được điều chỉnh tốt, nó giữ tiềm năng lợi nhuận tốt.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-19 10:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("NoScoobies Slow Heiken Ashi and Exponential Moving average Strategy 2.2", overlay=true)

//SHA
p=input(6,title='Period')
fastend=input(0.666,step=0.001)
slowend=input(0.0645,step=0.0001)
kama(close,amaLength)=>
    diff=abs(close[0]-close[1])
    signal=abs(close-close[amaLength])
    noise=sum(diff, amaLength)
    efratio=noise!=0 ? signal/noise : 1
    smooth=pow(efratio*(fastend-slowend)+slowend,2)
    kama=nz(kama[1], close)+smooth*(close-nz(kama[1], close))
    kama
hakamaper=1
Om=sma(open,p)
Hm=sma(high,p)
Lm=sma(low,p)
Cm=sma(close,p)
vClose=(Om+Hm+Lm+Cm)/4
vOpen= kama(vClose[1],hakamaper)
vHigh= max(Hm,max(vClose, vOpen))
vLow=  min(Lm,min(vClose, vOpen))
asize=vOpen-vClose
size=abs(asize)

//MMAR
exponential = input(true, title="Exponential MA")
src = close
ma05 = exponential ? ema(src, 05) : sma(src, 05)
ma10 = exponential ? ema(src, 10) : sma(src, 10)
ma15 = exponential ? ema(src, 15) : sma(src, 15)
ma20 = exponential ? ema(src, 20) : sma(src, 20)
ma25 = exponential ? ema(src, 25) : sma(src, 25)
ma30 = exponential ? ema(src, 30) : sma(src, 30)
ma35 = exponential ? ema(src, 35) : sma(src, 35)
ma40 = exponential ? ema(src, 40) : sma(src, 40)
ma45 = exponential ? ema(src, 45) : sma(src, 45)
ma50 = exponential ? ema(src, 50) : sma(src, 50)
ma55 = exponential ? ema(src, 55) : sma(src, 55)
ma60 = exponential ? ema(src, 60) : sma(src, 60)
ma65 = exponential ? ema(src, 65) : sma(src, 65)
ma70 = exponential ? ema(src, 70) : sma(src, 70)
ma75 = exponential ? ema(src, 75) : sma(src, 75)
ma80 = exponential ? ema(src, 80) : sma(src, 80)
ma85 = exponential ? ema(src, 85) : sma(src, 85)
ma90 = exponential ? ema(src, 90) : sma(src, 90)
ma95 = exponential ? ema(src, 95) : sma(src, 95)
ma100 = exponential ? ema(src, 100) : sma(src, 100)

longcondition=src>ma100
shortcondition=src<ma100
long=longcondition and size<size[1] and (vOpen<vClose or vOpen>vClose)
short=shortcondition and size<size[1] and (vOpen>vClose or vOpen<vClose)
close_long=longcondition and crossunder(open, vClose)
close_short=shortcondition and crossover(open, vClose)
_close=close_long[2] or close_short[2]

if long
    strategy.entry("LONG", strategy.long)
    strategy.close("LONG", when = _close)
if short
    strategy.entry("SHORT", strategy.short)
    strategy.close("SHORT", when = _close)
    


Thêm nữa