이 전략은 여러 시간 프레임에서 작동하는 동적 이동 평균 조합 전략이다. 트렌드 판단 및 입출 신호를 위해 다양한 길이의 기하급수적인 이동 평균 (EMA) 을 사용합니다. 전략 이름의
이 전략은 7개의 EMA를 사용하며, 가장 빠른 EMA에서 가장 느린 EMA까지 다양한 속도로 움직인다. 3개 기간 EMA, 15개 기간 EMA, 19개 기간 EMA, 50개 기간 EMA, 100개 기간 EMA, 150개 기간 EMA 및 200개 기간 EMA이다. 이 7개의 EMA는 트레페소이드 형식으로 배열되어 있다. 긴 신호와 짧은 신호를 생성하기 위해, 닫는 가격은 강력한 트렌드 역전 진입을 보장하기 위해 이 EMA를 순차적으로 뚫어야 한다.
또한, 전략은 또한 가격의 최근 최고점과 가까운 가격의 역사적 최고점을 넘어서 긴 신호를 확인하고, 최근 낮은 가격과 가까운 가격의 역사적 최저점을 넘어서 짧은 신호를 확인하는 것을 포함합니다. 이것은 잘못된 브레이크오프를 피하는 데 도움이됩니다.
출구 규칙은 닫는 가격으로 더 빠른 EMA를 느린 EMA로 순차적으로 깨는 것을 요구하며, 트렌드 반전을 나타냅니다. 대안적으로, 최신 바
해결책:
이 전략은 트렌드를 결정하기 위해 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)