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 sử dụng các chỉ số sau:
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.
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à:
Đ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.
Các vị trí thoát khi giá mở của Heiken Ashi
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.
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.
Heiken Ashi crossover cung cấp phát hiện sớm các đảo ngược tiềm năng.
Bộ lọc KAMA thích nghi làm giảm tín hiệu sai.
Một đột ngột, phá vỡ EMA lớn có thể dẫn đến tổn thất khuếch đại.
Các tín hiệu đảo ngược có thể bị chậm trễ.
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.
Bao gồm các chỉ số bổ sung như MACD và Bollinger Bands để tránh lỗi EMA / Heiken Ashi đồng thời.
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.
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.
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)