
이 전략은 가격 범위를 돌파하는 것을 기반으로 한 양적 거래 시스템이다. 가격 범위를 동적으로 설정하여 가격 범위를 상하로 설정하고, 가격이 이러한 중요한 수준을 돌파 할 때 거래한다. 전략의 핵심 아이디어는 시장이 확립 된 가격 범위를 돌파 할 때 트렌디컬 기회를 포착하는 것이며, 가격 범위를 동적으로 조정하여 시장 변화에 적응한다. 이 전략은 유연한 위치 관리 방식을 채택하여 큰 추세에서 오는 이익을 극대화하기 위해 같은 방향으로 추가 거래를 허용한다.
전략의 작동은 다음과 같은 핵심 메커니즘에 기반합니다: 첫째, 다양한 거래 품종의 특성에 따라 대응하는 단계 (step_size) 를 설정합니다. 이 단계는 품종 가격의 약 1.5%에 따라 설정됩니다. 시스템은 현재 가격의 상단과 하단에 각각 하나의 가격 범위를 설정합니다. 가격이 상한을 돌파 할 때, 다중 신호를 유발합니다. 하한을 돌파 할 때, 공백 신호를 유발합니다.
이것은 합리적이고 논리적으로 명확한 트렌드 추적 전략을 설계했습니다. 동적 가격 범위를 설정하고 조정하여 유연한 포지션 관리와 결합하여 전략은 시장의 트렌드 기회를 효과적으로 포착 할 수 있습니다. 최적화 할 수있는 공간이 있지만 전체적으로 전략은 견고한 양적 거래 프레임 워크를 제공합니다. 지속적인 최적화와 개선으로 전략의 성능을 더욱 향상시킬 수 있습니다. 전략의 설계는 실제 거래의 다양한 상황을 충분히 고려하여 주문 처리, 계산 효율성 및 기타 중요한 요소를 고려하여 강력한 실용성을 보여줍니다.
/*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")