
Sistem perdagangan pembalikan trend kekuatan harga dalaman adalah strategi perdagangan peringkat garis harian berdasarkan indikator kekuatan harga dalaman (IBS). Inti strategi ini adalah untuk mengenal pasti titik pembalikan pasaran yang berpotensi dan menilai keadaan overbought dan oversold pasaran dengan memantau kedudukan harga penutupan garisan sebelumnya dalam julat harga tinggi dan rendahnya. Strategi ini sangat sesuai untuk perdagangan saham dan indeks AS, parameter lalai dioptimumkan untuk indeks utama seperti SPY / SPX dan NDQ / QQQ.
Strategi ini berpusat pada pengiraan dan penggunaan indikator kekuatan harga dalaman (IBS). Indeks IBS dikira dengan formula berikut:
IBS = (前一日收盘价 - 前一日最低价) / (前一日最高价 - 前一日最低价)
Nilai IBS sentiasa berubah antara 0 dan 1:
Peraturan perdagangan untuk strategi ini adalah seperti berikut:
Syarat kemasukan berganda:
Syarat untuk beraksi:
Di samping itu, strategi ini memperkenalkan parameter “peratusan jarak minimum untuk kemasukan baru” untuk memastikan bahawa kedudukan baru hanya dibuka apabila harga cukup banyak ditarik balik, yang berkesan mengurangkan risiko penarikan balik dan mengoptimumkan pengurusan wang.
Pengendalian masa pasaran dengan tepat: Penggunaan penunjuk IBS dapat menangkap keadaan pasaran yang terlalu banyak dan terlalu banyak, memberikan asas matematik yang objektif untuk masuk dan keluar, mengurangkan bias yang disebabkan oleh penilaian subjektif.
Mekanisme penapisan trend: Dengan menggunakan EMA sebagai penapis trend, memastikan arah perdagangan selaras dengan trend utama, dengan berkesan mengelakkan risiko perdagangan berlawanan. Strategi boleh menyesuaikan kitaran EMA mengikut ciri-ciri pasaran yang berbeza, atau mematikan keadaan ini sepenuhnya.
Pengurusan kedudukan yang fleksibel: Strategi menyokong penambahan kedudukan berupa piramida ((maksimum 2 kali) dan memperkenalkan parameter “peratusan jarak masuk baru minimum”, mewujudkan mekanisme pembinaan gudang secara berturut-turut yang lebih pintar, yang dapat mengurangkan kos pemegang kedudukan purata dengan berkesan apabila harga kembali.
Kawalan risiko automatik: Strategi menetapkan had masa pegangan maksimum, walaupun pasaran tidak mencetuskan isyarat keluar biasa, dan akan secara automatik melonggarkan kedudukan selepas tempoh perdagangan maksimum yang ditetapkan, dengan berkesan mengawal masa pendedahan risiko perdagangan tunggal.
Optimasi parameter: Parameter lalai telah dioptimumkan untuk indeks pasaran utama seperti SPY dan QQQ / NDQ, pengguna boleh menggunakan tetapan yang disyorkan secara langsung:
Mod dagangan yang komprehensif: menyokong hanya melakukan lebih, hanya melakukan lebih atau mod dagangan dua hala, menyesuaikan diri dengan persekitaran pasaran dan gaya dagangan yang berbeza.
Sensitiviti parameter: Nilai masuk dan keluar IBS mempunyai kesan besar terhadap prestasi strategi, dan parameter yang tidak betul boleh menyebabkan terlalu banyak perdagangan atau kehilangan peluang perdagangan penting. Adalah disyorkan untuk melakukan pengembalian data sejarah yang mencukupi dan pengoptimuman parameter untuk jenis perdagangan tertentu sebelum digunakan di pasaran.
Risiko pasaran goyah: Dalam pasaran goyah yang tidak mempunyai trend yang jelas, isyarat IBS mungkin sering berlaku, menyebabkan terlalu banyak perdagangan dan peningkatan kos perdagangan yang tidak perlu. Penyelesaian adalah dengan menambah syarat penapisan, seperti meminta beberapa isyarat IBS berturut-turut untuk disahkan atau digabungkan dengan indikator lain (seperti ATR) untuk menilai turun naik pasaran.
Lagging perubahan trend mendadak: Apabila pasaran berubah dengan cepat, indikator IBS yang dikira berdasarkan data sehari sebelumnya mungkin bertindak lambat, menyebabkan waktu masuk atau keluar tidak sesuai. Adalah disyorkan untuk menyesuaikan nilai terhad IBS atau memendekkan masa memegang kedudukan maksimum yang sesuai pada masa turun naik.
Pengurusan risiko wang: Secara lalai menggunakan 50% dana akaun untuk berdagang, yang boleh menyebabkan pendedahan risiko yang terlalu besar dalam kes kenaikan harga beberapa kali. Pengguna disarankan untuk menyesuaikan saiz kedudukan dan parameter kenaikan harga mengikut kemampuan menanggung risiko mereka sendiri.
Batasan pelaksanaan teknikal: Strategi berdasarkan pelaksanaan perdagangan pada harga penutupan yang mungkin menghadapi titik tergelincir dan perbezaan harga dalam operasi sebenar. Untuk mengurangkan risiko tersebut, anda boleh mempertimbangkan untuk memesan pada waktu tertentu sebelum penutupan atau menggunakan harga terhad daripada harga pasaran.
Penyesuaian had dinamik: Strategi semasa menggunakan had masuk dan keluar IBS yang tetap, dan penyesuaian had ini boleh dipertimbangkan berdasarkan pergerakan pasaran yang tidak menentu. Sebagai contoh, penyesuaian had masuk dan keluar boleh ditingkatkan dengan sewajarnya pada masa turun naik yang tinggi untuk mengurangkan isyarat palsu; pada masa turun naik yang rendah, tetapan yang lebih radikal boleh digunakan.
Pengesahan tempoh masa berbilang: Memperkenalkan kerangka analisis tempoh masa berbilang, yang memerlukan isyarat IBS jangka pendek dan pertengahan disahkan pada masa yang sama untuk melakukan perdagangan. Sebagai contoh, selain isyarat IBS garis hari, nilai IBS pada garis pusingan atau 4 jam juga boleh dikira, dan hanya masuk apabila beberapa tempoh masa menunjukkan keadaan overbought atau oversold, yang dapat meningkatkan kualiti isyarat dengan ketara.
Mekanisme Hentian Cerdas: Strategi semasa hanya bergantung pada isyarat keluar IBS dan risiko kawalan masa pegangan maksimum, mekanisme hentian yang lebih bijak boleh diperkenalkan. Sebagai contoh, hentian dinamik berdasarkan ATR, hentian pengesanan atau strategi hentian berdasarkan sokongan / rintangan untuk melindungi keuntungan dan mengawal risiko perdagangan tunggal.
Keadaan pasaran menyesuaikan diri: memperkenalkan mekanisme pengenalan keadaan pasaran, menggunakan parameter yang berbeza di bawah keadaan pasaran yang berbeza (dalam pasaran yang sedang tren, di pasaran yang bergolak). Keadaan pasaran dapat dikenal pasti melalui ADX (dalam indeks arah rata-rata) atau penunjuk kekuatan trend lain, melonggarkan syarat IBS dalam keadaan trend yang kuat, menggunakan had IBS yang lebih ketat di pasaran yang bergolak.
Pengoptimuman Pembelajaran Mesin: Menggunakan teknologi pembelajaran mesin untuk mengoptimumkan dan menyaring isyarat IBS. Mengenali isyarat IBS mana yang lebih mungkin menghasilkan perdagangan yang menguntungkan melalui model latihan dan menyesuaikan parameter secara automatik mengikut ciri-ciri pasaran untuk mencapai prestasi penyesuaian strategi.
Sistem perdagangan pembalikan trend kekuatan harga dalaman adalah strategi perdagangan peringkat garis matahari yang menggabungkan kekuatan harga dalaman (IBS) dan purata bergerak indeks (EMA). Strategi ini mengoptimumkan keputusan perdagangan dengan mengenal pasti titik-titik pembalikan pasaran yang berpotensi dan mengikuti trend jangka panjang, terutama untuk perdagangan saham dan indeks AS.
Strategi ini telah mengoptimumkan parameter untuk indeks pasaran utama seperti SPY / SPX dan NDQ / QQQ, dan pengguna boleh menggunakan tetapan yang disyorkan untuk berdagang secara langsung. Walau bagaimanapun, strategi perdagangan apa pun mempunyai risiko, termasuk sensitiviti parameter, risiko pasaran yang bergolak, dan ketinggalan dalam perubahan trend yang mendadak.
Arahan pengoptimuman masa depan termasuk penyesuaian nilai terhad dinamik, pengesahan kitaran masa berbilang, mekanisme berhenti rugi pintar, penyesuaian keadaan pasaran dan pengoptimuman pembelajaran mesin. Peningkatan ini dapat meningkatkan lagi kebolehpasaran dan ketahanan strategi, yang membolehkan ia dapat bertahan dalam keadaan pasaran yang berbeza.
Sebagai strategi dagangan kuantitatif, sistem dagangan dalaman yang membalikkan trend kekuatan harga menyediakan pedagang dengan kaedah dagangan berasaskan peraturan dan objektif, mengurangkan pengaruh faktor emosi terhadap keputusan dagangan dan membantu mencapai hasil dagangan yang lebih konsisten dan boleh diramalkan.
/*backtest
start: 2024-03-05 00:00:00
end: 2025-03-03 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
//Implementation by AlgoTradeKit
//v.0.5
//The IBS Trading Strategy is a daily bars long-only trading system, based on the concept of Internal Bar Strength (IBS).
//The strategy aims to identify potential reversals by monitoring how the previous bar’s close positions itself within its high-low range.
//It is suitable for stock and US indices. The default parameters are optimized for SPY/SPX and NDQ/QQQ
//Setting for QQQ: 0.09, 0.985, 220, 0, 14
//Setting for SPY: 0.11, 0.995, 200, 0, 12
//@version=6
strategy("IBS (Internal Bar Strength) Trading Strategy for SPY and NDQ", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=50, pyramiding = 2, currency = currency.USD, process_orders_on_close=false)
// ***** INPUTS *****
// IBS thresholds
ibsEntryThreshold = input.float(0.09, title="IBS Entry Threshold", step=0.01, tooltip="IBS = (Previous Close - Previous Low) / (Previous High - Previous Low), and IBS value below 0.2 is typically interpreted as an oversold condition, while a value above 0.9 suggests an overbought state.")
ibsExitThreshold = input.float(0.985, title="IBS Exit Threshold", step=0.01, tooltip="IBS = (Previous Close - Previous Low) / (Previous High - Previous Low), and IBS value below 0.2 is typically interpreted as an oversold condition, while a value above 0.9 suggests an overbought state.")
// EMA period (set to 0 to disable the EMA condition)
emaPeriod = input.int(220, title="EMA Period (0 to disable)", minval=0, maxval=5000, step=1, tooltip="Exponential Moving Average Filter Period (0 to disable)")
// Minimum percentage drop required for a new entry (for dollar-cost averaging)
minEntryPct = input.float(0, title="Minimum Distance for New Entry (%)", step=0.05, minval=0.0, maxval=100, tooltip = "Distance in Price from Last Opened Position, in Percentage Terms (%)")
maxTradeDuration = input.int(title="Maximum Trade Duration (days)", defval=14, minval=1, step=1, maxval=1000, tooltip = "Exit at close if maximum trade duration is reached.")
// Persistent variable to record the bar index when the trade is entered.
var int entryBarIndex = na
// ***** EMA CALCULATION *****
// Calculate the EMA globally if the period is greater than 0, otherwise leave as na.
emaValue = emaPeriod > 0 ? ta.ema(close, emaPeriod) : na
// ***** IBS CALCULATION *****
// Calculate IBS using the previous bar’s values.
// Guard against division by zero: if previous high equals previous low, default IBS to 0.5.
prevHigh = high[1]
prevLow = low[1]
prevClose = close[1]
ibs = (prevHigh != prevLow) ? (prevClose - prevLow) / (prevHigh - prevLow) : 0.5
// ***** ENTRY AND EXIT CONDITIONS *****
// Define the EMA condition: if emaPeriod is 0, bypass the EMA check.
emaConditionLong = emaPeriod == 0 or (close > emaValue)
emaConditionShort = emaPeriod == 0 or (close < emaValue)
// Entry: IBS is below the entry threshold and the EMA condition holds.
enterLong = (ibs < ibsEntryThreshold) and emaConditionLong
enterShort = (ibs > ibsExitThreshold) and emaConditionShort
// Exit: IBS is above the exit threshold.
exitLong = ibs > ibsExitThreshold
exitShort = ibs < ibsEntryThreshold
// ***** DOLLAR-COST AVERAGING CONDITION IN PERCENTAGE *****
// Track the last entry price. Reset when there is no open position.
var float lastEntryPrice = na
if strategy.position_size == 0
lastEntryPrice := na
// If there is no previous entry, the condition is met.
// Otherwise, allow a new entry only if the current price is lower than the last entry price
// by at least the predefined percentage (converted to a fraction).
dcaCondition = na(lastEntryPrice) or ((close < lastEntryPrice) and (((lastEntryPrice - close) / lastEntryPrice) >= (minEntryPct / 100)))
dcaConditionShort = na(lastEntryPrice) or ((close > lastEntryPrice) and (((close - lastEntryPrice) / lastEntryPrice) >= (minEntryPct / 100)))
// ***** STRATEGY ORDERS *****
// Enter a long position only if both the entry condition and the DCA condition are met.
if enterLong and dcaCondition
strategy.entry("Long", strategy.long)
lastEntryPrice := close // update the last entry price
entryBarIndex := bar_index
if enterShort and dcaConditionShort
strategy.entry("Short", strategy.short)
lastEntryPrice := close // update the last entry price
entryBarIndex := bar_index
// Compute trade duration in days using the absolute difference
tradeDuration = not na(entryBarIndex) ? math.abs(bar_index - entryBarIndex) : 0
// Exit the long position when the exit condition is met or if the trade duration reaches maxTradeDuration days.
if exitLong or (tradeDuration >= maxTradeDuration)
strategy.close("Long")
// Exit the long position when the exit condition is met or if the trade duration reaches maxTradeDuration days.
if exitShort or (tradeDuration >= maxTradeDuration)
strategy.close("Short")
// ***** PLOTTING *****
// Plot IBS for reference, along with horizontal lines for the entry and exit thresholds.
//plot(ibs, title="IBS", color=color.blue, linewidth=2)
//hline(ibsEntryThreshold, title="IBS Entry Threshold", color=color.green)
//hline(ibsExitThreshold, title="IBS Exit Threshold", color=color.red)