Choppiness K-line Strategi Terobosan

Penulis:ChaoZhang, Tarikh: 2023-10-07 15:59:26
Tag:

Ringkasan

Strategi Terobosan Garis K Choppiness adalah strategi perdagangan kuantitatif yang menggunakan corak Garis K dan penunjuk momentum untuk menentukan kemasukan dan keluar untuk perdagangan saham. Strategi ini menggabungkan beberapa penunjuk teknikal untuk mengenal pasti trend harga dan isyarat momentum, mengambil kedudukan pada titik terobosan dan menetapkan stop loss dan mengambil keuntungan untuk mengawal risiko perdagangan dengan berkesan.

Logika Strategi

Konsep teras Strategi Terobosan K-line Choppiness adalah:

  1. Menggunakan Indeks Saluran Komoditi (CCI) untuk menentukan sama ada harga berada di zon overbought atau oversold.

  2. Mengenal pasti corak K-line untuk mengesan isyarat terobosan. K-line merah dengan penutupan lebih tinggi daripada terbuka menunjukkan trend menaik, sementara K-line hijau yang ditutup lebih rendah daripada terbuka menunjukkan trend menurun.

  3. Menggabungkan jumlah dagangan untuk hanya mempertimbangkan isyarat beli dan jual apabila jumlahnya meningkat.

  4. Mengambil kedudukan panjang apabila trend menaik dikenal pasti dan CCI menunjukkan oversold. Mengambil kedudukan pendek apabila trend menurun dikenal pasti dan CCI menunjukkan overbought.

  5. Menetapkan titik stop loss dan mengambil keuntungan untuk mengawal risiko dan mengunci keuntungan.

Secara khusus, strategi menggunakan CCI untuk analisis overbought / oversold, corak K-line untuk arah trend, dan jumlah untuk momentum. Ia memasuki kedudukan panjang atau pendek apabila kriteria dipenuhi. Hentikan kerugian dan ambil keuntungan digunakan untuk menguruskan risiko dan keuntungan.

Analisis Kelebihan

Strategi Terobosan K-line Choppiness mempunyai kelebihan berikut:

  1. Menggabungkan beberapa penunjuk meningkatkan kebolehpercayaan isyarat perdagangan. CCI mengenal pasti zon perdagangan, K-line menentukan arah trend, dan jumlah mencerminkan momentum pasaran.

  2. Menggunakan corak K-line membantu mengenal pasti pembalikan trend dengan tepat. Sebagai contoh, K-line merah dengan CCI oversold memberikan peluang membeli.

  3. Hentikan kerugian dan ambil keuntungan dengan berkesan mengawal risiko dan kunci dalam keuntungan.

  4. Hanya mempertimbangkan isyarat pada peningkatan jumlah mengelakkan isyarat palsu.

  5. Logik strategi jelas dan parameter fleksibel untuk pengoptimuman di seluruh saham dan persekitaran pasaran.

  6. Strategi ini boleh ditingkatkan lagi melalui lebih banyak faktor, pembelajaran mesin dan lain-lain, meningkatkan kestabilan dan keuntungan.

Analisis Risiko

Risiko berpotensi strategi termasuk:

  1. Sinyal CCI mungkin tertunda, menyebabkan titik masuk optimum yang hilang. Parameter CCI boleh disesuaikan untuk kepekaan yang lebih tinggi.

  2. Penembusan palsu dalam corak K-line boleh menyebabkan kerugian yang tidak perlu.

  3. Lonjakan dalam jumlah juga boleh dimanipulasi, jadi penting untuk memerhatikan perbezaan jumlah-harga.

  4. Stop loss statik / mengambil keuntungan boleh keluar lebih awal atau terlepas trend seterusnya.

  5. Parameter yang dipasang untuk satu stok mungkin tidak sesuai dengan yang lain.

  6. Hasil ujian belakang mungkin tidak mewakili persembahan langsung.

Arahan pengoptimuman

Strategi ini boleh dipertingkatkan melalui:

  1. Mengoptimumkan parameter CCI untuk penjanaan isyarat yang lebih cepat.

  2. Menambah lebih banyak penunjuk seperti MACD, Bollinger Bands untuk meningkatkan ketepatan isyarat.

  3. Menggunakan model pembelajaran mesin yang dilatih pada data sejarah untuk meramalkan titik masuk / keluar.

  4. Menggunakan stop loss dinamik dan mengambil keuntungan berdasarkan turun naik pasaran.

  5. Memperbaiki logik lonjakan jumlah untuk mengesan perbezaan harga-volume.

  6. Penyesuaian parameter untuk stok dan rejim pasaran yang berbeza untuk meningkatkan kestabilan.

  7. Menggabungkan mekanisme trend untuk prestasi yang lebih baik di semua peringkat pasaran.

  8. Mengatur strategi untuk lebih fleksibel dan boleh diperluaskan.

