EMA 지표를 기반으로 한 플래그 추세 추종 전략


생성 날짜: 2023-11-27 15:30:29 마지막으로 수정됨: 2023-11-27 15:30:29
복사: 0 클릭수: 623
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

EMA 지표를 기반으로 한 플래그 추세 추종 전략

개요

이 전략은 주로 EMA 평균선 지표와 표준 격차 지표를 사용하여 EMA 평균선의 교차 신호를 통해 트렌드 방향을 판단하고 표준 격차 지표를 사용하여 브레이크 신호를 찾고 구매 및 판매 신호를 생성합니다. 가격이 궤도를 돌파 할 때 구매 신호를 생성하고, 궤도를 돌파 할 때 판매 신호를 생성합니다. 트렌드 추적 유형에 속하는 전략입니다.

전략 원칙

이 전략은 크게 세 부분으로 구성됩니다.

  1. EMA 평균선 차이 ((s2): 빠른 EMA 평균선 ((ema_range) 을 빼고 느린 EMA 평균선 ((ema_watch) 의 차이를 계산하여 가격 트렌드 방향을 판단한다.

  2. 표준차이 상하 궤도 ((s3): EMA 평균선 차이의 값에 기초하여 표준차의 배수를 더하여 상하 궤도 대역을 구성한다. 이 중 표준차의 배수는 금분수 5.618을 사용한다.

  3. 깃발 모양과 신호: 가격이 아래에서 위를 돌파할 때, 구매 신호를 생성한다. 가격이 위에서 아래로 돌파할 때, 판매 신호를 생성한다. 또한 신호를 생성할 때 깃발 모양으로 표시한다.

이 조합 지표를 통해 가격의 트렌드 방향을 잡을 수 있으며, 핵심 지점에서 구매 및 판매 신호를 생성하며, 전형적인 트렌드 추적 전략에 속한다.

우위 분석

이 전략에는 다음과 같은 장점이 있습니다.

  1. EMA 평균선을 사용하여 가격 트렌드 방향을 판단하여 트렌드를 효과적으로 추적할 수 있다.
  2. 스탠더드 디비전 지표를 이용하여 궤도 상향과 하향을 구성하여 비 핵심 지점에서 잘못된 신호가 발생하지 않도록 한다.
  3. 이 신호는 직관적으로 명확하고, 구매 및 판매 지점을 명확하게 판단합니다.
  4. 매개 변수 설정은 유연하며, 평균선 주기 및 표준 차이의 배수를 조정할 수 있다.
  5. 최대 회수 제어는 위험을 줄이는 데 도움이 됩니다.

위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. 트렌드 시장에서는 효과가 좋지만, 흔들림 시장에서는 더 많은 잘못된 신호가 발생할 수 있다.
  2. 표준 차등 배수를 세웠던 대회가 매매 기회를 놓쳤어요.
  3. 정지 손실 전략이 없으므로, 돌파 후에 회귀가 발생하면 큰 손실이 발생할 수 있습니다.

위와 같은 위험은 다음과 같은 방법으로 최적화할 수 있습니다.

  1. 위기 시장 판단을 높이고 위기 시장에서 다른 전략을 사용하는 대안.
  2. 최적화된 표준편차 변수를 찾아 최적의 변수 조합을 찾는다.
  3. 이동 중지 손실을 증가시켜 개별 단자의 손실을 제어한다.

최적화 방향

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

  1. 더 많은 지표 판단을 추가하여, 예를 들어, 브린 띠를 추가하여 신호 품질을 향상시킵니다.
  2. 평균선과 표준편차 변수를 최적화하여 최적의 변수 조합을 찾습니다.
  3. 이 경우, 회수할 수 있는 위험은 낮아질 것입니다.
  4. 각 시장에 따라 최적의 구매/판매 신호 매개 변수를 설정한다.
  5. 기계 학습 알고리즘을 추가하여 전체 시장 체제를 결정한다.

요약하다

이 전략 전체는 보다 전형적인 트렌드 추적 전략에 속하며, EMA와 표준 차이가 지표 시스템을 구축하고, 핵심 지점에서 깃발 모양의 신호를 발생시킨다. 전략의 장점은 트렌드를 포착하고, 표준 차이가 지표를 사용하여 잘못된 신호를 피하는 것이다. 위험은 주로 흔들리는 시장의 잘못된 신호와 무단 손실로 인한 회수 위험에 있다. 판단 지표, 최적화 매개 변수 및 스톱 로드를 추가함으로써 전략의 안정성과 수익성을 더욱 강화할 수 있다.

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

//@version=5
strategy("ROCKET_EWO", overlay=true)
ema_range = input(5)
ema_watch = input(13)
inval_a = input(open)
inval_b = input(open)
ratio = input(0)
max = 5000
s2=ta.ema(inval_a, ema_range) - ta.ema(inval_b, ema_watch)
c_color=s2 <= ratio ? 'red' : 'lime'
s3 = s2 + (ta.stdev(open, 1)) * 5.618
plotshape(s3, color=color.white, style=shape.cross, location=location.abovebar, size=size.auto, show_last=max, transp=30, offset= 0)
cr = s2 > 0
alertcondition(cr, title='[Rocket_EWO]', message='[Rocket_EWO]')
buy = s2 > 1
sell = s2 < -1
txt  = "🚀" + "\n"+ "\n"+ "\n"+ "\n"
plotshape(buy, color=color.lime, style=shape.triangleup, location=location.belowbar ,color=color.white, text=txt, size=size.normal, show_last=max, transp=1, offset= -3)
plotshape(not buy, color=color.red, style=shape.triangledown, location=location.belowbar, size=size.normal, show_last=max, transp=1, offset= 0)
signalperiod = time
s4 = ta.cross(s2, 0) ? time : na
colsig= s2 <= ratio ? color.red : color.lime
plotshape((time==s4)?7000:na,color=color.blue, style=shape.flag, location=location.abovebar, size=size.large, transp=1)

longCondition =  ta.crossover(s2, 1.618)
if (longCondition)
    strategy.entry("LONG Id", strategy.long)

shortCondition = ta.crossunder(s2, 1.618)
if (shortCondition)
    strategy.entry("SHORT Id", strategy.short)

strategy.close("LONG Id", when = s2 < 0.218)
// strategy.risk.max_drawdown(75, strategy.percent_of_equity)