리소스 로딩... 로딩...

동적 이동 EMA 조합 양성 전략

저자:차오장, 날짜: 2024-01-22 12:34:33
태그:

img

전반적인 설명

이 전략은 여러 시간 프레임에서 작동하는 동적 이동 평균 조합 전략이다. 트렌드 판단 및 입출 신호를 위해 다양한 길이의 기하급수적인 이동 평균 (EMA) 을 사용합니다. 전략 이름의 MAX은 여러 EMA를 의미하며, Dynamic은 EMA 길이가 조정 가능하다는 것을 의미합니다.

전략 논리

이 전략은 7개의 EMA를 사용하며, 가장 빠른 EMA에서 가장 느린 EMA까지 다양한 속도로 움직인다. 3개 기간 EMA, 15개 기간 EMA, 19개 기간 EMA, 50개 기간 EMA, 100개 기간 EMA, 150개 기간 EMA 및 200개 기간 EMA이다. 이 7개의 EMA는 트레페소이드 형식으로 배열되어 있다. 긴 신호와 짧은 신호를 생성하기 위해, 닫는 가격은 강력한 트렌드 역전 진입을 보장하기 위해 이 EMA를 순차적으로 뚫어야 한다.

또한, 전략은 또한 가격의 최근 최고점과 가까운 가격의 역사적 최고점을 넘어서 긴 신호를 확인하고, 최근 낮은 가격과 가까운 가격의 역사적 최저점을 넘어서 짧은 신호를 확인하는 것을 포함합니다. 이것은 잘못된 브레이크오프를 피하는 데 도움이됩니다.

출구 규칙은 닫는 가격으로 더 빠른 EMA를 느린 EMA로 순차적으로 깨는 것을 요구하며, 트렌드 반전을 나타냅니다. 대안적으로, 최신 바의 낮은/높은 값이 4 EMA 이상을 깨는 경우, 그것은 또한 해당 위치의 출구 신호입니다.

이점 분석

  • 트레페조이드 모양을 형성하는 다른 속도 7 EMA를 사용하면 트렌드 반전 지점을 더 정확하게 식별 할 수 있습니다.
  • 새로운 고도/하위 및 역사적 고도/하위 등이 포함되면 잘못된 브레이크오프 신호가 피됩니다.
  • 엄격한 이중 출구 규칙은 신속한 스톱 손실을 허용

위험 분석

  • 스톱 로스 메커니즘이 없으면 엄청난 손실 가능성이 있습니다.
  • 이중 출입 규칙은 조기 출입을 초래할 수 있습니다.
  • 너무 빠른 EMA는 더 많은 소음을 발생시키고 거래 빈도와 수수료 비용을 증가

해결책:

  1. 고정 비율 스톱 손실과 후속 스톱 손실을 추가합니다.
  2. 이중 출구 규칙의 엄격성을 낮추기 위해 출구 EMA 길이를 조정합니다.
  3. 거래 빈도를 줄이기 위해 EMA 길이를 늘려

최적화 방향

  • 고정 비율 중지 손실, 후속 중지 손실 등과 같은 중지 손실 메커니즘을 추가
  • 가장 좋은 조합을 찾기 위해 EMA 매개 변수를 최적화
  • MACD, ATR, KDJ 등과 같은 다른 지표를 필터 신호에 추가
  • 범주/채널 전략과 결합하여 트렌드의 2차 움직임을 파악합니다.
  • 위치 사이즈 규칙을 추가하는 것을 고려하십시오.

결론

이 전략은 트렌드를 결정하기 위해 7개의 다른 속도 EMA를 사용하고 반전을 감지하기 위해 이중 출구 규칙을 사용하는 명확한 논리를 가지고 있습니다. 그러나 엄청난 손실 위험을 초래하는 스톱 로스 메커니즘이 없으며, 조기에 출구 할 수 있습니다. 스톱 로스, 매개 변수 조정, 지표 필터링을 추가하는 것과 같은 측면에서 개선이 가능하여 탄탄한 거래 시스템으로 전환 할 수 있습니다.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Crypto MAX Trend", shorttitle="Crypto MAX", overlay = true  )
Length = input(3, minval=1)
Length2 = input(15, minval=1)
Length3 = input(19, minval=1)
//Length33 = input(25, minval=1)
Length4 = input(50, minval=1)
Length44 = input(100, minval=1)
Length5 = input(150, minval=1)
Length6 = input(171, minval=1)
Length66 = input(172, minval=1)

xPrice = input(close)

xEMA1 = ema(xPrice, Length)
xEMA2 = ema(xPrice, Length2)
xEMA3 = ema(xPrice, Length3)
//xEMA33 = ema(xPrice, Length33)
xEMA4 = ema(xPrice, Length4)
xEMA44 = ema(xPrice, Length44)
xEMA5 = ema(xPrice, Length5)
xEMA6 = ema(xPrice, Length6)
xEMA66 = ema(xPrice, Length66)

// plot(xEMA1, color=color.white)
// plot(xEMA2, color=color.red)
// plot(xEMA3, color=color.green)
// plot(xEMA4, color=color.purple)
// plot(xEMA44, color=color.gray)
// plot(xEMA5, color=color.maroon)
// plot(xEMA6, color=color.blue)
// plot(xEMA66, color=color.orange)


fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true



long = close >  xEMA1 and xEMA1 > xEMA2 and xEMA2 > xEMA3  and xEMA3 > xEMA4  and xEMA4 > xEMA44 and xEMA44 > xEMA5 and xEMA5> xEMA6  and xEMA6> xEMA66  and close > high[1] and high[1] > high[2] and close > high[3] and close > high[4] and close > high[5] and high[5] > high[6] and time_cond
short = close < xEMA1 and xEMA1 < xEMA2 and xEMA2 < xEMA3  and xEMA3 < xEMA4  and xEMA4 < xEMA44 and xEMA44 < xEMA5 and xEMA5< xEMA6 and  xEMA6< xEMA66 and close < low[1] and low[1] < low[2] and close < low[3] and close < low[4] and close< low[5] and low[5] < low[6] and time_cond

notlong = close < xEMA1
strategy.entry("long",1,when=long)
strategy.entry("short",0,when=short)


exitlong1 = xEMA1 < xEMA2 and xEMA2 < xEMA3 and xEMA3 < xEMA4
exitlong2 = crossunder(low,xEMA1) and crossunder(low,xEMA2) and crossunder(low,xEMA3) and crossunder(low,xEMA4)
exitshort1 = xEMA1 > xEMA2 and xEMA2 > xEMA3 and xEMA3 > xEMA4
exitshort2 = crossover(high,xEMA1) and crossover(high,xEMA2) and crossover(high,xEMA3) and crossover(high,xEMA4)

strategy.close("long", when = exitlong1 or exitlong2)
strategy.close("short", when= exitshort1 or exitshort2) 






 


더 많은