N Bars Breakout Strategi

Penulis:ChaoZhang, Tanggal: 2024-04-12 16:57:15
Tag:

img

Gambaran umum

Strategi N Bars Breakout adalah strategi perdagangan kuantitatif yang didasarkan pada price breakout. Ide utama dari strategi ini adalah untuk membuka posisi panjang ketika harga penutupan menembus di atas level tertinggi dari N bar yang lalu, dan menutup posisi panjang ketika harga penutupan menembus di bawah level terendah dari N bar yang lalu. Dengan membandingkan harga saat ini dengan harga tertinggi dan terendah dari N bar yang lalu, strategi ini bertujuan untuk menangkap pergerakan breakout yang kuat dan mencapai efek mengikuti tren.

Prinsip Strategi

  1. Menghitung tertinggi tertinggi (paling tinggi) dan terendah terendah (terendah) dari N bar terakhir.
  2. Jika harga penutupan saat ini lebih tinggi dari yang tertinggi, buka posisi panjang (long).
  3. Jika harga penutupan saat ini lebih rendah dari yang terendah, tutup posisi panjang (pendek).
  4. Anda dapat memilih untuk menggunakan harga penutupan (tutup) atau harga tinggi/rendah (tinggi/rendah) sebagai sumber sinyal.
  5. Tergantung pada sumber sinyal, gunakan ta.highest dan ta.lowest untuk menghitung harga tertinggi dan terendah.
  6. Menggunakan ta.crossover dan ta.crossunder untuk menentukan price breakout.

Keuntungan Strategi

  1. Logika yang sederhana dan jelas, mudah diterapkan dan dioptimalkan.
  2. Dapat secara efektif menangkap gerakan keluar yang kuat, dengan kemampuan mengikuti tren yang kuat.
  3. Ruang besar untuk optimasi parameter, dapat dioptimalkan untuk instrumen dan kerangka waktu yang berbeda.
  4. Aplikasi yang luas, berkinerja baik untuk sebagian besar instrumen dan kerangka waktu.
  5. Pilihan sumber sinyal yang fleksibel, meningkatkan kemampuan adaptasi strategi.

Risiko Strategi

  1. Berkinerja buruk di pasar yang bergolak dan berfluktuasi kecil, dengan pembukaan dan penutupan posisi yang sering menyebabkan biaya transaksi yang tinggi.
  2. Pemilihan parameter yang tidak tepat dapat menyebabkan risiko overfit.
  3. Mungkin mengalami penurunan besar selama pembalikan tren.
  4. Sumber sinyal tunggal dapat menghadapi risiko distorsi sinyal.

Arah Optimasi Strategi

  1. Tambahkan kondisi penyaringan tren, seperti arah tren MA, ADX, dll, untuk mengurangi perdagangan di pasar yang bergolak.
  2. Mengoptimalkan pemilihan parameter, seperti nilai N, sumber sinyal, dll, untuk meningkatkan stabilitas strategi dan profitabilitas.
  3. Tambahkan logika stop loss dan trailing stop loss untuk mengendalikan risiko perdagangan tunggal.
  4. Menggabungkan beberapa sumber sinyal untuk meningkatkan keandalan sinyal, seperti mempertimbangkan harga penutupan dan harga tinggi/rendah.
  5. Mengoptimalkan parameter dan logika secara terpisah untuk instrumen dan kerangka waktu yang berbeda.

Ringkasan

N Bars Breakout Strategy adalah strategi perdagangan kuantitatif yang sederhana dan praktis yang mencapai efek tren yang baik dengan menangkap price breakout. Strategi ini memiliki logika yang jelas, ruang optimasi yang besar, dan penerapan yang luas, menjadikannya strategi kuantitatif yang layak untuk penelitian dan optimasi lebih lanjut.


/*backtest
start: 2023-04-06 00:00:00
end: 2024-04-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Breakout", overlay=true, precision=6, pyramiding=0, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=25.0, commission_value=0.05)

n = input.int(5, "N Bars", minval=1)
src_input = input.string("Close", "Source", ["Close", "High/Low"])

bull_src = switch src_input
	"Close" => close
	"High/Low" => high
	=>
		runtime.error("Invalid source input")
		na

bear_src = switch src_input
	"Close" => close
	"High/Low" => low
	=>
		runtime.error("Invalid source input")
		na

highest = ta.highest(bull_src[1], n)
lowest = ta.lowest(bear_src[1], n)

//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
// Plots
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------

bool long = ta.crossover(bull_src, highest)
bool short = ta.crossunder(bear_src, lowest)

//Plots
lowest_plot  = plot(lowest,  color=color.red, title="Lowest")
highest_plot  = plot(highest,  color=color.green, title="Highest")
bull_src_plot = plot(bull_src, color=color.blue, title="Bull")
bear_src_plot = plot(bear_src, color=color.orange, title="Bear")

// this message is an alert that can be sent to a webhook, which allows for simple automation if you have a server that listens to alerts and trades programmatically.
enter_long_alert = '{"side": "Long", "order": "Enter", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'
exit_long_alert = '{"side": "Long", "order": "Exit", "price": ' + str.tostring(open) + ', "timestamp": ' + str.tostring(timenow) + '}'

if long
    strategy.entry(id="Long", direction=strategy.long, limit=open, alert_message=enter_long_alert)

if short
    strategy.close(id="Long", comment="Close Long", alert_message=exit_long_alert)

Lebih banyak