Ichimoku Cloud Quant Scalping Strategi

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

img

Ringkasan

Strategi Scalping Kuantiti Awan Ichimoku adalah strategi kuantitatif jangka pendek yang mengintegrasikan Awan Ichimoku dan Indeks Arah Purata (ADX). Ia menggunakan Awan Ichimoku untuk menentukan arah trend dan ADX untuk menapis pasaran bukan trend untuk scalping semasa keadaan trend.

Logika Strategi

Strategi ini terdiri daripada dua komponen utama:

  1. Ichimoku Cloud untuk menilai arah trend

    • Garis penukaran: harga purata 7 tempoh terakhir
    • Garis asas: harga purata 26 tempoh terakhir
    • Jangkauan utama A: titik tengah garis penukaran dan garis asas
    • Tempoh Utama B: harga purata 52 tempoh terakhir

    Harga di atas awan menunjukkan trend menaik manakala di bawahnya bermaksud trend menurun. Strategi ini menggunakan penembusan Garis Penukaran untuk menentukan pembalikan trend.

  2. ADX untuk menapis pasaran bukan trend

    Hanya mengambil isyarat apabila ADX adalah lebih besar daripada 20, menunjukkan pasaran trend. Tiada perdagangan apabila ADX <20 semasa pasaran terhad julat.

Peraturan Perdagangan:

  • Pendaftaran panjang: Pelanggaran harga di atas Garis Penukaran dan ADX>20
  • Entry Pendek: Harga pecah di bawah Garis Penukaran dan ADX>20
  • Stop Loss: 150 tik
  • Ambil Keuntungan: 200 tik

Analisis Kelebihan

Kelebihan strategi ini:

  1. Mengikuti trend, mengelakkan julat. Ichimoku Cloud boleh menentukan arah trend dan titik perubahan dengan tepat. ADX menapis pasaran yang terikat julat untuk mengelakkan pecah palsu.

  2. Kawalan penarikan. 150 tik berhenti kerugian secara berkesan had setiap kerugian perdagangan.

  3. Faktor keuntungan yang tinggi. 200 tik mengambil keuntungan berbanding 150 tik stop loss memberikan faktor keuntungan 1.33, mudah untuk mendapatkan keuntungan.

  4. Frekuensi perdagangan yang sesuai. Hanya berdagang apabila trend muncul menghalang perdagangan berlebihan.

Analisis Risiko

Risiko adalah:

  1. Risiko kegagalan penentuan trend. Isyarat yang salah apabila Ichimoku Cloud gagal mengesan pembalikan trend. Boleh mengoptimumkan parameter untuk meningkatkan ketepatan.

  2. Stop loss yang terjejas risiko. Stop loss boleh ditembusi semasa pasaran yang cepat. Boleh menggunakan trailing stop loss atau julat stop loss yang lebih luas.

  3. Risiko perdagangan semalaman dan pra pasaran. Tetapan lalai hanya membenarkan perdagangan siang. Penghakiman mungkin gagal semasa jam yang diperpanjang. Boleh membolehkan perdagangan 24H atau menyesuaikan strategi untuk sesi yang diperpanjang.

Arahan pengoptimuman

Arah pengoptimuman yang berpotensi:

  1. Penyesuaian parameter Ichimoku Cloud untuk mencari tetapan optimum.

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

  3. Sasaran keuntungan dan pengoptimuman stop loss berdasarkan data sejarah.

  4. Menyimpan stop loss untuk lebih mengikuti trend.

  5. Penunjuk tambahan seperti MACD dan KD untuk membantu penentuan trend.

  6. Pengoptimuman adaptif untuk produk yang berbeza.

Kesimpulan

Strategi Scalping Kuantum Ichimoku Cloud mengintegrasikan kelebihan Ichimoku Cloud dan ADX untuk menentukan dengan tepat titik pembalikan trend dan menapis pasaran yang terikat julat. Ia mempunyai faktor keuntungan yang tinggi, penarikan yang boleh dikawal, dan sesuai untuk scalping di sepanjang trend. Penambahbaikan lanjut pada parameter, stop loss, penunjuk tambahan dapat meningkatkan kestabilan dan keuntungan.


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