지지 및 저항 수준에 기반한 다이나믹 가격 범위 돌파 거래 전략 정량적 시스템


생성 날짜: 2024-12-11 15:03:50 마지막으로 수정됨: 2024-12-11 15:03:50
복사: 3 클릭수: 378
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

지지 및 저항 수준에 기반한 다이나믹 가격 범위 돌파 거래 전략 정량적 시스템

개요

이 전략은 가격 범위를 돌파하는 것을 기반으로 한 양적 거래 시스템이다. 가격 범위를 동적으로 설정하여 가격 범위를 상하로 설정하고, 가격이 이러한 중요한 수준을 돌파 할 때 거래한다. 전략의 핵심 아이디어는 시장이 확립 된 가격 범위를 돌파 할 때 트렌디컬 기회를 포착하는 것이며, 가격 범위를 동적으로 조정하여 시장 변화에 적응한다. 이 전략은 유연한 위치 관리 방식을 채택하여 큰 추세에서 오는 이익을 극대화하기 위해 같은 방향으로 추가 거래를 허용한다.

전략 원칙

전략의 작동은 다음과 같은 핵심 메커니즘에 기반합니다: 첫째, 다양한 거래 품종의 특성에 따라 대응하는 단계 (step_size) 를 설정합니다. 이 단계는 품종 가격의 약 1.5%에 따라 설정됩니다. 시스템은 현재 가격의 상단과 하단에 각각 하나의 가격 범위를 설정합니다. 가격이 상한을 돌파 할 때, 다중 신호를 유발합니다. 하한을 돌파 할 때, 공백 신호를 유발합니다.

전략적 이점

  1. 동적 적응력: 가격 범위는 시장 변화에 따라 자동으로 조정되어 전략이 다른 시장 환경에 적응할 수 있습니다.
  2. 트렌드 추적 능력: 동방향 상장권을 허용함으로써, 전략은 강력한 트렌드를 충분히 파악할 수 있다.
  3. 리스크 관리가 완벽하다: 명확한 중지 조건이 설정되어 있으며, 가격이 범위를 넘어갈 때 자동으로 청산된다.
  4. 적용 범위: 다양한 거래 품종에 대해 대응하는 걸음 길이 변수를 설정하여 전략은 여러 시장에 적용할 수 있다.
  5. 계산 효율성: 변수의 지속과 효율적인 계산 방법을 사용하여 전략이 원활하게 실행되도록합니다.

전략적 위험

  1. 흔들림 시장 위험: 지역 흔들림 시장에서 빈번하게 가짜 돌파구를 유발할 수 있으며, 이로 인해 연속적인 손실이 발생할 수 있다.
  2. 자금 관리 위험: 동방향 저축은 포지션이 지나치게 집중될 수 있으며, 단일 방향의 위험 틈을 합리적으로 제어해야 한다.
  3. 슬라이드 포인트 위험: 급격한 변동이 있을 때, 전략의 성과에 영향을 미치는 큰 슬라이드 포인트에 직면할 수 있다.
  4. 변수 감수성: 단계 길이 설정의 합리성은 전략 효과에 직접 영향을 미치며, 충분한 테스트가 필요합니다.

전략 최적화 방향

  1. 변동률 지표 도입: 시장 변동률 동력에 따라 걸음걸이를 조정할 수 있으며, 전략의 적응성을 향상시킬 수 있다.
  2. 더 많은 필터링 메커니즘: 트렌드 확인 지표를 추가하고, 가짜 돌파구로 인한 손실을 줄여줍니다.
  3. 포지션 관리를 개선: 수익과 위험을 균형 잡는 포지션 제어 메커니즘을 더 세밀하게 설계하십시오.
  4. 주문 실행을 최적화: 스마트 주문 라우팅을 추가하여 슬라이드 포인트 영향을 줄일 수 있습니다.
  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")