Choppiness K-line Breakthrough Strategy adalah strategi perdagangan kuantitatif yang memanfaatkan pola K-line dan indikator momentum untuk menentukan entri dan keluar untuk perdagangan saham. Strategi ini menggabungkan beberapa indikator teknis untuk mengidentifikasi tren harga dan sinyal momentum, mengambil posisi di titik terobosan dan mengatur stop loss dan mengambil keuntungan untuk secara efektif mengendalikan risiko perdagangan.
Konsep inti dari Strategi Terobosan K-line Choppiness adalah:
Menggunakan Indeks Saluran Komoditas (CCI) untuk menentukan apakah harga berada di zona overbought atau oversold.
Mengidentifikasi pola garis K untuk mendeteksi sinyal terobosan. Garis K merah dengan penutupan lebih tinggi dari terbuka menunjukkan tren naik, sementara garis K hijau yang ditutup lebih rendah dari terbuka menunjukkan tren menurun.
Menggabungkan volume perdagangan untuk hanya mempertimbangkan sinyal beli dan jual ketika volume meningkat.
Mengambil posisi panjang ketika tren naik diidentifikasi dan CCI menunjukkan oversold. Mengambil posisi pendek ketika tren menurun diidentifikasi dan CCI menunjukkan overbought.
Mengatur stop loss dan mengambil poin keuntungan untuk mengontrol risiko dan mengunci keuntungan.
Secara khusus, strategi ini menggunakan CCI untuk analisis overbought/oversold, pola K-line untuk arah tren, dan volume untuk momentum.
Strategi Terobosan K-line Choppiness memiliki keuntungan berikut:
Kombinasi beberapa indikator meningkatkan keandalan sinyal perdagangan. CCI mengidentifikasi zona perdagangan, K-line menentukan arah tren, dan volume mencerminkan momentum pasar.
Menggunakan pola K-line membantu mengidentifikasi dengan akurat pembalikan tren.
Stop loss and take profit secara efektif mengendalikan risiko dan kunci dalam keuntungan.
Hanya mempertimbangkan sinyal pada volume meningkat menghindari sinyal palsu.
Logika strategi jelas dan parameter fleksibel untuk optimasi di seluruh saham dan lingkungan pasar.
Strategi dapat ditingkatkan lebih lanjut melalui lebih banyak faktor, pembelajaran mesin dll, meningkatkan stabilitas dan profitabilitas.
Risiko potensial dari strategi ini meliputi:
Parameter CCI dapat disetel untuk sensitivitas yang lebih tinggi.
Penembusan palsu dalam pola garis K dapat menyebabkan kerugian yang tidak perlu. Lebih banyak indikator dapat ditambahkan untuk konfirmasi, atau persentase stop loss disesuaikan.
Lonjakan volume juga dapat dimanipulasi, jadi penting untuk memperhatikan perbedaan volume-harga.
Stop loss / take profit statis dapat keluar lebih awal atau melewatkan tren lebih lanjut.
Parameter yang dipasang untuk satu stok mungkin tidak sesuai dengan yang lain.
Hasil backtest mungkin tidak mewakili pertunjukan langsung.
Strategi ini dapat ditingkatkan melalui:
Mengoptimalkan parameter CCI untuk generasi sinyal yang lebih cepat.
Menambahkan lebih banyak indikator seperti MACD, Bollinger Bands untuk meningkatkan akurasi sinyal.
Menggunakan model pembelajaran mesin yang dilatih pada data historis untuk memprediksi titik masuk/keluar.
Menggunakan stop loss dinamis dan mengambil keuntungan berdasarkan volatilitas pasar.
Memperbaiki logika lonjakan volume untuk mendeteksi divergensi volume-harga.
Penyesuaian parameter untuk berbagai stok dan rezim pasar untuk meningkatkan stabilitas.
Mengintegrasikan mekanisme tren untuk kinerja yang lebih baik di seluruh tahap pasar.
Modularisasi strategi untuk fleksibilitas dan ekstensibilitas yang lebih besar.
Choppiness K-line Breakthrough Strategy adalah strategi perdagangan jangka pendek yang relatif lurus ke depan. Ini menggabungkan indikator teknis umum untuk logika yang jelas dan pengendalian risiko melalui stop loss dan take profit. Strategi dapat dioptimalkan secara fleksibel berdasarkan kebutuhan untuk menangkap pembalikan jangka pendek dan tren jangka menengah.
/*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 **********