Chiến lược phòng hộ tần số cao dựa trên màu MACD Bar và hồi quy tuyến tính

Tác giả:ChaoZhang, Ngày: 2023-10-27 10:42:54
Tags:

img

Tổng quan

Chiến lược này kết hợp màu sợi MACD và chỉ số hồi quy tuyến tính để đạt được giao dịch đảo ngược tần số cao, đặc biệt phù hợp với việc điều chỉnh và phòng ngừa rủi ro ngắn hạn.

Chiến lược logic

Chiến lược bao gồm các thành phần chính sau:

  1. Màu sợi MACD là chỉ số đánh giá xu hướng. Khi màu sợi MACD màu xanh lá cây, nó chỉ ra xu hướng tăng, vì vậy không nên đặt lệnh ngắn. Khi sợi MACD màu đỏ, nó chỉ ra xu hướng giảm, vì vậy không nên đặt lệnh dài.

  2. Phục hồi tuyến tính như là chỉ số tín hiệu giao dịch chính. Đi dài khi giá vượt qua đường hồi quy tuyến tính, và đi ngắn khi giá vượt qua dưới đường.

  3. PAC Channel được hình thành bởi EMA của giá cao, thấp và đóng để xác định hướng của đường hồi quy tuyến tính.

  4. EMA 89 là đường dừng lỗ. Đóng các vị trí khi giá vượt qua trên đường này.

Logic cho tín hiệu giao dịch là:

Tín hiệu dài: Phân hồi tuyến tính vượt qua dải dưới PAC VÀ phân hồi tuyến tính nghiêng lên VÀ thanh MACD không màu đỏ.

Tín hiệu ngắn: Phân hồi tuyến tính vượt qua dưới dải trên PAC VÀ khúc lùi tuyến tính đang giảm và thanh MACD không màu xanh lá cây.

Tín hiệu thoát: Giá vượt dưới đường EMA 89.

Chiến lược này kết hợp đánh giá xu hướng và mức giá chính để đạt được giao dịch phòng ngừa tần suất cao.

Phân tích lợi thế

  1. Màu sợi MACD giúp xác định xu hướng chính và tránh giao dịch chống lại xu hướng.

  2. Sự hồi quy tuyến tính là mượt mà và lọc ra một số tiếng ồn.

  3. Kênh EMA xác định rõ ràng xu hướng tăng/giảm.

  4. Stop loss được thiết lập hợp lý để tối đa hóa lợi nhuận.

  5. Tần suất giao dịch cao làm cho nó phù hợp với giao dịch thuật toán.

  6. Đạt được các giao dịch phòng ngừa rủi ro và có thể kiếm lợi từ các thị trường giới hạn phạm vi.

Phân tích rủi ro

  1. Các tham số hồi quy tuyến tính và kênh cần tối ưu hóa, nếu không chúng có thể thất bại.

  2. Stop loss có thể được kích hoạt thường xuyên trong các biến động giá lớn.

  3. Tần suất giao dịch cao có nghĩa là chi phí giao dịch có thể đáng kể.

  4. MACD có một chút trễ và có thể bỏ lỡ sự đảo ngược xu hướng ngắn hạn.

  5. Các kênh EMA cũng cần tối ưu hóa liên tục để thích nghi với các điều kiện thị trường thay đổi.

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

  1. Điều chỉnh các thông số hồi quy tuyến tính và kênh để phù hợp hơn với các thiết bị khác nhau.

  2. Mở rộng phạm vi dừng lỗ trong khi giữ tỷ lệ lợi nhuận / rủi ro trên 1.

  3. Tối ưu hóa các thông số MACD để nắm bắt nhiều tín hiệu ngắn hạn hơn.

  4. Hãy thử các chỉ số khác để thay thế hồi quy tuyến tính, chẳng hạn như Bollinger Bands.

  5. Thêm kích cỡ vị trí để ngăn ngừa tổn thất một chiều quá mức.

  6. Kết hợp các chỉ số khác như RSI để lọc một số tín hiệu giao dịch.

Kết luận

