Strategi perdagangan pecah yang bertentangan adalah strategi yang mengambil isyarat bertentangan berdasarkan kenaikan atau kejatuhan harga berturut-turut untuk pergi lama apabila syarat pendek dipenuhi atau pergi pendek apabila syarat panjang dipenuhi.
Strategi ini dilaksanakan terutamanya melalui bahagian-bahagian berikut:
Tetapkan tempoh berturut-turut untuk kenaikan dan penurunan harga, iaitu berturut-turutBarsUp dan berturut-turutBarsDown.
Mengira kenaikan dan kejatuhan harga semasa berbanding dengan harga tempoh sebelumnya Mengira panjang kenaikan atau kejatuhan berturut-turut semasa naik dan turun berdasarkan kenaikan dan kejatuhan.
Tetapkan julat masa backtesting untuk mengehadkan strategi untuk beroperasi hanya dalam masa backtesting melalui time_cond.
Tetapkan masa dagangan harian untuk mengehadkan isyarat dagangan yang dikeluarkan hanya dalam jangka masa yang ditetapkan melalui timetobuy.
Apabila kitaran naik berturut-turut mencapai panjang yang ditetapkan, mengeluarkan isyarat panjang melalui strategi.panjang. Apabila kitaran jatuh berturut-turut mencapai panjang yang ditetapkan, mengeluarkan isyarat pendek melalui strategi.pendek.
Harga stop loss dan take profit boleh ditetapkan. Tetapkan berhenti jangka pendek untuk kedudukan panjang dan berhenti jangka panjang untuk kedudukan pendek. Tetapkan mengambil keuntungan jangka panjang untuk kedudukan panjang dan mengambil keuntungan jangka pendek untuk kedudukan pendek.
Mesej isyarat perdagangan boleh ditetapkan semasa menghantar.
Mengeluarkan isyarat panjang atau pendek apabila syarat dipenuhi berdasarkan parameter dan tahap harga di atas.
Strategi keluar yang bertentangan ini mempunyai kelebihan berikut:
Mengambil titik pembalikan harga. Operasi bertentangan boleh memperoleh keuntungan yang baik. Operasi ke arah yang bertentangan apabila harga membentuk trend boleh mendapat keuntungan pada pembalikan harga.
Parameter yang boleh dikonfigurasikan fleksibel. Parameter seperti tempoh berturut-turut boleh diselaraskan, tahap stop loss dan mengambil keuntungan boleh ditetapkan, bingkai masa perdagangan boleh dibatasi. Parameter boleh dioptimumkan mengikut keadaan pasaran.
Menetapkan stop loss dan mengambil keuntungan terlebih dahulu membantu mengawal risiko perdagangan selepas pergi panjang atau pendek.
Mesej perdagangan memudahkan perdagangan automatik. Tetapan mesej isyarat perdagangan memudahkan integrasi dengan sistem perdagangan automatik.
Julat masa pengujian belakang memudahkan pengujian strategi. Menambah tetapan julat masa pengujian belakang membolehkan pengamatan mudah prestasi strategi di bawah keadaan pasaran yang berbeza.
Strategi ini juga mempunyai beberapa risiko untuk diperhatikan:
Elakkan peristiwa berita penting. Trend harga tidak dapat diramalkan semasa pengumuman utama, menyebabkan isyarat dan kerugian panjang dan pendek secara serentak. Keluaran ekonomi utama harus dielakkan.
Kurang berkesan apabila pembalikan tidak jelas. Kurang berkesan apabila trend tidak jelas, perdagangan sebaliknya harus digunakan dengan berhati-hati.
Risiko keterlaluan data pengujian balik. Pengoptimuman harus mengelakkan terlalu bergantung pada data pengujian balik, yang tidak mewakili trend masa depan. Parameter harus diselaraskan dengan sewajarnya semasa perdagangan langsung.
Kelayakan perdagangan yang tinggi adalah risiko perdagangan berlebihan. Tetapan kitaran pendek boleh menyebabkan kekerapan perdagangan yang berlebihan dan risiko untuk keuntungan yang stabil dalam jangka panjang.
Stop loss dan mengambil strategi keuntungan boleh dioptimumkan untuk mengurangkan risiko.
Strategi ini boleh dioptimumkan lagi dalam aspek berikut:
Tambah pengesanan trend untuk mengelakkan pembalikan rawak di pasaran bukan trend, menggunakan turun naik, saluran dan lain-lain untuk mengukur trend dan menangkap pembalikan.
Mengoptimumkan berhenti dan mengambil untuk menyesuaikan berdasarkan turun naik pasaran, menggunakan kaedah berasaskan peratusan, ATR atau lain-lain kaedah penyesuaian.
Tambah analisis jumlah untuk mengelakkan isyarat palsu dari corak harga sahaja.
Pembahagian portfolio ke pelbagai produk untuk mengurangkan risiko aset tunggal.
Pengoptimuman parameter dan pembelajaran mesin. Kumpulkan lebih banyak data sejarah dan gunakan pembelajaran mesin untuk mengoptimumkan parameter secara automatik untuk strategi yang lebih mantap.
Strategi penembusan kontrarian memberikan isyarat perdagangan yang baik dengan menangkap pembalikan harga melalui operasi kontrarian. Kelebihan termasuk konfigurasi yang fleksibel, kawalan risiko dan kesesuaian untuk perdagangan automatik. Tetapi risiko ada dan peningkatan berterusan dalam parameter dan logik diperlukan untuk keuntungan stabil jangka panjang.
/*backtest start: 2023-10-17 00:00:00 end: 2023-10-24 00:00:00 period: 45m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Strategy strategy("Up/Down Strategy - Contrarian", overlay=true, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash) consecutiveBarsUp = input(1, title='Consecutive Bars Up') consecutiveBarsDown = input(1, title='Consecutive Bars Down') price = close ups = 0.0 ups := price > price[1] ? nz(ups[1]) + 1 : 0 dns = 0.0 dns := price < price[1] ? nz(dns[1]) + 1 : 0 // Strategy Backtesting startDate = input(timestamp("2021-01-01T00:00:00"), type = input.time, title='Backtesting Start Date') finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time, title='Backtesting End Date') time_cond = true //Time Restriction Settings startendtime = input("", title='Time Frame To Enter Trades') enableclose = input(false, title='Enable Close Trade At End Of Time Frame') timetobuy = true timetoclose = true // Stop Loss & Take Profit Tick Based enablesltp = input(false, title='Enable Take Profit & Stop Loss') stopTick = input(5.0, title='Stop Loss Ticks', type=input.float) / 100 takeTick = input(10.0, title='Take Profit Ticks', type=input.float) / 100 longStop = strategy.position_avg_price - stopTick shortStop = strategy.position_avg_price + stopTick shortTake = strategy.position_avg_price - takeTick longTake = strategy.position_avg_price + takeTick plot(strategy.position_size > 0 and enablesltp ? longStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Fixed SL") plot(strategy.position_size < 0 and enablesltp ? shortStop : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Short Fixed SL") plot(strategy.position_size > 0 and enablesltp ? longTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Long Take Profit") plot(strategy.position_size < 0 and enablesltp ? shortTake : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Short Take Profit") // Alert messages message_enterlong = input("", title="Long Entry message") message_entershort = input("", title="Short Entry message") message_closelong = input("", title="Close Long message") message_closeshort = input("", title="Close Short message") // Strategy Execution if (dns >= consecutiveBarsDown) and time_cond and timetobuy strategy.entry("Long", strategy.long, stop = high + syminfo.mintick, alert_message = message_enterlong) if (ups >= consecutiveBarsUp) and time_cond and timetobuy strategy.entry("Short", strategy.short, stop = low + syminfo.mintick, alert_message = message_entershort) if strategy.position_size < 0 and timetoclose and enableclose strategy.close_all(alert_message = message_closelong) if strategy.position_size > 0 and timetoclose and enableclose strategy.close_all(alert_message = message_closeshort) if strategy.position_size < 0 and enablesltp and time_cond strategy.exit(id="Close Long", stop=longStop, limit=longTake, alert_message = message_closelong) if strategy.position_size > 0 and enablesltp and time_cond strategy.exit(id="Close Short", stop=shortStop, limit=shortTake, alert_message = message_closeshort)