
Strategi N Bars Breakout adalah strategi perdagangan kuantitatif yang didasarkan pada harga breakout. Ide utama dari strategi ini adalah untuk membuka posisi yang lebih tinggi ketika harga close out melampaui harga tertinggi dari N hari perdagangan terakhir, dan posisi yang lebih rendah ketika harga close out jatuh dari harga terendah dari N hari perdagangan terakhir. Strategi ini menangkap tren yang kuat dengan membandingkan harga saat ini dengan harga terendah dari N hari perdagangan terakhir.
Strategi N Bars adalah strategi perdagangan kuantitatif yang sederhana dan praktis, dengan menangkap tren tren harga yang lebih baik. Strategi ini memiliki logika yang jelas, ruang yang luas untuk optimasi, dan aplikasi yang luas. Ini adalah strategi kuantitatif yang layak untuk diteliti dan dioptimalkan lebih lanjut. Dengan optimasi parameter dan perbaikan logis yang masuk akal, stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut dan lebih baik beradaptasi dengan lingkungan pasar yang berbeda.
/*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)