Chiến lược này kết hợp nhiều chỉ số kỹ thuật để đạt được giao dịch phòng ngừa tần số cao. Sức mạnh của nó nằm trong việc bắt được những sự đảo ngược ngắn hạn với kiểm soát rủi ro hợp lý, làm cho nó rất phù hợp với điều kiện thị trường giới hạn phạm vi. Đồng thời, cần tối ưu hóa và cải tiến các tham số nhất định để ngăn ngừa quá mức. Với quản lý thích hợp, nó có thể trở thành một chiến lược giao dịch tần số cao rất thực tế.


/*backtest
start: 2022-10-20 00:00:00
end: 2023-10-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// strategy("Sonic R + Linear Reg + Kumo Cloud + Barcolor MACD", overlay=true,default_qty_value=10000,initial_capital=200,currency=currency.USD, pyramiding=1)
EMA = input(defval=89, title="EMA Signal")
HiLoLen     = input(34, minval=2,title="High Low channel Length")
pacC        = ema(close,HiLoLen)
pacL        = ema(low,HiLoLen)
pacH        = ema(high,HiLoLen)
DODGERBLUE = #1E90FFFF
// Plot the Price Action Channel (PAC) base on EMA high,low and close//
L=plot(pacL, color=DODGERBLUE, linewidth=1, title="High PAC EMA",transp=90)
H=plot(pacH, color=DODGERBLUE, linewidth=1, title="Low PAC EMA",transp=90)
C=plot(pacC, color=DODGERBLUE, linewidth=2, title="Close PAC EMA",transp=80)
//Moving Average//
signalMA =ema(close,EMA)
plot(signalMA,title="EMA Signal",color=black,linewidth=3,style=line)
linereg = linreg(close, EMA, 0)
plot(linereg, color = orange, title = "Linear Regression Curve", style = line, linewidth = 1)
//////ICHIMOKU/////////
conversionPeriods = input(9),
basePeriods = input(26, minval=1, title="Base Line")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span"),
displacement = input(26, minval=1)
donchian(len) => avg(lowest(len), highest(len))
conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine) 
leadLine2 = donchian(laggingSpan2Periods-1)
p1 = plot(leadLine1, offset = displacement-1, color=gray,title="Senkou span A", transp=90)
p2 = plot(leadLine2, offset = displacement-1, color=gray, title="Senkou span B", transp=90)
fill(p1, p2, color = leadLine1 > leadLine2 ? green : red, title="Kumo Cloud")
///////////////// MACD BARCOLOR /////////////////////
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
hisup= iff(delta>delta[1] and delta>0, 1,
	     iff(delta<delta[1], -1, nz(hisup[1], 0)))
hisdown = iff(delta<delta[1] and delta<0, 1,
	     iff(delta>delta[1], -1, nz(hisdown[1], 0)))
barcolor(hisup==1 and MACD>0 ? lime: hisdown==1 and MACD<0 ? red : blue )
///////////// SIGNAL ///////////////
conbuy = iff(crossover(linereg,pacL) and rising(linereg,5), 1,
	     iff(crossover(linereg,pacH) or (crossunder(linereg,pacL) and pacL<signalMA), -1, nz(conbuy[1], 0)))
consell = iff(crossunder(linereg,pacH) and falling(linereg,5), 1,
	     iff(crossunder(linereg,pacL) or (crossover(linereg,pacH) and pacH>signalMA), -1, nz(consell[1], 0)))
golong= conbuy==1 and close>open and open<pacH and close>linereg and hisdown!=1
goshort= consell==1 and close<open and open>pacL and close<linereg and hisup!=1
if(golong)
    strategy.entry("Buy",strategy.long)
if(goshort)
    strategy.entry("Sell",strategy.short)
closelong= conbuy==-1
closeshort=consell==-1
if(closelong)
    strategy.close("Buy")
if(closeshort)
    strategy.close("Sell")
 ////////////// TP and SL//.
//SL = input(defval=200.00, title="Stop Loss Point", type=float, step=1)
//rr= input(defval=0.1,title="Reward/Risk",type=float)
//useTPandSL = input(defval = false, title = "Use exit order strategy?")
//Stop = SL
//Take=SL*rr
//Q = 100
//if(useTPandSL)
//    strategy.exit("Out Long", "Buy", qty_percent=Q, profit= Take, loss=Stop)
//    strategy.exit("Out Short", "Sell", qty_percent=Q, profit= Take, loss=Stop) 

Thêm nữa