Strategi Jangka Pendek Kuantitatif Awan Ichimoku


Tarikh penciptaan: 2023-12-21 11:13:15 Akhirnya diubah suai: 2023-12-21 11:13:15
Salin: 1 Bilangan klik: 614
1
fokus pada
1166
Pengikut

Strategi Jangka Pendek Kuantitatif Awan Ichimoku

Gambaran keseluruhan

Ichimoku Cloud Quant Scalping Strategy adalah strategi kuantitatif garis pendek yang menggabungkan carta keseimbangan pertama dan indeks arah purata. Strategi ini menggunakan indikator Ichimoku Cloud untuk menentukan arah trend, dengan penapis indikator ADX untuk pasaran bukan trend, untuk melakukan operasi garis pendek dalam keadaan trend.

Prinsip Strategi

Strategi ini terdiri daripada dua bahagian utama:

  1. Indeks Awan Ichimoku untuk Menentukan Arah Trend

    • Garis penukaran: garis tengah 7 kitaran terakhir
    • Garis asas: garis tengah 26 kitaran terakhir
    • Leading Span A: Titik tengah antara Garis Konversi dan Garis Asas
    • Leading Span B: garis tengah 52 kitaran terakhir

Apabila harga di atas awan adalah tren multihead, di bawah adalah tren kosong. Strategi menilai perubahan trend dengan memecahkan Garis Konversi.

  1. Penapis ADX untuk pasaran bukan trend

ADX lebih besar daripada 20 menunjukkan keadaan trend, ketika strategi menghasilkan isyarat perdagangan. Kurang daripada 20 menunjukkan penumpuan, ketika strategi tidak diperdagangkan.

Peraturan transaksi:

  • Masuk beramai-ramai: Harga melepasi Conversion Line di atas dan ADX lebih besar daripada 20
  • Kemasukan kosong: Harga menembusi bawah Garis Pertukaran dan ADX lebih besar daripada 20
  • Stop Loss: 150 mata
  • Berhenti: 200 mata

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Ichimoku Cloud Indicator dapat menentukan arah dan titik perubahan trend dengan tepat, dan dengan ADX Indicator, penyaringan pasaran untuk mengelakkan penembusan palsu.

  2. Kawalan penarikan balik. Tetapan stop loss 150 untuk mengawal kerugian tunggal.

  3. Rasio keuntungan dan kerugian yang tinggi. Stop loss adalah 200 mata, stop loss adalah 150 mata, rasio keuntungan dan kerugian sehingga 1.33, mudah untuk mendapat keuntungan.

  4. Frekuensi dagangan sederhana. Dagangan hanya dalam keadaan yang sedang tren, tidak kerap masuk ke pasaran.

Analisis risiko

Strategi ini juga mempunyai risiko:

  1. Risiko kegagalan penghakiman trend. Indeks Awan Ichimoku akan menghasilkan isyarat yang salah apabila penghakiman trend bertukar kepada kegagalan.

  2. Hentikan kerugian yang dilalui oleh risiko. Hentikan kerugian dalam keadaan yang cepat mungkin dapat ditembusi. Anda boleh menetapkan hentikan bergerak atau mempertimbangkan untuk meningkatkan jangkauan hentikan kerugian.

  3. Risiko dagangan malam dan sebelum tutup. Strategi secara lalai hanya berlaku pada perdagangan hari, penilaian malam dan sebelum tutup mungkin tidak berkesan. Anda boleh menetapkan perdagangan 24 jam atau membuat strategi perdagangan secara berasingan selepas tutup sebelum tutup.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa arah:

  1. Optimasi parameter indikator awan Ichimoku. Anda boleh menguji pelbagai parameter garisan penukaran, garisan asas dan garisan pilihan untuk mencari kombinasi parameter yang terbaik.

  2. Parameter ADX dan pengoptimuman had. Anda boleh menguji parameter kitaran ADX dan nilai had filter untuk mencari parameter yang optimum.

  3. Optimasi Stop Loss. Titik Stop Loss yang optimum boleh ditentukan berdasarkan data sejarah.

  4. Strategi berhenti bergerak. Tetapkan berhenti bergerak untuk lebih baik mengikuti trend keuntungan.

  5. Indikator bantuan untuk menilai trend. Menambah trend penilaian bantuan indikator seperti MACD, KD, meningkatkan ketepatan isyarat.

  6. Pengoptimuman adaptasi. Menetapkan parameter strategi perdagangan secara berasingan untuk varieti yang berbeza.

ringkaskan

Ichimoku Cloud Quantitative Short Line Strategy mengintegrasikan kelebihan Ichimoku Cloud Indicator dan ADX Indicator, baik untuk menentukan titik perubahan trend dengan tepat, tetapi juga untuk menghapuskan pasaran yang betul, untuk mengelakkan isyarat palsu. Strategi ini mempunyai nisbah kerugian yang tinggi, pengunduran yang boleh dikawal, sesuai untuk mengikuti trend untuk melakukan operasi garis pendek.

Kod sumber strategi
/*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)