Strategi Trading Breakout Contrarian

Penulis:ChaoZhang, Tanggal: 2023-10-25 12:09:40
Tag:

img

Gambaran umum

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.

Logika Strategi

Strategi ini terutama dilaksanakan melalui bagian-bagian berikut:

  1. Tetapkan periode berturut-turut untuk kenaikan dan penurunan harga, yaitu berturut-turutBarsUp dan berturut-turutBarsDown.

  2. 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.

  3. Atur rentang waktu backtesting untuk membatasi strategi untuk beroperasi hanya dalam waktu backtesting melalui time_cond.

  4. Atur waktu perdagangan harian untuk membatasi sinyal perdagangan yang akan dikeluarkan hanya dalam kerangka waktu yang ditetapkan melalui timetobuy.

  5. 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.

  6. 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.

  7. Pesan sinyal perdagangan dapat diatur saat mengirim.

  8. Mengeluarkan sinyal panjang atau pendek ketika kondisi terpenuhi berdasarkan parameter dan tingkat harga di atas.

Analisis Keuntungan

Strategi breakout yang bertentangan ini memiliki keuntungan berikut:

  1. 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.

  2. 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.

  3. Menetapkan stop loss dan take profit sebelumnya membantu mengendalikan risiko trading setelah pergi long atau short.

  4. Pesan perdagangan memfasilitasi perdagangan otomatis. Mengatur pesan sinyal perdagangan memfasilitasi integrasi dengan sistem perdagangan otomatis.

  5. Menambahkan pengaturan interval waktu backtesting memungkinkan pengamatan kinerja strategi dengan mudah di bawah kondisi pasar yang berbeda.

Analisis Risiko

Strategi ini juga memiliki beberapa risiko yang perlu dicatat:

  1. 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.

  2. Kurang efektif ketika pembalikan tidak jelas. Kurang efektif ketika tren ambigu, perdagangan sebaliknya harus digunakan dengan hati-hati.

  3. 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.

  4. Tingkat frekuensi perdagangan yang tinggi berisiko overtrading. pengaturan siklus pendek dapat mengakibatkan frekuensi perdagangan yang berlebihan dan risiko keuntungan stabil jangka panjang.

  5. Strategi stop loss dan take profit dapat dioptimalkan untuk mengurangi risiko.

Arahan Optimasi

Strategi ini dapat dioptimalkan lebih lanjut dalam aspek berikut:

  1. Tambahkan deteksi tren untuk menghindari pembalikan acak di pasar non-trending, menggunakan volatilitas, saluran dll untuk mengukur tren dan menangkap pembalikan.

  2. Mengoptimalkan stop dan take untuk menyesuaikan berdasarkan volatilitas pasar, menggunakan metode berbasis persentase, ATR atau metode adaptif lainnya.

  3. Tambahkan analisis volume untuk menghindari sinyal palsu dari pola harga saja.

  4. Diversifikasi portofolio di berbagai produk untuk mengurangi risiko aset tunggal.

  5. Pengoptimalan parameter dan pembelajaran mesin. Kumpulkan lebih banyak data historis dan gunakan pembelajaran mesin untuk mengoptimalkan parameter secara otomatis untuk strategi yang lebih kuat.

Kesimpulan

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)






Lebih banyak