
Chiến lược này là một hệ thống giao dịch định lượng dựa trên phá vỡ phạm vi giá. Nó thiết lập động các giới hạn trên và dưới của phạm vi giá và giao dịch khi giá vượt qua các mức quan trọng này. Ý tưởng cốt lõi của chiến lược là nắm bắt cơ hội theo xu hướng khi thị trường phá vỡ phạm vi giá đã được thiết lập, đồng thời điều chỉnh các phạm vi giá theo động để thích ứng với sự thay đổi của thị trường.
Chiến lược hoạt động dựa trên cơ chế cốt lõi sau: Đầu tiên, tùy thuộc vào tính năng của các loại giao dịch khác nhau, thiết lập bước tương ứng ((step_size), được thiết lập dựa trên khoảng 1,5% giá của các loại. Hệ thống sẽ thiết lập một phạm vi giá trên và dưới giá hiện tại, khi giá vượt qua giới hạn trên, kích hoạt nhiều tín hiệu; khi vượt qua giới hạn dưới, kích hoạt tín hiệu trống. Sau mỗi lần vượt qua, phạm vi giá sẽ được điều chỉnh để thích ứng với môi trường thị trường mới.
Đây là một chiến lược theo dõi xu hướng được thiết kế hợp lý, logic rõ ràng. Bằng cách thiết lập và điều chỉnh các phạm vi giá động, kết hợp với quản lý vị trí linh hoạt, chiến lược có thể nắm bắt hiệu quả các cơ hội xu hướng thị trường. Mặc dù có một số không gian cần tối ưu hóa, nhưng nói chung, chiến lược cung cấp một khung giao dịch định lượng vững chắc.
/*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")