Strategi perdagangan kontrarian breakout adalah strategi yang mengambil sinyal kontrarian berdasarkan kenaikan atau penurunan harga berturut-turut untuk pergi panjang ketika kondisi pendek terpenuhi atau pergi pendek ketika kondisi panjang terpenuhi.
Strategi ini terutama dilaksanakan melalui bagian-bagian berikut:
Tetapkan periode berturut-turut untuk kenaikan dan penurunan harga, yaitu berturut-turutBarsUp dan berturut-turutBarsDown.
Menghitung kenaikan dan penurunan harga saat ini relatif terhadap harga periode sebelumnya Menghitung panjang kenaikan atau penurunan periode naik dan turun berturut-turut berdasarkan kenaikan dan penurunan.
Atur rentang waktu backtesting untuk membatasi strategi untuk beroperasi hanya dalam waktu backtesting melalui time_cond.
Atur waktu perdagangan harian untuk membatasi sinyal perdagangan yang akan dikeluarkan hanya dalam kerangka waktu yang ditetapkan melalui timetobuy.
Ketika siklus naik berturut-turut mencapai panjang yang ditetapkan, mengeluarkan sinyal panjang melalui strategi. panjang. Ketika siklus turun berturut-turut mencapai panjang yang ditetapkan, mengeluarkan sinyal pendek melalui strategi. pendek.
Harga stop loss dan take profit dapat ditetapkan. Setel stop jangka pendek untuk posisi panjang dan stop jangka panjang untuk posisi pendek. Setel take profit jangka panjang untuk posisi panjang dan take profit jangka pendek untuk posisi pendek.
Pesan sinyal perdagangan dapat diatur saat mengirim.
Mengeluarkan sinyal panjang atau pendek ketika kondisi terpenuhi berdasarkan parameter dan tingkat harga di atas.
Strategi breakout yang bertentangan ini memiliki keuntungan berikut:
Mengambil titik pembalikan harga. Operasi kontrarian dapat memperoleh keuntungan yang baik. Operasi ke arah yang berlawanan ketika harga membentuk tren dapat memperoleh keuntungan pada pembalikan harga.
Parameter yang dapat dikonfigurasi fleksibel. Parameter seperti periode berturut-turut dapat disesuaikan, tingkat stop loss dan take profit dapat ditetapkan, kerangka waktu perdagangan dapat dibatasi. Parameter dapat dioptimalkan sesuai dengan kondisi pasar.
Menetapkan stop loss dan take profit sebelumnya membantu mengendalikan risiko trading setelah pergi long atau short.
Pesan perdagangan memfasilitasi perdagangan otomatis. Mengatur pesan sinyal perdagangan memfasilitasi integrasi dengan sistem perdagangan otomatis.
Menambahkan pengaturan interval waktu backtesting memungkinkan pengamatan kinerja strategi dengan mudah di bawah kondisi pasar yang berbeda.
Strategi ini juga memiliki beberapa risiko yang perlu dicatat:
Hindari peristiwa berita penting. Tren harga tidak dapat diprediksi selama pengumuman besar, menyebabkan sinyal dan kerugian panjang dan pendek secara bersamaan. Rilis ekonomi besar harus dihindari.
Kurang efektif ketika pembalikan tidak jelas. Kurang efektif ketika tren ambigu, perdagangan sebaliknya harus digunakan dengan hati-hati.
Risiko overfit data backtesting. Optimasi harus menghindari ketergantungan yang berlebihan pada data backtesting, yang tidak mewakili tren masa depan. Parameter harus disesuaikan dengan tepat selama perdagangan langsung.
Tingkat frekuensi perdagangan yang tinggi berisiko overtrading. pengaturan siklus pendek dapat mengakibatkan frekuensi perdagangan yang berlebihan dan risiko keuntungan stabil jangka panjang.
Strategi stop loss dan take profit dapat dioptimalkan untuk mengurangi risiko.
Strategi ini dapat dioptimalkan lebih lanjut dalam aspek berikut:
Tambahkan deteksi tren untuk menghindari pembalikan acak di pasar non-trending, menggunakan volatilitas, saluran dll untuk mengukur tren dan menangkap pembalikan.
Mengoptimalkan stop dan take untuk menyesuaikan berdasarkan volatilitas pasar, menggunakan metode berbasis persentase, ATR atau metode adaptif lainnya.
Tambahkan analisis volume untuk menghindari sinyal palsu dari pola harga saja.
Diversifikasi portofolio di berbagai produk untuk mengurangi risiko aset tunggal.
Pengoptimalan parameter dan pembelajaran mesin. Kumpulkan lebih banyak data historis dan gunakan pembelajaran mesin untuk mengoptimalkan parameter secara otomatis untuk strategi yang lebih kuat.
Strategi kontrarian breakout memberikan sinyal perdagangan yang baik dengan menangkap pembalikan harga melalui operasi kontrarian. Keuntungannya termasuk konfigurasi yang fleksibel, kontrol risiko dan kesesuaian untuk perdagangan otomatis. Tetapi risiko ada dan perbaikan terus-menerus pada parameter dan logika 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)