Xu hướng đột phá tam giác theo chiến lược

Tác giả:ChaoZhang, Ngày: 2023-09-20 14:24:16
Tags:

Tổng quan

Đây là một chiến lược theo xu hướng. Nó đi dài khi giá phá vỡ hình thành tam giác tăng lên và đóng vị trí khi EMA nhanh vượt qua dưới EMA trung bình. Dừng lỗ và lấy lợi nhuận cũng được thiết lập để kiểm soát rủi ro.

Chiến lược logic

  1. Sử dụng EMA nhanh và EMA trung bình để xác định hướng xu hướng.

  2. Sử dụng giá cao nhất và thấp nhất của các thanh N cuối cùng để xác định xem một tam giác tăng có hình thành hay không.

  3. Sau khi vào, khi EMA nhanh vượt qua dưới EMA trung bình, nó chỉ ra sự đảo ngược xu hướng và đưa ra tín hiệu thoát.

  4. Đặt stop loss ở một tỷ lệ phần trăm nhất định dưới giá nhập cảnh để thoát khỏi stop loss.

  5. Đặt mục tiêu lợi nhuận ở một tỷ lệ phần trăm nhất định so với giá nhập cảnh cho lợi nhuận một phần.

  6. Sử dụng EMA 200 ngày để xác định hướng xu hướng tổng thể, chỉ giao dịch khi xu hướng tăng.

Phân tích lợi thế

  1. Sự hình thành tam giác lọc sự phá vỡ giả và cải thiện độ chính xác nhập cảnh.

  2. EMA nhanh so với EMA trung bình phân chia hợp lý xu hướng và củng cố để tránh các whipsaws.

  3. Các thiết lập dừng lỗ và lấy lợi nhuận hợp lý kiểm soát lỗ giao dịch duy nhất.

  4. Chỉ giao dịch theo xu hướng tăng sẽ tránh những giai đoạn hỗn loạn.

Phân tích rủi ro

  1. Phạm vi tam giác quá hẹp có thể bỏ lỡ xu hướng, trong khi phạm vi quá rộng có thể làm tăng các giao dịch không cần thiết.

  2. Dừng lỗ quá gần có xu hướng bị dừng sớm, trong khi quá rộng không kiểm soát lỗ. Đánh giá và tối ưu hóa tham số.

  3. Thiết lập lợi nhuận lấy một phần không chính xác có thể dẫn đến lợi nhuận vượt quá.

  4. Các thông số chỉ số xu hướng sai có thể dẫn đến hướng vị trí sai.

Hướng dẫn cải thiện

  1. Tối ưu hóa tham số N để xác định tam giác để tìm ra giá trị tối ưu.

  2. Kiểm tra các kết hợp thời gian EMA khác nhau để cải thiện độ chính xác xu hướng.

  3. Tối ưu hóa các thông số dừng lỗ và lấy lợi nhuận dựa trên các đặc điểm của sản phẩm.

  4. Thêm các chỉ số khác như mô hình MACD, Bollinger breakout vv để cải thiện chất lượng tín hiệu.

  5. Thêm cơ chế mở lại để mở rộng lợi nhuận khi xu hướng tiếp tục.

Tóm lại

Chiến lược này nói chung là mạnh mẽ với hình thành tam giác cải thiện độ chính xác tín hiệu. Không gian tối ưu hóa tham số lớn tồn tại để nâng cao hơn nữa. Ngoài ra hãy thử thêm nhiều chỉ số phụ hoặc cải thiện stop loss / take profit để có hiệu quả cao hơn. Nhìn chung chiến lược này có tiềm năng trở thành một xu hướng chất lượng sau chiến lược.


/*backtest
start: 2023-08-20 00:00:00
end: 2023-09-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mohanee

//@version=4

strategy(title="TrianglePoint strategy", overlay=true,pyramiding=2, default_qty_value=3, default_qty_type=strategy.fixed,    initial_capital=10000, currency=currency.USD)
// variables  BEGIN

numPeriods=input(9,title="Number of Bars")
fastEMA = input(13, title="fast EMA", minval=1)
slowEMA = input(65, title="slow EMA", minval=1)

stopLoss = input(title="Stop Loss%", defval=5, minval=1)


HH = highest(close[1],numPeriods)
LL = lowest(close[1],numPeriods)
tringlePoint =  low > LL and high < HH

fastEMAval= ema(close, fastEMA)
slowEMAval= ema(close, slowEMA)
two100EMAval= ema(close, 200)

//plot emas
plot(fastEMAval, color = color.green, linewidth = 1, transp=0)
plot(slowEMAval, color = color.orange, linewidth = 1, transp=0)
plot(two100EMAval, color = color.purple, linewidth = 2, transp=0)

longCondition=fastEMAval>two100EMAval and tringlePoint

//plotshape(triP,style=shape.triangleup,text="Buy",color=color.green,location=location.belowbar)
//plotshape(longCondition,style=shape.triangleup,text="Buy",color=color.green,location=location.belowbar)

//Entry
strategy.entry(id="TBT LE", comment="TBT LE" , long=true,  when= longCondition and strategy.position_size<1)   

//Add
strategy.entry(id="TBT LE", comment="Add" , long=true,  when= longCondition and strategy.position_size>=1 and close<strategy.position_avg_price)   


//barcolor(strategy.position_size>=1 ? color.blue : na)

//Take profit
takeProfitVal=   strategy.position_size>=1 ?  (strategy.position_avg_price * (1+(stopLoss*0.01) )) : 0.00
//strategy.close(id="TBT LE", comment="Profit Exit",  qty=strategy.position_size/2,  when=close>=takeProfitVal and close<open and close<fastEMAval)   //crossunder(close,fastEMAval)
barcolor(strategy.position_size>=1  ? (close>takeProfitVal? color.purple : color.blue): na)

//Exit
strategy.close(id="TBT LE", comment="TBT Exit",   when=crossunder(fastEMAval,slowEMAval))


//stoploss
stopLossVal=   strategy.position_size>=1 ?  (strategy.position_avg_price * (1-(stopLoss*0.01) )) : 0.00

//stopLossVal= close> (strategy.position_avg_price * (1+(stopLoss*0.01) )) ? lowest(close,numPeriods) : (strategy.position_avg_price * (1-(stopLoss*0.01) ))


strategy.close(id="TBT LE", comment="SL Exit",   when= close < stopLossVal)

Thêm nữa