
Strategi N Bars Breakout adalah strategi perdagangan kuantitatif berdasarkan harga yang pecah. Gagasan utama strategi ini adalah untuk membuka kedudukan yang lebih tinggi apabila harga penutupan melampaui harga tertinggi pada hari perdagangan N yang lalu, dan meletakkan kedudukan yang lebih rendah apabila harga penutupan jatuh pada harga terendah pada hari perdagangan N yang lalu. Strategi ini menangkap pergerakan yang kuat dengan membandingkan harga semasa dengan harga tertinggi dan terendah pada hari perdagangan N yang lalu.
Strategi N Bars Breakout adalah strategi perdagangan kuantitatif yang mudah dan praktikal, yang mencapai kesan trend yang lebih baik dengan menangkap pergerakan harga yang menembusi. Strategi ini logiknya jelas, ruang pengoptimuman yang besar, aplikasi yang luas, adalah strategi kuantitatif yang patut diteliti dan dioptimumkan. Dengan pengoptimuman parameter yang munasabah dan penambahbaikan logik, anda dapat meningkatkan lagi kestabilan dan keuntungan strategi ini, untuk menyesuaikan diri dengan lebih baik dengan keadaan 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)