Kesimpulan

Choppiness K-line Breakthrough Strategy adalah strategi perdagangan jangka pendek yang agak lurus. Ia menggabungkan penunjuk teknikal biasa untuk logika yang jelas dan kawalan risiko melalui stop loss dan mengambil keuntungan. Strategi ini boleh dioptimumkan secara fleksibel berdasarkan keperluan untuk menangkap pembalikan jangka pendek dan trend jangka sederhana. Tetapi risiko termasuk lag penunjuk dan pecah palsu harus dikendalikan. Dengan pengoptimuman dan pengurusan risiko yang kukuh, ia boleh membentuk strategi perdagangan kuantitatif asas.


/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © vikris

//@version=4
strategy("[VJ]War Machine PAT Intra", overlay=true, calc_on_every_tick = false)

// ********** Strategy inputs - Start **********

// Used for intraday handling
// Session value should be from market start to the time you want to square-off 
// your intraday strategy
// Important: The end time should be at least 2 minutes before the intraday
// square-off time set by your broker
var i_marketSession = input(title="Market session", type=input.session, 
     defval="0915-1455", confirm=true)

// Make inputs that set the take profit % (optional)
longProfitPerc = input(title="Long Take Profit (%)",
     type=input.float, minval=0.0, step=0.1, defval=5.0) * 0.01

shortProfitPerc = input(title="Short Take Profit (%)",
     type=input.float, minval=0.0, step=0.1, defval=5.0) * 0.01
     
// Set stop loss level with input options (optional)
longLossPerc = input(title="Long Stop Loss (%)",
     type=input.float, minval=0.0, step=0.1, defval=5.0) * 0.01

shortLossPerc = input(title="Short Stop Loss (%)",
     type=input.float, minval=0.0, step=0.1, defval=5.0) * 0.01    

trendFactor = input(title="Trend Factor(Lower means trending)", type=input.integer, minval=1, step=1, defval=50)

oversold = input(title="Oversold", type=input.integer, minval=1, step=1, defval=25)

overbought = input(title="Overbought", type=input.integer, minval=1, step=1, defval=75)

// ********** Strategy inputs - End **********


// ********** Supporting functions - Start **********

// A function to check whether the bar or period is in intraday session
barInSession(sess) => time(timeframe.period, sess) != 0
// Figure out take profit price
longExitPrice  = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)

// Determine stop loss price
longStopPrice  = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)


// ********** Supporting functions - End **********


// ********** Strategy - Start **********
// See if intraday session is active
bool intradaySession = barInSession(i_marketSession)

// Trade only if intraday session is active

//=================Strategy logic goes in here===========================
//Vol Confirmation
vol = volume > volume[1]

//Engulfing candle confirm
bullishEC = close > open[1] and close[1] < open[1]
bearishEC = close < open[1] and close[1] > open[1]

//Candles colors
greenCandle = (close > open)
redCandle = (close < open)

length = input(title="Length", type=input.integer, defval=14, minval=1, maxval=2000)
src = hlc3
upper = sum(volume * (change(src) <= 0 ? 0 : src), length)
lower = sum(volume * (change(src) >= 0 ? 0 : src), length)
_rsi(upper, lower) =>
    100.0 - (100.0 / (1.0 + upper / lower))
mf = _rsi(upper, lower)
ci = 100 * log10(sum(atr(1), length) / (highest(length) - lowest(length))) / log10(length)

//tradeSignal = ((rsiOS or rsiOS[1]) and bullishEC) or ((rsiOB or rsiOB[1]) and bearishEC)




//Final Long/Short Condition
longCondition =  redCandle and mf < oversold and ci <trendFactor and vol
shortCondition = greenCandle and mf >overbought and ci <trendFactor and vol
 
//Long Strategy - buy condition and exits with Take profit and SL
if (longCondition and intradaySession)
    stop_level = longStopPrice
    profit_level = longExitPrice
    strategy.entry("My Long Entry Id", strategy.long)
    strategy.exit("TP/SL", "My Long Entry Id", stop=stop_level, limit=profit_level)


//Short Strategy - sell condition and exits with Take profit and SL
if (shortCondition and intradaySession)
    stop_level = shortStopPrice
    profit_level = shortExitPrice
    strategy.entry("My Short Entry Id", strategy.short)
    strategy.exit("TP/SL", "My Short Entry Id", stop=stop_level, limit=profit_level)
 
 
// Square-off position (when session is over and position is open)
squareOff = (not intradaySession) and (strategy.position_size != 0)
strategy.close_all(when = squareOff, comment = "Square-off")

// ********** Strategy - End **********

Lebih lanjut