
Strategi ini adalah sistem perdagangan kuantitatif yang didasarkan pada penembusan kisaran harga. Strategi ini secara dinamis menetapkan batas atas dan bawah kisaran harga dan melakukan perdagangan ketika harga menembus tingkat-tingkat kunci ini. Gagasan inti dari strategi ini adalah menangkap peluang tren saat pasar menembus kisaran harga yang ditetapkan, sambil secara dinamis menyesuaikan kisaran harga untuk menyesuaikan diri dengan perubahan pasar.
Strategi ini didasarkan pada mekanisme inti sebagai berikut: Pertama, sesuai dengan karakteristik varietas perdagangan yang berbeda, langkah yang sesuai ditetapkan. Langkah ini didasarkan pada sekitar 1,5% dari harga varietas. Sistem ini akan mengatur satu kisaran harga di atas dan di bawah harga saat ini, yang akan memicu beberapa sinyal ketika harga melampaui batas atas, dan ketika batas bawah telah dilampaui, akan memicu sinyal kosong. Setelah setiap penembusan, kisaran harga akan disesuaikan untuk menyesuaikan dengan lingkungan pasar baru.
Ini adalah strategi pelacakan tren yang dirancang dengan logika yang jelas dan logis. Dengan pengaturan dan penyesuaian rentang harga dinamis, dikombinasikan dengan manajemen posisi yang fleksibel, strategi ini dapat secara efektif menangkap peluang tren pasar. Meskipun ada beberapa ruang yang perlu dioptimalkan, secara keseluruhan, strategi ini memberikan kerangka kerja perdagangan kuantitatif yang kuat.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// @version=5
// 每个图表上画对应间隔的横线,自己手画吧
// 同方向追加20单,订单成交后重新计算,每个tick重新计算,变量保存1000个周期,k线结束后再处理一次订单,按照代码顺序来绘制plot
strategy("Price Level Breakout Strategy", overlay=true, pyramiding=200, calc_on_order_fills=true, calc_on_every_tick=true, max_bars_back=1000, process_orders_on_close=true, explicit_plot_zorder=true)
// var创建持久性变量,:=是更新变量,不重新声明
// 这个是全局变量
// a = array.new<string>(200)
// array.push(a, "a")
// plot(close, color = array.get(a, close > open ? 1 : 0))
string ticker = syminfo.ticker
var float step_size = 1000
// label.new(x=bar_index, y=close, text="当前品种代码: " + ticker)
// 根据定值画1.5的平行线
if ticker == "000300"
step_size := 4000 * 0.015
if ticker == "XAUUSD"
step_size := 3000 * 0.016
if ticker == "BTCUSD"
step_size := 60000 * 0.015
if ticker == "SILVER"
step_size := 50 * 0.015
if ticker == "UKOIL"
step_size := 150 * 0.015
if ticker == "GBPUSD"
step_size := 1.6 * 0.015
if ticker == "EURUSD"
step_size := 1.1 * 0.015
// 从0开始画200条间隔线
if ticker == "USDJPY"
step_size := 100 * 0.015
var float start_value = close
var float up_number = close + step_size
var float low_number = close - step_size
// hline(3.14, title='Pi', color=color.blue, linestyle=hline.style_dotted, linewidth=2)
// plot(1)
// 当价格突破上限,产生买入信号
if close > up_number
// 生成买入信号
strategy.entry(id = "Buy", direction = strategy.long)
// 更新新的价格区间
start_value := start_value + step_size
up_number := start_value + step_size
low_number := start_value - step_size
strategy.close(id = "Sell")
// 当价格跌破下限,产生卖出信号
if close < low_number
// 生成卖出信号
strategy.entry("Sell", strategy.short)
// 更新新的价格区间
start_value := start_value - step_size
up_number := start_value + step_size
low_number := start_value - step_size
strategy.close(id = "Buy")