Chiến lược định lượng ngắn hạn của Ichimoku Cloud


Ngày tạo: 2023-12-21 11:13:15 sửa đổi lần cuối: 2023-12-21 11:13:15
sao chép: 1 Số nhấp chuột: 1010
1
tập trung vào
1623
Người theo dõi

Chiến lược định lượng ngắn hạn của Ichimoku Cloud

Tổng quan

Ichimoku Cloud Quant Scalping Strategy là một chiến lược định lượng đường ngắn kết hợp bảng cân bằng đầu tiên và chỉ số hướng trung bình. Chiến lược này sử dụng chỉ số đám mây Ichimoku để xác định hướng xu hướng, kết hợp với chỉ số ADX để lọc thị trường không có xu hướng và hoạt động đường ngắn trong tình huống xu hướng.

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

Chiến lược này bao gồm hai phần chính:

  1. Chỉ số đám mây Ichimoku đánh giá xu hướng

    • Conversion Line: Đường trung bình của 7 chu kỳ gần nhất
    • Base Line: Đường trung bình của 26 chu kỳ gần nhất
    • Leading Span A: Điểm giữa đường chuyển đổi và đường cơ sở
    • Leading Span B: Đường trung bình của 52 chu kỳ gần nhất

Khi giá trên đám mây là xu hướng đa đầu và dưới là xu hướng không đầu. Chiến lược đánh giá sự đảo ngược của xu hướng bằng cách phá vỡ đường chuyển đổi.

  1. ADX lọc thị trường không xu hướng

ADX lớn hơn 20 cho thấy xu hướng, khi đó chiến lược sẽ tạo ra tín hiệu giao dịch. Nhỏ hơn 20 cho thấy thu hẹp, khi đó chiến lược không giao dịch.

Quy tắc giao dịch:

  • Nhiều đầu vào: Giá vượt qua đường chuyển đổi và ADX lớn hơn 20
  • Bước vào đầu rỗng: Giá phá vỡ dưới đường chuyển đổi và ADX lớn hơn 20
  • Stop Loss: 150 điểm
  • Đứng yên: 200 điểm

Phân tích lợi thế

Chiến lược này có những ưu điểm sau:

  1. Chỉ số Ichimoku Cloud có thể xác định chính xác xu hướng và điểm biến, kết hợp với chỉ số ADX để lọc thị trường và tránh phá vỡ giả.

  2. Kiểm soát rút lui. Cài đặt dừng lỗ là 150 điểm, có thể kiểm soát hiệu quả tổn thất đơn lẻ.

  3. Tỷ lệ lỗ hổng cao. Stop loss là 200 điểm, stop loss là 150 điểm, tỷ lệ lỗ hổng cao đến 1.33, dễ kiếm lợi nhuận.

  4. Tần suất giao dịch vừa phải. Chỉ giao dịch trong thời gian có xu hướng, không có tần suất cao.

Phân tích rủi ro

Chiến lược này cũng có những rủi ro sau:

  1. Nguy cơ thất bại trong định hướng. Chỉ số đám mây Ichimoku có thể tạo ra tín hiệu sai khi định hướng chuyển sang thất bại. Bạn có thể kéo dài chu kỳ tham số để tối ưu hóa.

  2. Hạn chế thiệt hại có thể bị phá vỡ. Bạn có thể đặt Hạn chế di chuyển hoặc xem xét tăng phạm vi Hạn chế

  3. Rủi ro giao dịch đêm và trước cửa. Chiến lược mặc định chỉ hoạt động trong giao dịch ban ngày, phán đoán về giao dịch đêm và trước cửa có thể không hiệu quả. Có thể thiết lập giao dịch 24 giờ hoặc lập chiến lược giao dịch riêng sau khi mở cửa trước cửa.

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

Chiến lược này có thể được tối ưu hóa theo các hướng sau:

  1. Tối ưu hóa tham số chỉ số của đám mây Ichimoku. Bạn có thể thử nghiệm các tham số chuyển đổi khác nhau, tham số chuẩn và tham số chọn để tìm ra sự kết hợp tham số tốt nhất.

  2. Tối ưu hóa tham số ADX và giá trị rào. Bạn có thể kiểm tra tham số chu kỳ và giá trị rào của ADX để tìm tham số tối ưu.

  3. Tối ưu hóa dừng lỗ. Các điểm dừng lỗ tối ưu có thể được xác định dựa trên dữ liệu lịch sử.

  4. Chiến lược dừng động. Thiết lập dừng động để theo dõi xu hướng lợi nhuận tốt hơn.

  5. Các chỉ số hỗ trợ phán đoán xu hướng. Thêm MACD, KD và các chỉ số hỗ trợ phán đoán xu hướng, cải thiện độ chính xác của tín hiệu.

  6. Tối ưu hóa khả năng thích ứng. Thiết lập các tham số chiến lược giao dịch riêng cho các giống khác nhau.

