Ichimoku Cloud Quant Scalping Strategi

Penulis:ChaoZhang, Tanggal: 2023-12-21 11:13:15
Tag:

img

Gambaran umum

Ichimoku Cloud Quant Scalping Strategy adalah strategi kuantitatif jangka pendek yang mengintegrasikan Ichimoku Cloud dan Average Directional Index (ADX).

Logika Strategi

Strategi ini terdiri dari dua komponen utama:

  1. Ichimoku Cloud untuk menilai arah tren

    • Garis Konversi: harga tengah dari 7 periode terakhir
    • Garis dasar: harga tengah dari 26 periode terakhir
    • Jangkauan utama A: titik tengah dari garis konversi dan garis dasar
    • Leading Span B: harga tengah dari 52 periode terakhir

    Harga di atas awan menunjukkan tren naik sementara di bawahnya berarti tren turun. Strategi ini menggunakan pecahnya Garis Konversi untuk menentukan pembalikan tren.

  2. ADX untuk memfilter pasar non-trending

    Hanya mengambil sinyal ketika ADX lebih besar dari 20, menunjukkan pasar tren. Tidak ada perdagangan ketika ADX <20 selama pasar range bound.

Peraturan perdagangan:

  • Long Entry: price breaks di atas Conversion Line dan ADX>20
  • Short Entry: price breaks di bawah Conversion Line dan ADX>20
  • Stop Loss: 150 tik
  • Ambil Keuntungan: 200 tik

Analisis Keuntungan

Keuntungan dari strategi ini:

  1. Mengikuti tren, menghindari kisaran. Ichimoku Cloud dapat secara akurat menentukan arah tren dan titik balik. ADX memfilter pasar yang terikat kisaran untuk mencegah pecah palsu.

  2. Kontrol penarikan. 150 tik stop loss efektif batas kerugian per perdagangan.

  3. Faktor keuntungan tinggi. 200 tik mengambil keuntungan vs 150 tik stop loss memberikan faktor keuntungan 1,33, mudah untuk mendapatkan keuntungan.

  4. Frekuensi perdagangan yang tepat. hanya perdagangan ketika tren muncul mencegah overtrading.

Analisis Risiko

Risiko adalah:

  1. Risiko kegagalan penentuan tren. sinyal yang salah ketika Ichimoku Cloud gagal mendeteksi pembalikan tren. dapat mengoptimalkan parameter untuk meningkatkan akurasi.

  2. Stop loss yang terkena risiko. Stop loss dapat ditembus selama pasar cepat. Dapat menggunakan trailing stop loss atau jangkauan stop loss yang lebih luas.

  3. Risiko perdagangan overnight dan premarket. Pengaturan default hanya memungkinkan perdagangan siang hari. Penghakiman mungkin gagal selama jam yang diperpanjang. Dapat mengaktifkan perdagangan 24 jam atau menyesuaikan strategi untuk sesi yang diperpanjang.

Arahan Optimasi

Potensi arah optimasi:

  1. Pengaturan parameter dari Ichimoku Cloud untuk menemukan pengaturan optimal.

  2. Parameter ADX dan pengoptimalan ambang untuk menentukan nilai terbaik.

  3. Target keuntungan dan optimasi stop loss berdasarkan data historis.

  4. Meninggalkan stop loss untuk lebih mengikuti tren.

  5. Indikator tambahan seperti MACD dan KD untuk membantu penentuan tren.

  6. Optimasi adaptif untuk produk yang berbeda.

Kesimpulan

Ichimoku Cloud Quant Scalping Strategy mengintegrasikan keuntungan Ichimoku Cloud dan ADX untuk secara akurat menentukan titik pembalikan tren dan menyaring pasar yang terikat rentang.


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


Lebih banyak