Chiến lược giao dịch định lượng SuperTrend đường trung bình động kép


Ngày tạo: 2024-02-05 12:05:10 sửa đổi lần cuối: 2024-02-05 12:05:10
sao chép: 0 Số nhấp chuột: 608
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch định lượng SuperTrend đường trung bình động kép

Tổng quan

Chiến lược này sử dụng hai chỉ số Binary Equity Line và SuperTrend để xây dựng tín hiệu giao dịch, đồng thời kết hợp với các chu kỳ khác nhau để đánh giá xu hướng và đạt được lợi nhuận hiệu quả.

Nguyên tắc chiến lược

Chiến lược này sử dụng hai chỉ số MACD và SuperTrend để xác định thời gian đi vào thị trường. Trong đó, MACD định hướng xu hướng ngắn hạn và Supertrend định hướng xu hướng dài hạn.

Khi đường nhanh từ dưới lên phá vỡ đường chậm để mua tín hiệu, tại thời điểm này nếu trung bình dài hạn Supertrend là xu hướng tăng, sẽ tạo ra tín hiệu mua cuối cùng, làm nhiều; ngược lại, khi đường nhanh từ trên xuống phá vỡ đường chậm để bán tín hiệu, tại thời điểm này nếu trung bình dài hạn Supertrend là xu hướng giảm, sẽ tạo ra tín hiệu bán cuối cùng, làm rỗng.

Stop Loss và Stop Stop được thiết lập là giá trị cố định.

Phân tích lợi thế

Ưu điểm lớn nhất của chiến lược này là sử dụng hai đường trung bình và SuperTrend để xác định xu hướng thị trường cùng một lúc, kết hợp ngắn hạn và trung hạn, giúp cải thiện hiệu quả quyết định đáng kể và tránh sự đột phá giả. Ngoài ra, Supertrend có thể điều chỉnh các tham số dựa trên biến động thị trường và thích ứng với môi trường thị trường rộng hơn.

Phân tích rủi ro

Rủi ro chính của chiến lược này là thiết lập dừng lỗ cố định có thể bỏ lỡ không gian lợi nhuận lớn hơn. Ngoài ra, chiến lược không thể hoạt động bình thường nếu có sự khác biệt giữa phán đoán ngắn hạn và trung hạn. Chúng ta có thể giảm thiểu rủi ro này bằng cách thiết lập dừng lỗ nổi.

Hướng tối ưu hóa

Chính sách này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Thêm cơ chế điều chỉnh động của lệnh dừng lỗ, đặt lệnh dừng lỗ theo biến động và xu hướng của thị trường.

  2. Tối ưu hóa tham số MACD để tìm tham số đường trung bình phù hợp hơn với giống mục tiêu.

  3. Tối ưu hóa các tham số Supertrend, điều chỉnh độ nhạy của nó đối với thị trường.

  4. Thêm các chỉ số khác, cung cấp các tín hiệu có chiều rộng hơn, tăng hiệu quả chiến lược.

Tóm tắt

Chiến lược này đã kết hợp thành công lợi thế của hai chỉ số Binary Average và SuperTrend, lọc các tín hiệu sai để có được lợi nhuận tốt hơn trong thị trường xu hướng thông qua kết hợp các phân đoạn khác nhau. Chúng ta có thể tăng cường sự ổn định và lợi nhuận của chiến lược này thông qua các tham số tối ưu hóa và cơ chế điều chỉnh.

Mã nguồn chiến lược
/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//Supertrend Strategy by breizh29 using *rajandran.r* Supertrend Indicator

strategy("Super Trend 2 MACD", overlay=true)
// MACD input
source = input(close)
fastLength = input(12, minval=1, title="MACD fast moving average")
slowLength=input(26,minval=1, title="MACD slow moving average")
signalLength=input(9,minval=1, title="MACD signal line moving average")

// Calculation
fastMA = sma(source, fastLength)
slowMA = sma(source, slowLength)

Macd = fastMA - slowMA
Signal = sma(Macd, signalLength)


res = input(title="Main SuperTrend Time Frame",  defval="120")
Factor=input(1, minval=1,maxval = 100)
Pd=input(1, minval=1,maxval = 100)

tp = input(500,title="Take Profit")
sl = input(400,title="Stop Loss")


Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
MUp=request.security(syminfo.tickerid,res,hl2-(Factor*atr(Pd)))
MDn=request.security(syminfo.tickerid,res,hl2+(Factor*atr(Pd)))

Mclose=request.security(syminfo.tickerid,res,close)

TrendUp=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn

MTrendUp=Mclose[1]>MTrendUp[1]? max(MUp,MTrendUp[1]) : MUp
MTrendDown=Mclose[1]<MTrendDown[1]? min(MDn,MTrendDown[1]) : MDn

Trend = close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = Trend==1? TrendUp: TrendDown

MTrend = Mclose > MTrendDown[1] ? 1: Mclose< MTrendUp[1]? -1: nz(MTrend[1],1)
MTsl = MTrend==1? MTrendUp: MTrendDown

linecolor = Trend == 1 ? green : red
plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend")

Mlinecolor = MTrend == 1 ? blue : orange
plot(MTsl, color = Mlinecolor , style = line , linewidth = 2,title = "Main SuperTrend")

plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0)
plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0)

up = Trend == 1 and Trend[1] == -1 and MTrend == 1 
down = Trend == -1 and Trend[1] == 1 and MTrend == -1 
plotarrow(up ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
plotarrow(down ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0)


golong = Trend == 1 and Trend[1] == -1 and MTrend == 1 and Macd > Signal
goshort = Trend == -1 and Trend[1] == 1 and MTrend == -1 and Macd < Signal

strategy.entry("Buy", strategy.long,when=golong)
strategy.exit("Close Buy","Buy",profit=tp,loss=sl)
   
   
strategy.entry("Sell", strategy.short,when=goshort)
strategy.exit("Close Sell","Sell",profit=tp,loss=sl)