이중 이동 평균 전략 360°

저자:차오장, 날짜: 2024-02-02 14:29:59
태그:

img

전반적인 설명

이중 이동 평균 전략 360 °는 이중 이동 평균과 트렌드 강도 결정을 통합하는 양적 거래 전략이다. 다른 기간 동안 이동 평균을 계산함으로써 가격 추세를 결정합니다. 한편, 촉각을 축적함으로써 트렌드의 강도를 판단하고 더 정확한 입출출을 달성합니다.

전략 논리

이중 이동 평균 전략 360°의 핵심 논리는 다음과 같습니다.

  1. 1분 이동 평균과 칼만 필터링을 계산합니다.
  2. 이 두 이동 평균 사이의 가격 차이에 기초하여 촉각을 계산합니다.
  3. 트렌드 강도 신호를 결정하기 위해 촉각을 축적합니다.
  4. 누적된 접착각이 미리 설정된 임계값을 초과하는지 여부를 기준으로 거래 신호를 발행합니다.

특히, 전략은 원시 1분 이동 평균과 칼만 필터 이동 평균을 정의한다. 칼만 필터는 이동 평균에서 약간의 소음을 제거하여 부드럽게 만든다. 두 이동 평균 사이의 접경 각은 가격 트렌드 변화를 반영한다. 예를 들어, 접경 각이 긍정적 인 경우 상승 추세를 나타냅니다. 반대로, 부정적인 각은 하락 추세를 나타냅니다.

이 전략은 그 기간 내의 모든 긍정적 및 부정적인 접각각을 합하는 계산 기간으로 30 분을 선택합니다. 합이 360도를 초과하면 극도로 강한 트렌드를 신호하고 긴 신호를 발사합니다. 반대로 합이 -360도 이하라면 트렌드 반전을 표시하고 짧은 신호를 발사합니다.

이점 분석

이중 이동 평균 전략 360°의 주요 장점은 다음과 같습니다.

  1. 이동 평균은 더 신뢰할 수 있는 거래 결정을 위해 단기 시장 소음을 필터링합니다.
  2. 타젠트 각은 트렌드 강도를 정량화하여 이동 평균 패턴만으로 판단하는 주관성을 피합니다.
  3. 여러 개의 접각각을 합하면 더 나은 소음 감축 효과가 있으며 더 신뢰할 수있는 거래 신호가 발생합니다.
  4. 단일 이동 평균 전략에 비해, 트렌드 강도 결정과 결합된 이중 이동 평균 전략은 전략을 더 포괄적이고 견고하게 만듭니다.

위험 분석

이중 이동 평균 전략 360 ° 또한 몇 가지 위험을 수반:

  1. 이동평균은 가격 변화에서 뒤떨어지고 단기 트렌드 전환점을 놓칠 수 있습니다.
  2. 축적된 트렌드 강도 신호에만 의존하는 것은 시장 변동에 의해 방해될 수 있습니다.
  3. 부적절한 매개 변수 설정 (예: 계산 기간 길이가) 은 거래가 누락되거나 잘못된 신호가 생성될 수 있습니다.

위의 위험을 완화하기 위해 이동 평균 기간을 단축하고 매개 변수 조합을 최적화하고 스톱 로스 메커니즘을 추가하는 등의 조치를 취할 수 있습니다.

최적화 방향

이중 이동 평균 전략 360°는 다음으로 더 이상 최적화 될 수 있습니다.

  1. 시장 변동성에 기초한 매개 변수를 조정하는 적응적인 이동 평균을 포함합니다.
  2. 최적화된 매개 변수 조합을 형성하기 위해 여러 이동 평균 기간을 참조합니다.
  3. 변동성, 거래량 등에 기반한 동적 트렌드 결정 모듈을 추가합니다.
  4. 매개 변수 조정이나 기계 학습 모델을 이용한 거래 결정에 도움을 줍니다.

요약

이중 이동 평균 전략 360 °는 이동 평균 필터링과 양적 접경 각 트렌드 판단을 사용하여 비교적 견고한 양적 거래 전략을 달성합니다. 단일 기술 지표와 비교하면이 전략은 더 포괄적인 고려 사항을 형성하고 더 강력한 실용성을 가지고 있습니다. 그러나 매개 변수 조정 및 위험 통제는 여전히 중요합니다. 그리고 전략은 앞으로 더 나은 결과를 위해 더 이상 최적화 될 수 있습니다.


/*backtest
start: 2024-01-25 00:00:00
end: 2024-01-30 08:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//@library=math
strategy("策略360°(测试)", overlay=true)

// 定义1分钟均线
ma1 = request.security(syminfo.tickerid, "1", ta.sma(close, 1)) // 在这里使用了 math.sma() 函数
//plot(ma1, color=color.yellow, title="原始均线")

// 定义卡尔曼滤波函数,参考了[1](https://www.tradingview.com/pine-script-docs/en/v5/language/Methods.html)和[2](https://www.tradingview.com/pine-script-docs/en/v5/language/Operators.html)的代码
kalman(x, g) => 
    kf = 0.0 
    dk = x - nz(kf[1], x) // 在这里使用了 nz() 函数
    smooth = nz(kf[1], x) + dk * math.sqrt(g * 2) // 在这里使用了 math.sqrt() 函数
    velo = 0.0 
    velo := nz(velo[1], 0) + g * dk // 在这里使用了 nz() 函数
    kf := smooth + velo 
    kf 

// 定义卡尔曼滤波后的均线
ma2 = kalman(ma1, 0.01) 
plot(ma2, color=color.blue, title="卡尔曼滤波后的均线")

// 定义切线角
angle = math.todegrees(math.atan(ma2 - ma2[1])) // 在这里使用了 math.degrees() 和 math.atan() 函数

// 定义累加的切线角
cum_angle = 0.0
cum_angle := nz(cum_angle[1], 0) + angle // 在这里使用了 nz() 函数

// 定义30分钟周期
period = 30 // 您可以根据您的需要修改这个参数

// 定义周期内的切线角总和
sum_angle = 0.0
sum_angle := math.sum(angle, period) // 在这里使用了 math.sum() 函数,把周期内的切线角总和改成简单地把 5 个切线角相加

// 定义买入和卖出条件
buy = sum_angle > 360// 在这里使用了 math.radians() 函数
sell = sum_angle < -360

// 执行买入和卖出操作
strategy.entry("Long", strategy.long, when=buy)
strategy.close("Short", when=buy)
strategy.entry("Short", strategy.short, when=sell)
strategy.close("Long", when=sell)

// 绘制曲线图
plot(sum_angle, color=color.green, title="周期内的切线角总和")
plot(angle, color=color.red, title="切线角") // 这是我为您添加的代码,用于显示实时计算的切线角


더 많은