N Bars Breakout Strategi

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

img

Ringkasan

N Bars Breakout Strategy adalah strategi perdagangan kuantitatif berdasarkan penembusan harga. Idea utama strategi ini adalah untuk membuka kedudukan panjang apabila harga penutupan memecahkan di atas paras tertinggi N bar yang lalu, dan menutup kedudukan panjang apabila harga penutupan memecahkan di bawah paras terendah N bar yang lalu. Dengan membandingkan harga semasa dengan harga tertinggi dan terendah N bar yang lalu, strategi ini bertujuan untuk menangkap pergerakan penutupan yang kuat dan mencapai kesan trend berikut.

Prinsip Strategi

  1. Mengira tertinggi tertinggi (tertinggi) dan terendah rendah (terendah) dari N bar yang lalu.
  2. Jika harga penutupan semasa lebih tinggi daripada yang tertinggi, buka kedudukan panjang (panjang).
  3. Jika harga penutupan semasa lebih rendah daripada yang terendah, tutup kedudukan panjang (pendek).
  4. Anda boleh memilih untuk menggunakan harga penutupan (tutup) atau harga tinggi / rendah (tinggi / rendah) sebagai sumber isyarat.
  5. Bergantung kepada sumber isyarat, gunakan ta.highest dan ta.lowest untuk mengira harga tertinggi dan terendah.
  6. Gunakan ta.crossover dan ta.crossunder untuk menentukan harga pecah.

Kelebihan Strategi

  1. Logik yang mudah dan jelas, mudah dilaksanakan dan dioptimumkan.
  2. Boleh menangkap pergerakan keluar yang kuat dengan berkesan, dengan keupayaan trend yang kuat.
  3. Ruang yang besar untuk pengoptimuman parameter, boleh dioptimumkan untuk instrumen dan jangka masa yang berbeza.
  4. Penggunaan yang luas, berfungsi dengan baik untuk kebanyakan instrumen dan jangka masa.
  5. Pilihan sumber isyarat yang fleksibel, meningkatkan kebolehsesuaian strategi.

Risiko Strategi

  1. Berprestasi buruk di pasaran yang bergelora dan turun naik kecil, dengan pembukaan dan penutupan kedudukan yang kerap yang membawa kepada kos transaksi yang tinggi.
  2. Pemilihan parameter yang tidak betul boleh membawa kepada risiko overfit.
  3. Mungkin mengalami pengeluaran besar semasa pembalikan trend.
  4. Sumber isyarat tunggal mungkin menghadapi risiko gangguan isyarat.

Arahan Pengoptimuman Strategi

  1. Tambah keadaan penapisan trend, seperti arah trend MA, ADX, dan lain-lain, untuk mengurangkan perdagangan di pasaran yang bergelombang.
  2. Mengoptimumkan pemilihan parameter, seperti nilai N, sumber isyarat, dan lain-lain, untuk meningkatkan kestabilan strategi dan keuntungan.
  3. Tambah logik stop-loss dan trailing stop-loss untuk mengawal risiko perdagangan tunggal.
  4. Menggabungkan pelbagai sumber isyarat untuk meningkatkan kebolehpercayaan isyarat, seperti mempertimbangkan kedua-dua harga penutupan dan harga tinggi / rendah.
  5. Mengoptimumkan parameter dan logik secara berasingan untuk instrumen dan jangka masa yang berbeza.

Ringkasan

N Bars Breakout Strategy adalah strategi perdagangan kuantitatif yang mudah dan praktikal yang mencapai kesan trend yang baik dengan menangkap penembusan harga. Strategi ini mempunyai logika yang jelas, ruang pengoptimuman yang besar, dan penerapan yang luas, menjadikannya strategi kuantitatif yang bernilai penyelidikan dan pengoptimuman lanjut. Melalui pengoptimuman parameter yang munasabah dan peningkatan logika, kestabilan dan keuntungan strategi ini dapat ditingkatkan lagi untuk menyesuaikan diri dengan lebih baik dengan persekitaran pasaran yang berbeza.


/*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 lanjut