Ichimoku Cloud Quant Scalping Chiến lược

Tác giả:ChaoZhang, Ngày: 21-12-2023 11:13:15
Tags:

img

Tổng quan

Ichimoku Cloud Quant Scalping Strategy là một chiến lược định lượng ngắn hạn tích hợp Ichimoku Cloud và Chỉ số hướng trung bình (ADX). Nó sử dụng Ichimoku Cloud để xác định hướng xu hướng và ADX để lọc các thị trường không có xu hướng cho việc vỏ đầu trong điều kiện xu hướng.

Chiến lược logic

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

  1. Ichimoku Cloud để đánh giá xu hướng

    • Đường chuyển đổi: giá trung bình của 7 kỳ cuối cùng
    • Đường cơ sở: giá trung bình của 26 kỳ cuối cùng
    • Dải dẫn A: điểm giữa của đường chuyển đổi và đường cơ sở
    • Leading Span B: giá trung bình của 52 kỳ cuối cùng

    Giá trên đám mây cho thấy xu hướng tăng trong khi dưới đó có nghĩa là xu hướng giảm.

  2. ADX để lọc thị trường không theo xu hướng

    Chỉ nhận tín hiệu khi ADX lớn hơn 20, gợi ý thị trường xu hướng. Không giao dịch khi ADX <20 trong thị trường giới hạn phạm vi.

Quy tắc thương mại:

  • Long Entry: Giá phá vỡ trên đường chuyển đổi và ADX>20
  • Short Entry: Giá phá vỡ dưới đường chuyển đổi và ADX>20
  • Stop Loss: 150 tick
  • Take Profit: 200 tick

Phân tích lợi thế

Những lợi thế của chiến lược này:

  1. Theo xu hướng, tránh phạm vi. Ichimoku Cloud có thể xác định chính xác hướng xu hướng và điểm chuyển đổi. ADX lọc thị trường giới hạn phạm vi để ngăn chặn đột phá sai.

  2. Kiểm soát rút tiền. 150 tick dừng lỗ hiệu quả giới hạn mỗi thương mại mất.

  3. Tỷ lệ lợi nhuận cao. 200 tick lấy lợi nhuận so với 150 tick dừng lỗ cho một tỷ lệ lợi nhuận 1,33, dễ dàng để đạt được lợi nhuận.

  4. Tần suất giao dịch thích hợp. Chỉ giao dịch khi xu hướng xuất hiện ngăn ngừa giao dịch quá mức.

Phân tích rủi ro

Những rủi ro là:

  1. Nguy cơ thất bại xác định xu hướng. tín hiệu không chính xác khi Ichimoku Cloud không phát hiện được sự đảo ngược xu hướng. Có thể tối ưu hóa các tham số để cải thiện độ chính xác.

  2. Stop loss bị ảnh hưởng bởi rủi ro. Stop loss có thể được thâm nhập trong thời gian thị trường nhanh. Có thể sử dụng stop loss hoặc phạm vi stop loss rộng hơn.

  3. Rủi ro giao dịch qua đêm và tiền thị trường. Cài đặt mặc định chỉ cho phép giao dịch ban ngày. Phán quyết có thể thất bại trong giờ mở rộng. Có thể cho phép giao dịch 24 giờ hoặc tùy chỉnh chiến lược cho các phiên mở rộng.

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

Các hướng tối ưu hóa tiềm năng:

  1. Chế độ điều chỉnh tham số của Ichimoku Cloud để tìm cài đặt tối ưu.

  2. Các thông số ADX và tối ưu hóa ngưỡng để xác định các giá trị tốt nhất.

  3. Mục tiêu lợi nhuận và tối ưu hóa dừng lỗ dựa trên dữ liệu lịch sử.

  4. Dừng lỗ để theo dõi xu hướng tốt hơn.

  5. Các chỉ số bổ sung như MACD và KD để hỗ trợ xác định xu hướng.

  6. Tối ưu hóa thích nghi cho các sản phẩm khác nhau.

Kết luận

Ichimoku Cloud Quant Scalping Strategy tích hợp các lợi thế của Ichimoku Cloud và ADX để xác định chính xác các điểm đảo ngược xu hướng và lọc ra các thị trường giới hạn trong phạm vi. Nó có yếu tố lợi nhuận cao, rút tiền có thể kiểm soát được và phù hợp với việc cắt đầu scalping dọc theo xu hướng.


/*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)


Thêm nữa