이동 평균 확인 전략을 사용한 나선형 도지


생성 날짜: 2024-02-02 14:50:08 마지막으로 수정됨: 2024-02-02 14:50:08
복사: 0 클릭수: 607
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이동 평균 확인 전략을 사용한 나선형 도지

개요

이 전략은 나선형 지표와 이동 평균을 결합하여 가격 트렌드의 방향과 강도를 식별하여 잠재적인 상장 및 하락 신호를 생성합니다. 나선형 긍정적인 지표가 나선형 부정적인 지표선을 돌파하면, 이 교차점을 차트에 표시합니다.

전략 원칙

  1. 스피럴 지표: 스피럴 긍정적인 지표선 ((VI+) 과 스피럴 부정적인 지표선 ((VI-) 을 포함한다. 그것은 가격 경향의 방향과 강도를 식별하는 데 사용됩니다.

  2. 이동 평균: 선택의 이동 평균 방법 (SMA, EMA, SMMA, WMA 또는 VWMA) 을 사용하여 가격 데이터를 평형화하여, 얻은 평형선은 평형선 이라고합니다.

  3. 다수와 하위 신호를 결정한다: VI+선이 VI-선을 통과할 때, 이 교차점을 표시하고, 마감값이 평면선보다 높으면 다수 신호를 생성한다; VI-선이 VI+선을 통과할 때, 마감값이 평면선보다 낮으면 하위 신호를 생성한다.

전략적 이점

  1. 트렌드 인식과 슬라이드 필터의 장점을 결합하여, 트렌드 시장에서 트렌드를 포착하고, 흔들리는 시장에서 잘못된 신호를 방지할 수 있다.

  2. 스피럴 지표는 트렌드의 방향과 강도를 효과적으로 식별할 수 있습니다. 이동 평균은 일부 잡음을 필터링 할 수 있습니다.

  3. 전략적 논리는 간단하고 명확하며, 이해하기 쉽고 구현하기 쉽습니다.

  4. 사용자 정의 가능한 매개 변수, 다른 시장 환경에 적응

전략적 위험

  1. 수렴 및 명확한 추세가 없는 시장에서는 잘못된 신호와 SERIAL 상쇄가 발생할 수 있습니다.

  2. 변수 설정이 잘못되면 전략의 성능에도 영향을 미칩니다. 예를 들어 이동 평균 길이가 너무 짧으면 필터링 효과가 떨어지며 너무 길으면 트렌드 변경이 지연됩니다.

  3. 주요 금융 사건 이후의 급격한 변동과 같은 갑작스러운 사건에 대한 방지를 수행 할 수 없습니다.

전략 최적화

  1. 트렌드 신뢰도를 결정하기 위해 거래량 지표와 같은 다른 지표와 함께 사용할 수 있습니다.

  2. 최적화 매개 변수를 설정하여 이동 평균의 추세 추적성과 노이즈 필터링을 균형 잡는다.

  3. 손실을 통제하기 위한 스톱로스 전략을 추가하십시오.

  4. 기계 학습과 같은 방법을 사용하여 자동으로 최적화 파라미터.

  5. 리스크 관리 모듈과 함께 포지션을 조정한다.

요약하다

이 전략은 순환 지표와 이동 평균을 간단하고 효과적으로 결합하여 우수한 트렌드 캡처 효과를 달성합니다. 트렌드 방향을 식별하면서 약간의 잡음 필터링 능력을 가지고 있으며 잘못된 신호를 줄일 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-02-01 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © DraftVenture

//@version=5
strategy("Vortex + Moving Average Strategy", overlay=true)

//Vortex settings
period_ = input.int(14, title="Vortex Length", minval=2)
VMP = math.sum( math.abs( high - low[1]), period_ )
VMM = math.sum( math.abs( low - high[1]), period_ )
STR = math.sum( ta.atr(1), period_ )
VIP = VMP / STR
VIM = VMM / STR
plot(VIP, title="VI +", color=color.white)
plot(VIM, title="VI -", color=color.white)

len = input.int(9, minval=1, title="MA Length")
src = input(close, title="Source")
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
out = ta.sma(src, len)
plot(out, color=color.blue, title="MA", offset=offset)

ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

typeMA = input.string(title = "Method", defval = "SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title = "Length", defval = 5, minval = 1, maxval = 100, group="Smoothing")

smoothingLine = ma(out, smoothingLength, typeMA)
plot(smoothingLine, title="Smoothing Line", color=#f37f20, offset=offset, display=display.none)

// Determine long and short conditions
longCondition = ta.crossover(VIP, VIM) and close > smoothingLine
shortCondition = ta.crossunder(VIP, VIM) and close < smoothingLine
crossCondition = ta.crossunder(VIP, VIM) or ta.crossunder(VIM, VIP)

// Strategy entry and exit logic
if longCondition
    strategy.entry("Long", strategy.long)

if shortCondition
    strategy.entry("Short", strategy.short)

bgcolor(crossCondition ? color.new(color.white, 80) : na)

// Strategy by KP