Tóm tắt

Chiến lược ngắn hạn định lượng đám mây Ichimoku tích hợp các ưu điểm của chỉ số đám mây Ichimoku và chỉ số ADX, có thể xác định chính xác điểm biến đổi xu hướng và có thể loại bỏ hiệu quả thị trường để tránh tín hiệu sai. Chiến lược này có tỷ lệ lỗ cao, có thể thu hồi được, phù hợp để hoạt động ngắn hạn theo xu hướng.

Mã nguồn chiến lược
/*backtest
start: 2023-12-13 00:00:00
end: 2023-12-20 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title='[STRATEGY][RS]Spot/Binary Scalper V0', shorttitle='IC', overlay=true, initial_capital=100000, currency=currency.USD)
//  ||  Adapted from:
//  ||      http://www.binaryoptionsedge.com/topic/1414-ta-spot-scalping-it-works-damn-good/?hl=singh

//  ||  Ichimoku cloud:
conversionPeriods = input(title='Conversion Periods:',  defval=7, minval=1),
basePeriods = 26//input(title='Base Periods',  defval=26, minval=1)
laggingSpan2Periods = 52//input(title='Lagging Span:',  defval=52, minval=1),
displacement = 26//input(title='Displacement:',  defval=26, minval=1)

f_donchian(_len) => avg(lowest(_len), highest(_len))

f_ichimoku_cloud(_conversion_periods, _base_periods, _lagging_span)=>
    _conversion_line = f_donchian(_conversion_periods)
    _base_line = f_donchian(_base_periods)
    _lead_line1 = avg(_conversion_line, _base_line)
    _lead_line2 = f_donchian(_lagging_span)
    [_conversion_line, _base_line, _lead_line1, _lead_line2]

[conversionLine, baseLine, leadLine1, leadLine2] = f_ichimoku_cloud(conversionPeriods, basePeriods, laggingSpan2Periods)

//ps0 = plot(title='A', series=leadLine1, color=green, linewidth=2)
//ps1 = plot(title='B', series=leadLine2, color=red, linewidth=2)
//fill(title='AB', plot1=ps0, plot2=ps1, color=blue, transp=80)
//plot(title='Base', series=baseLine, color=blue, linewidth=1, offset=displacement)
plot(title='Conversion', series=conversionLine, color=blue, linewidth=1)
//  ||----------------------------------------------------------------------------------------------------------------------------------------------||
//  ||  ADX
len = input(title="Length",  defval=14)
th = input(title="threshold",  defval=20)

TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0


SmoothedTrueRange = nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
SmoothedDirectionalMovementPlus = nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus

DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, len)
//  ||----------------------------------------------------------------------------------------------------------------------------------------------||
//  ||  Trade session:
USE_TRADESESSION = input(title='Use Trading Session?', type=bool, defval=true)
trade_session = input(title='Trade Session:', defval='0400-1500', confirm=false)
istradingsession = not USE_TRADESESSION ? false : not na(time('1', trade_session))
bgcolor(istradingsession?gray:na)
//  ||----------------------------------------------------------------------------------------------------------------------------------------------||
//  ||  Strategy:
trade_size = input(title='Trade Size:',  defval=1)
stop_loss_in_ticks = input(title='Stop Loss in ticks:',  defval=150)
take_profit_in_ticks = input(title='Take Profit in ticks:',  defval=200)

buy_icloud_signal = open < conversionLine and close > conversionLine
buy_adx_signal = DIPlus > 20
buy_signal = istradingsession and buy_icloud_signal and buy_adx_signal

sel_icloud_signal = open > conversionLine and close < conversionLine
sel_adx_signal = DIMinus > 20
sel_signal = istradingsession and sel_icloud_signal and sel_adx_signal


strategy.order('buy', long=true, qty=trade_size, comment='buy', when=buy_signal)
strategy.order('sel', long=false, qty=trade_size, comment='sel', when=sel_signal)

strategy.exit('exit buy', from_entry='buy', profit=take_profit_in_ticks, loss=stop_loss_in_ticks)
strategy.exit('exit sel', from_entry='sel', profit=take_profit_in_ticks, loss=stop_loss_in_ticks)