Chiến lược này tích hợp hai chỉ số trung bình động và chỉ số RSI để xây dựng một chiến lược giao dịch chéo giữa các vị trí dài và ngắn. Nó có thể nắm bắt xu hướng trung và dài hạn trong khi tránh giao dịch ồn ào không cần thiết với các chỉ số ngắn hạn.
Chiến lược này áp dụng hai bộ trung bình động, bao gồm trung bình động nhanh (EMA 59 và EMA 82) và trung bình động chậm (EMA 96 và EMA 95). Nó đi dài khi giá vượt qua EMA nhanh, và đi ngắn khi giá vượt qua EMA nhanh. Trong khi đó, khu vực mua quá và bán quá của chỉ số RSI được sử dụng để xác nhận tín hiệu giao dịch và dừng lỗ.
Cụ thể, khi EMA nhanh vượt qua EMA chậm, một tín hiệu dài được tạo ra. Nếu RSI dưới 30 (khu vực quá bán) tại thời điểm này, mua dài. Khi EMA nhanh vượt qua EMA chậm, một tín hiệu ngắn được tạo ra. Nếu RSI vượt quá 70 (khu vực quá mua) tại thời điểm này, mua ngắn.
Lợi thế của việc sử dụng đường trung bình động kép là nhận ra tốt hơn những thay đổi trong xu hướng trung hạn đến dài hạn.
Chiến lược này tích hợp xu hướng theo sau của trung bình di chuyển kép và trung bình đảo ngược giao dịch của chỉ số RSI. Các EMA kép theo dõi hướng xu hướng trung và dài hạn, trong khi RSI xác nhận tính hợp lệ của tín hiệu giao dịch và dừng lỗ. Đây là một chiến lược chéo đơn giản và thực tế giữa dài và ngắn. Nó có thể được điều chỉnh cho các môi trường thị trường khác nhau thông qua điều chỉnh và tối ưu hóa tham số.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Swing Hull/rsi/EMA Strategy", overlay=true,default_qty_type=strategy.cash,default_qty_value=10000,scale=true,initial_capital=10000,currency=currency.USD) //A Swing trading strategy that use a combination of indicators, rsi for target, hull for overall direction enad ema for entering the martket. // hull ma copied from syrowof HullMA who copied from mohamed982 :) thanks both // Performance n=input(title="period",defval=500) n2ma=2*wma(close,round(n/2)) nma=wma(close,n) diff=n2ma-nma sqn=round(sqrt(n)) n2ma1=2*wma(close[1],round(n/2)) nma1=wma(close[1],n) diff1=n2ma1-nma1 sqn1=round(sqrt(n)) n1=wma(diff,sqn) n2=wma(diff1,sqn) c=n1>n2?green:red ma=plot(n1,color=c) // RSi and Moving averages length = input( 14 ) overSold = input( 70) overBought = input( 30) point = 0.0001 dev= 2 fastLength = input(59) fastLengthL = input(82) slowLength = input(96) slowLengthL = input(95) price = close mafast = ema(price, fastLength) mafastL= ema(price, fastLengthL) maslow = ema(price, slowLength) maslowL = ema(price, slowLengthL) vrsi = rsi(price, length) cShort = (crossunder(vrsi, overBought)) condDown = n2 >= n1 condUp = condDown != true closeLong = (crossover(vrsi, overSold)) closeShort = cShort // Strategy Logic longCondition = n1> n2 shortCondition = longCondition != true col =condUp ? lime : condDown ? red : yellow plot(n1,color=col,linewidth=3) if (not na(vrsi)) if shortCondition if (price[0] < maslow[0] and price[1] > mafast[1]) //cross entry strategy.entry("SYS-SHORT", strategy.short, comment="short") strategy.close("SYS-SHORT", when=closeShort) //output logic if (not na(vrsi)) if longCondition // swing condition if (price[0] < mafast[0] and price[1] > mafast[1]) //cross entry strategy.entry("SYS-LONG", strategy.long, comment="long") strategy.close("SYS-LONG", when=closeLong) //output logic // Stop Loss sl = input(75) Stop = sl * 10 Q = 100 strategy.exit("Out Long", "SYS-LONG", qty_percent=Q, loss=Stop) strategy.exit("Out Short", "SYS-SHORT", qty_percent=Q, loss=Stop) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)