다중 기간 이동 평균 거래 전략


생성 날짜: 2023-10-09 15:05:47 마지막으로 수정됨: 2023-10-09 15:05:47
복사: 0 클릭수: 671
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 여러 가지 다른 변수 설정의 EMA 평균선과 EOM 양력 지표를 결합하여 여러 시간 주기 트렌드 판단을 구현하고, 긴 선과 짧은 선의 공동 판단을 구축하는 거래 전략이다. 이 전략은 다양한 주기 평균선의 여러 시간 주기 공명기를 사용하여 더 효과적인 트렌드 움직임을 발견하는 것을 목표로 한다.

전략 원칙

이 전략은 4개의 그룹으로 구성된 4개의 다른 주기의 파라미터 EMA 평균선을 사용한다. 각각 13주기, 21주기, 50주기, 180주기 EMA이다. 이 4개의 그룹으로 구성된 EMA 평균선은 가격의 흐름을 판단하고 더 오래 지속되는 트렌드 패턴을 찾아내기 위해 여러 시간 차원을 구성한다.

전략은 EOM 양력 지표를 사용하여 트렌드를 확인한다. EOM 지표는 거래량과 가격 변동의 폭을 결합하여 구매력 경로를 효과적으로 판단할 수 있다. 전략은 EOM이 0보다 크면 다단 시장이며, EOM이 0보다 작으면 공백 시장이라고 판단한다.

전략 설정 두 가지 옵션, 옵션 1은 단기 EMA에 장기 EMA를 통과할 때 더 많이하고, 단기 EMA에 장기 EMA를 통과할 때 평소한다. 옵션 2은 단기 EMA에 중기 EMA를 통과할 때 더 많이하고, 단기 EMA 아래 중기 EMA를 통과할 때 평소한다. 두 가지 옵션은 더 포괄적으로 추세를 판단할 수 있다.

전략적 이점

  • 다중 시간 주기 EMA를 사용하여 추세를 판단하여 더 긴 선의 추세 패턴을 발견할 수 있습니다.
  • EOM 수량 지표는 구매력과 판매력을 효과적으로 판단하여 일시적인 회귀를 피합니다.
  • 두 가지 진입 방식으로 트렌드를 더 잘 파악할 수 있습니다.
  • 분층적 교류로 손해를 줄이고 단편적 손실을 줄입니다.

전략적 위험

  • EMA 평균이 지연되어 빠른 반전을 놓칠 수 있습니다.
  • 양력 지표가 잘못된 신호를 보낼 수 있다.
  • 다중 조건 판단으로 입학이 불확실하다
  • 분층화 손수정 손해가 너무 기계화 될 수 있습니다.

최적화 방향

  • 더 많은 조합의 변수를 테스트할 수 있는 EMA 주기, 최적의 변수를 찾는 것
  • MACD와 같은 다른 지표들을 추가할 수 있습니다.
  • 트렌드 실행을 추적하기 위해 이동 스톱을 사용할 수 있습니다.
  • 시장 상황에 따라 위치 비율을 조정할 수 있습니다.

요약하다

이 전략은 다중 시간 주기의 EMA 판단과 양 에너지 지표 필터를 통합하여 트렌드 추적과 노이즈 제거를 구현한다. 최적화 할 여지가 많으며, 다른 파라미터 조합을 테스트하고 더 많은 지표를 추가함으로써 전략의 안정성을 더욱 향상시킬 수 있다. 동적 스톱로스 및 포지션 관리도 전략의 성능을 크게 최적화 할 수 있다.

전략 소스 코드
/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 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/
// © SoftKill21

//@version=4
strategy("4x ema + volume", overlay=true,initial_capital = 1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent , commission_value=0.1 )

//ema x 4
ema1l=input(13)
ema2l=input(21)
ema3l=input(50)
ema4l=input(180)

ema1=ema(close,ema1l)
ema2=ema(close,ema2l)
ema3=ema(close,ema3l)
ema4=ema(close,ema4l)

long1 = close > ema1 and ema1 > ema2 and ema2> ema3 and ema3 > ema4
long2 = crossover(ema1,ema2) and crossover(ema1,ema3)

short1 = close < ema1 and ema1 < ema2 and ema2< ema3 and ema3 < ema4
short2= crossunder(ema1,ema2) and crossunder(ema1,ema3)


//eom
length = input(14, minval=1)
div = input(10000, title="Divisor", minval=1)
eom = sma(div * change(hl2) * (high - low) / volume, length)


option1=input(true)
option2=input(false)

if(option1)
    strategy.entry("long",1,when=long1 and eom>0)
    strategy.close("long",when=short1 and eom<0)
 
if(option2)
    strategy.entry("long",1,when=long2 and eom>0)
    strategy.close("long",when=short2 and eom<0)