AO 오시레이터 기반의 EMA 크로스오버 내일 거래 전략

저자:차오장, 날짜: 2023-12-25 10:53:48
태그:

img

전반적인 설명

이것은 거래 신호를 생성하기 위해 AO 오시레이터와 EMA 크로스오버를 활용하는 내일 거래 전략입니다. 주요 아이디어는 AO가 중장기 EMA 라인을 넘는 빠른 EMA와 동시에 제로 라인을 넘을 때 거래를 시작하는 것입니다.

전략 논리

이 전략은 주로 두 가지 입력 및 출력 지표에 의존합니다.

  1. AO 오시일레이터: 현재 트렌드 방향을 측정하기 위해 5주기 및 34주기 HL2 평균의 차이를 측정합니다. 긍정적 AO는 상승 추세를 나타내고 부정적인 AO는 하락 추세를 나타냅니다.

  2. EMA 크로스오버: 전략은 단기 트렌드를 위해 3 기간 EMA와 중기 트렌드 방향을 위해 20 기간 EMA를 사용합니다. 3EMA가 20EMA를 통해 상승하는 황금 십자가는 구매 신호를 생성하고 3EMA가 20EMA를 통해 넘어가는 죽음의 십자가는 판매 신호를 생성합니다.

거래는 AO가 EMA 크로스오버와 동시에 제로선을 넘을 때만 입력됩니다. 이것은 AO가 변동할 때 잘못된 신호를 피합니다. 출구는 모든 포지션을 평평화하여 런던 세션이 종료된 후 발생합니다.

이점 분석

이 전략의 주요 장점은 다음과 같습니다.

  1. AO 오시레이터는 신뢰할 수 있는 신호를 위한 정확한 트렌드 방향을 보장합니다.
  2. 이중 표시기 조합은 높은 신뢰성 신호를 위해 잡음을 필터링합니다.
  3. 주요 세션 중만 거래하면 오버나이트 리스크를 피할 수 있습니다.
  4. 단순하고 명확한 논리는 이해하기 쉽고 실행하기 쉽습니다.
  5. 안정적인 매개 변수로 최적화나 곡선 조정이 필요없습니다.

위험 분석

주의해야 할 몇 가지 위험 요소는 다음과 같습니다.

  1. 블랙 스완 이벤트에서 신속한 스톱 로스 없이 연장 손실의 위험
  2. 다양한 시장에서 EMA의 가짜 크로스오버로 인한 화프사
  3. 변화하는 시장 주기에 고정된 매개 변수로부터 적응력이 부족합니다.

위험은 스톱 로스, 다양한 사이클에 맞춰진 적응 매개 변수 등을 통해 완화 될 수 있습니다.

최적화 방향

주요 최적화 방향은 매개 변수 조정입니다:

  1. 신호 생성에서 단기 콤보 또는 추가 EMA를 테스트하기 위해 EMA 기간을 조정합니다.
  2. 오시레이터에 미치는 영향을 평가하기 위해 AO 매개 변수를 조정합니다.
  3. RSIbord 같은 추가 지표를 추가하여 과잉 구매/ 과잉 판매 상황을 피합니다.
  4. 다른 지역이나 더 긴 기간을 테스트하기 위해 거래 세션 시간을 조정합니다.

매개 변수 조정 및 추가 필터는 전략의 안정성과 효율성을 향상시킬 수 있습니다.

결론

요약하자면, 이 내일 거래 전술은 AO 트렌드 가이드를 EMA 크로스오버와 결합하여 간단하면서도 실용적인 접근 방식을 만듭니다. 구현하기 쉬운 명확한 신호를 가지고 있지만 적응 가능한 매개 변수가 없습니다. 추가 테스트와 정교화는 안정성 및 다양한 시장 풍경에 대한 조화를 향상시킬 수 있습니다. 전반적으로 소매 내일 거래자에게 훌륭한 선택을 제공합니다.


/*backtest
start: 2022-12-18 00:00:00
end: 2023-12-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//@author SoftKill21

strategy(title="MA cross + AO", shorttitle="MA_AO")
ao = sma(hl2,5) - sma(hl2,34)

len = input(3, minval=1, title="Length")
src = input(close, title="Source")
out = ema(src, len)

len1 = input(20, minval=1, title="Length")
src1 = input(close, title="Source")
out1 = sma(src1, len1)

timeinrange(res, sess) => time(res, sess) != 0
londopen = timeinrange(timeframe.period, "0300-1100") 
nyopen = timeinrange(timeframe.period, "0800-1600") 

longC = crossover(out,out1) and ao>0 and londopen
shortC = crossunder(out,out1) and ao<0 and londopen

invert = input(title="Reverse position ?", type=input.bool, defval=false)

if(invert==false)
    strategy.entry("LONG",1,when=longC)
    strategy.entry("SHORT",0,when=shortC)



if(invert==true)
    strategy.entry("short",0,when=longC)
    strategy.entry("long",1,when=shortC)
    
strategy.close_all(when= not (londopen))




더 많은