
이 전략은 AO의 흔들림 지표와 EMA의 이동 평균의 교차를 이용한 일간 거래의 전략이다. 주요 아이디어는 AO 지표가 0축을 교차하는 동시에 빠른 EMA 라인이 중간 EMA 라인을 통과하여 거래 신호를 생성하는 것이다.
이 전략은 주로 두 가지의 지표들을 이용해서 진출과 출전을 결정합니다.
AO 쇼크 지표: 이 지표는 5일 고저가 평균과 34일 고저가 평균의 차이로 현재 시장의 흐름을 판단하기 위해 사용된다. AO가 긍정할 때 현재 상승 추세를 나타내고, 부정할 때 현재 하락 추세를 나타낸다.
EMA 이동 평균: 전략에서 3일과 20일 두 개의 EMA를 사용하여 계산합니다. 3일 EMA는 단기 경향을 나타냅니다. 20일 EMA는 중기 경향을 나타냅니다. 단기 EMA는 아래에서 중기 EMA를 돌파 할 때 구매 신호를 생성하고, 위에서 아래로 돌파 할 때 판매 신호를 생성합니다.
이 전략의 입문 조건은, AO 지표가 0축을 가로질렀을 때, 동시에 EMA가 황금 포크 또는 사다리 발생했을 때만 거래 신호를 발생시킨다. 이것은 AO 지표가 흔들렸을 때 잘못된 신호를 발생시키는 것을 피할 수 있다. 그리고 출구 조건은 런던 거래 시간이 끝난 후 전체 평점이다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
이 전략에는 몇 가지 위험도 있습니다.
이러한 위험을 회피하기 위해, 우리는 스톱 로드 메커니즘을 설정하거나, 다른 주기에 따라 변수를 조정하여 전략을 더 탄력적으로 만들 수 있습니다.
이 전략의 주요 최적화 방향은 다음과 같은 변수 조정입니다:
EMA 주기의 조정. 더 짧은 주기의 EMA 조합을 테스트하거나 거래 신호를 구축하기 위해 더 많은 EMA를 추가할 수 있습니다.
AO 매개 변수의 조정. AO 지표에 미치는 영향을 테스트하는 다양한 길고 짧은 주기 매개 변수;
다른 보조 지표를 추가하십시오. 예를 들어 RSI 보드 지표가 추가되어 과매매의 위험을 피합니다.
거래시간의 조정. 다른 지역이나 더 긴 거래시간의 효과를 테스트한다.
매개 변수를 조정하고 새로운 지표를 추가하면 전략이 더욱 안정적이고 효율적으로 될 수 있습니다.
전체적으로, 이 거래 전략은 트렌드 판단 지표 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))