Chiến lược thoát khỏi Chandelier

Tác giả:ChaoZhang, Ngày: 2024-01-05 15:57:51
Tags:

img

Tổng quan

Chiến lược này sử dụng chỉ số Chandelier Exit để xác định hướng và động lực của sự đột phá giá và tạo ra tín hiệu mua và bán.

Chiến lược logic

Chiến lược này dựa trên chỉ số Chandelier Exit, thiết lập các đường stop-loss dựa trên mức cao nhất, thấp nhất và phạm vi trung bình. Cụ thể, nó tính toán ATR 22 ngày và nhân nó với một hệ số ( mặc định 3) để lấy giá trị cho các đường stop dài và ngắn. Chiến lược tạo ra tín hiệu bán khi giá phá vỡ dưới mức dừng dài khi dài, và tín hiệu mua khi giá phá vỡ trên mức dừng ngắn khi ngắn.

Chiến lược này chỉ thực hiện các hoạt động mua. Nó kích hoạt một bước vào dài khi giá phá vỡ trên đường dừng dài trước đó và tạo ra một tín hiệu thoát khi giá giảm xuống dưới đường dừng ngắn, đóng vị trí dài.

Phân tích lợi thế

  • Sử dụng các đường dừng lỗ năng động từ Chandelier Exit để kiểm soát rủi ro hiệu quả
  • Kết hợp sự đột phá giá để nắm bắt các động thái xu hướng
  • Thực hiện một chiến lược tránh đảo ngược tăng/giảm bằng cách chỉ mua
  • Điều kiện cảnh báo kích hoạt thông báo để theo dõi tình trạng chiến lược

Phân tích rủi ro

  • Chandelier Exit nhạy cảm với sự gia tăng biến động có thể gây ra tín hiệu sai
  • Không có lệnh dừng lỗ sau khi mua để giới hạn lỗ
  • Không có cơ chế lấy lợi nhuận để khóa lợi nhuận

Giảm rủi ro:

  1. Thêm bộ lọc với các chỉ báo khác để tránh tín hiệu sai
  2. Thực hiện stop loss để giới hạn mức lỗ tối đa %
  3. Bao gồm các điểm dừng lợi nhuận cuối cùng, chẳng hạn như điều chỉnh động của đường bán hoặc thoát một phần

Cơ hội gia tăng

  1. Kiểm tra các bộ tham số khác nhau để tối ưu hóa các mục nhập và lối ra
  2. Thêm bộ lọc chỉ số để xác nhận tín hiệu và tránh tín hiệu sai
  3. Xem xét cho phép cả hai giao dịch mua và bán
  4. Đưa ra các cơ chế dừng lỗ và lấy lợi nhuận

Kết luận

Chiến lược này xác định các cơ hội đảo ngược bằng cách sử dụng các đường dừng động từ chỉ số Chandelier Exit. Nó mua khi giá phá vỡ đường dừng dài và bán khi giá giảm xuống dưới đường dừng ngắn, thực hiện một chiến lược đơn giản một chiều tránh đảo ngược tăng / giảm. Nó kiểm soát hiệu quả rủi ro nhưng thiếu các quy định dừng lỗ và lấy lợi nhuận.


/*backtest
start: 2023-12-28 00:00:00
end: 2024-01-04 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Chandelier Exit Strategy", overlay=true)

length = input(title='ATR Period', defval=22)
mult = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
showLabels = input(title='Show Buy/Sell Labels ?', defval=true)
useClose = input(title='Use Close Price for Extremums ?', defval=true)
highlightState = input(title='Highlight State ?', defval=true)

atr = mult * ta.atr(length)

longStop = (useClose ? ta.highest(close, length) : ta.highest(length)) - atr
longStopPrev = nz(longStop[1], longStop)
longStop := close[1] > longStopPrev ? math.max(longStop, longStopPrev) : longStop

shortStop = (useClose ? ta.lowest(close, length) : ta.lowest(length)) + atr
shortStopPrev = nz(shortStop[1], shortStop)
shortStop := close[1] < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop

var int dir = 1
dir := close > shortStopPrev ? 1 : close < longStopPrev ? -1 : dir

var color longColor = color.green
var color shortColor = color.red

longStopPlot = plot(dir == 1 ? longStop : na, title='Long Stop', style=plot.style_linebr, linewidth=2, color=color.new(longColor, 0))
buySignal = dir == 1 and dir[1] == -1
plotshape(buySignal ? longStop : na, title='Long Stop Start', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(longColor, 0))
plotshape(buySignal and showLabels ? longStop : na, title='Buy Label', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(longColor, 0), textcolor=color.new(color.white, 0))

shortStopPlot = plot(dir == 1 ? na : shortStop, title='Short Stop', style=plot.style_linebr, linewidth=2, color=color.new(shortColor, 0))
sellSignal = dir == -1 and dir[1] == 1
plotshape(sellSignal ? shortStop : na, title='Short Stop Start', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(shortColor, 0))
plotshape(sellSignal and showLabels ? shortStop : na, title='Sell Label', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(shortColor, 0), textcolor=color.new(color.white, 0))

changeCond = dir != dir[1]
alertcondition(changeCond, title='Alert: CE Direction Change', message='Chandelier Exit has changed direction!')
alertcondition(buySignal, title='Alert: CE Buy', message='Chandelier Exit Buy!')
alertcondition(sellSignal, title='Alert: CE Sell', message='Chandelier Exit Sell!')

// Define initial capital
initial_capital =25

// Trigger buy order and close buy order on sell signal
if buySignal
    strategy.entry("Buy", strategy.long, qty = initial_capital / close)

if sellSignal
    strategy.close("Buy")


Thêm nữa