다중 기간 동적 이동 평균 전략


생성 날짜: 2023-10-27 16:07:16 마지막으로 수정됨: 2023-10-27 16:07:16
복사: 1 클릭수: 647
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

다중 기간 동적 이동 평균 전략

이 전략은 다양한 유형의 이동 평균을 동적으로 선택하여 여러 시간 주기에 결합하여 거래 신호를 생성합니다.

전략 원칙

이 전략은 SMA, EMA, TEMA, WMA, HMA의 다섯 가지 이동 평균 지표를 선택하고 평균 선의 주기 길이를 설정합니다. 전략은 선택된 역학에 따라 다른 유형의 평균 선을 그리습니다.

구체적으로, 전략은 먼저 입력 변수에 따라 재검사 주기를 정의한다. 그리고는 다섯 가지 평균선 지표를 계산한다:

  • SMA 단순 이동 평균
  • EMA 지수 이동 평균
  • TEMA 삼진 이동 평균
  • WMA 가중 이동 평균
  • HMA Hull 이동 평균

선택에 따라, 해당 평균선을 그리십시오. 종점 가격이 평균선보다 높을 때, 더 많이; 종점 가격이 평균선보다 낮을 때, 공백하십시오.

이 전략은 다양한 유형의 평균선을 조합하여 가격 데이터를 평형화하고 시장 소음을 필터링하여 신뢰할 수있는 거래 신호를 생성합니다. 평균선 주기의 길이를 사용자 정의 할 수 있도록 허용하여 다양한 주기의 추세에 맞게 거래 할 수 있습니다.

전략적 이점

  • 복합적으로 여러 가지 평균선 지표를 사용하여 신뢰성이 높습니다.
  • 사용자 정의 수평 주기, 다른 주기 동작에 적용
  • 동적으로 스위치 일률형, 최적화 매개 변수 유연
  • 간단한, 직관적인 트렌드 추적 전략, 쉽게 실행할 수 있습니다.

전략적 위험

  • 평균선 지연, 트렌드 전환점을 놓칠 수 있다
  • 고정된 매개 변수가 지나치게 잘 어울릴 수 있고, 실디 효과는 재측정보다 약할 수 있다.
  • 다자리 단계에서는 적극적으로 더 많이 하고, 빈자리 단계에서는 적극적으로 빈자리를 하고, 자금 사용 효율성에 영향을 미칠 수 있다.

이 위험은 다음과 같은 것들을 최적화하여 줄일 수 있습니다.

  • 다른 지표와 함께 추세를 판단하여 더 정확한 입학 시기를 결정합니다.
  • 실디 최적화 매개 변수, 다른 시장 환경에 맞춰 평균 주기 조정
  • 포지션 관리를 최적화하고, 자본 규모와 위험 통제에 따라 포지션을 적절하게 조정합니다.

최적화 방향

이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.

  1. 더 안정적인 거래 신호를 만들기 위해 다른 지표 필터를 추가합니다.

예를 들어, 거래량이 커질 때만 거래 신호를 생성할 수 있는 양력 지표가 추가되어 가짜 돌파구를 필터링 할 수 있습니다.

  1. 출전 로직을 최적화

통로를 설정할 수 있고, 가격이 통로를 뚫었을 때만 입점할 수 있다. 정지선을 설정하고, 가격이 정지선을 건드린 후 평준화한다. 이것은 불필요한 손실을 줄일 수 있다.

  1. 동적 조정 평균선 주기

시장상황의 동성에 따라 평균선주기를 조정할 수 있으며, 추세가 더 뚜렷할 때 긴 주기 평균선을 사용하거나, 정리할 때 짧은 주기 평균선을 사용한다.

  1. 자금 관리 전략의 최적화

철수 시 포지션 크기를 조정할 수 있으며 철수 시 포지션을 줄이고 수익을 올릴 때 포지션을 적당히 늘릴 수 있다.

요약하다

이 전략은 복합적으로 여러 가지 평균선 지표를 적용하여 여러 시간 주기와 결합하여 비교적 안정적인 트렌드 추적 효과를 형성한다. 전략 최적화 공간은 넓고, 입구 필터, 출구 방식, 매개 변수 최적화 등의 측면에서 개선할 수 있어 전략은 실판에서 더 나은 효과를 얻을 수 있다.

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

//@version=3
strategy("MA_strategy ", shorttitle="MA_strategy", overlay=true, initial_capital=100000)

qty = input(100000000, "Buy quantity")

testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testStartMin = input(0, "Backtest Start Minute")

testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,testStartMin)

testStopYear = input(2099, "Backtest Stop Year")
testStopMonth = input(1, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)


testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false


ma1 = input( "SMA",title="Select MA", options=["SMA", "EMA","TEMA", "WMA","HMA"])


len1 = input(7, minval=1, title="Period")

s=sma(close,len1)

e=ema(close,len1)


xEMA1 = ema(close, len1)
xEMA2 = ema(xEMA1, len1)
xEMA3 = ema(xEMA2, len1)
t = 3 * xEMA1 - 3 * xEMA2 + xEMA3


f_hma(_src, _length)=>
    _return = wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))

h = f_hma(close, len1)

w = wma(close, len1)

ma = ma1 == "SMA"?s:ma1=="EMA"?e:ma1=="WMA"?w:ma1=="HMA"?h:ma1=="TEMA"?t:na

buy= close>ma
sell= close<ma

alertcondition(buy, title='buy', message='buy')
alertcondition(sell, title='sell', message='sell')

ordersize=floor(strategy.equity/close)

if testPeriod()
    strategy.entry("long",strategy.long,ordersize,when=buy)
    strategy.close("long", when = sell )