이 전략은 9일 EMA를 판단 지표로 사용하여, 가격의 EMA에 대한 돌파 상황에 따라 시장 방향을 판단하는 전형적인 트렌드 추적 전략에 속한다. 가격이 EMA를 돌파 할 때 상장 / 공백을 하고, 가격 회귀를 기다린 후 정지한다.
9일 EMA 평균선을 계산하고, 이를 다공간 분계선으로 한다. K선 상장 가격이 EMA선 아래에 있고 상장 가격이 위쪽에 있을 때, 상향 돌파가 발생한다고 생각하며, 이 때 더 많은 입장을 한다. 상장 가격이 EMA선 위에 있고 상장 가격이 아래에 있을 때, 하향 돌파가 발생한다고 생각하며, 이 때 공백 입장을 한다.
진입 후 정지표를 설정하고, 정지 가격을 해당 K 라인의 최고 가격 또는 최저 가격 근처에 설정합니다. 즉, 상향은 상위 K 라인의 최고 가격으로 정지 가격을 돌파하고, 하향은 상위 K 라인의 최저 가격으로 정지 가격을 돌파합니다. 가격이 정지점에 도달한 후에 거래를 종료하기 위해 기다립니다.
이 전략은 EMA 평평선을 사용하여 트렌드 방향을 판단하고, 가격이 EMA를 돌파할 때 진입하여 트렌드를 효과적으로 추적할 수 있다. 정지점은 진입점 부위와 가깝고, 짧은 선 회전을 잡기 위해 적합하다. 전략의 동작은 간단하고 직접적이며, 자동화하기 쉽다.
EMA 주기는 사용자 정의 가능하며, 적응력이 강하다. 정지 전략은 직접적으로 효율적이며, 장기 손실을 피한다. 재검토 데이터는 추세가 명백한 단계에서 전략이 잘 작동한다고 보여준다.
이 전략은 단 하나의 EMA 지표만을 사용하며, 흔들리는 상황에서 트렌드 방향을 식별하기가 어렵고, 너무 많은 잘못된 신호가 발생할 수 있습니다.
적절한 EMA 주기 파라미터를 조정할 수 있으며, 다른 기술 지표도 보조 판단을 위해 추가할 수 있다. 이동식 스톱, 동적 스톱과 같은 차단 전략을 최적화하는 것도 전략 안정성을 향상시킬 수 있다. 자금 관리 측면에서 단일 포지션 규모를 제어하는 것도 위험을 줄일 수 있다.
테스트 EMA 파라미터를 최적화하여 더 적합한 주기 파라미터를 찾습니다.
부양량 지표, 변동률 지표 등의 판단 규칙
이동식 스톱, 동적 스톱 등을 도입하는 등 스톱 전략을 최적화한다.
기술적인 지표와 결합하여 전략적 포트폴리오를 형성한다.
기계학습과 같은 방법을 적용하여 동향을 판단한다.
엄격한 자금 관리와 단일 포지션 크기를 제어하십시오.
이 전략은 간단한 EMA 돌파 회귀 거래 전략으로, 아이디어가 명확하고 구현하기 쉽다는 장점이 있지만 단일 EMA 지표에만 의존하는 효과는 제한되어 있습니다. 여러 가지 기술 지표 최적화를 도입하여 안정성을 높일 수 있습니다.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("larry willians teste2", overlay=true)
//Window of time
start = timestamp(2019, 00, 00, 00, 00) // backtest start window
finish = timestamp(2019, 12, 31, 23, 59) // backtest finish window
window() => true // create function "within window of time"
ema9=ema(close,9) // Ema de 9 periodos
//Condições de compra
c1= (open< ema9 and close > ema9) //abrir abaixo da ema9 e fechar acima da ema9
if(window())
if(c1)
strategy.entry("Compra", true, stop = high) // Coloca ordem stopgain no topo anterior
else
strategy.cancel("Compra") // Cancela a ordem se o proximo candle não "pegar"
//codições de venda
v1= (open> ema9 and close < ema9) // abrir acima da ema9 e fechar abaixo ema9
if(window())
if (v1)
strategy.exit("Venda", from_entry = "Compra", stop = low) // Saida da entrada com stop no fundo anterior
else
strategy.cancel("Venda") //Cancela a ordem se o proximo candle não "pegar"