이중 이동 평균 추종 전략은 이동 평균에 기반한 트렌드 추종 전략이다. 그것은 다른 기간의 이동 평균을 계산하여 트렌드 방향을 결정하고 그에 따라 거래 신호를 생성한다. 단기 이동 평균이 장기 평균을 넘을 때 길게, 단기 이동 평균이 장기 평균을 넘을 때 짧게 간다. 전략은 수익을 얻는 경향을 따른다.
이중 이동 평균 다음 전략은 폐쇄 가격의 14 기간 및 28 기간 간단한 이동 평균 (SMA) 을 계산하여 트렌드 방향을 판단합니다. 구체적으로, 각 기간의 끝에서 14 기간 SMA 및 28 기간 SMA를 계산합니다. 14 기간 SMA가 28 기간 SMA를 넘어서면 긴 신호를 보내고 긴 포지션을 개척합니다. 14 기간 SMA가 28 기간 SMA 아래로 넘어가면 짧은 신호를 보내고 짧은 포지션을 개척합니다.
포지션을 입력 한 후, 이윤을 취하고 손실을 멈추는 수준을 설정하여 위험을 관리합니다. 이윤을 취하고 손실을 멈추는 지점은 입력 매개 변수에 따라 가격으로 변환됩니다. 이윤과 위험을 시각적으로 판단하기 위해 차트에 이윤을 취하고 손실을 멈추고 평균 가격 라인을 그려줍니다.
이중 이동 평균에 따른 전략은 다음과 같은 장점을 가지고 있습니다.
이중 이동 평균 전략은 다음과 같은 몇 가지 위험을 가지고 있습니다.
위험은 다음과 같은 측면에서 관리 될 수 있습니다.
이중 이동 평균은 다음 전략으로 최적화 될 수 있습니다.
역동적 스톱 로스 포인트에 대한 변동성 지표를 추가합니다. 예를 들어, ATR와 결합하여 변동성이 증가하면 조기 출출을 피하기 위해 스톱 로스를 확장하십시오.
더 많은 조합을 테스트하고 거래 신호의 적절한 빈도와 적절한 기간을 선택하여 이동 평균 주기의 매개 변수를 최적화하십시오.
트렌드 전환점 근처에서 잘못된 신호를 피하기 위해 MACD, DMI와 같은 트렌드 필터 지표를 추가하여 불필요한 거래를 줄이십시오.
가격 동향을 예측하고 전통적인 규칙을 대체하기 위해 기계 학습 모델을 증가시킵니다. LSTM, GRU 딥 러닝 모델은 더 나은 결과를 창출 할 수 있습니다.
전체 마취를 줄이기 위해 낮은 상관관계를 이용한 거래 품종을 다양화합니다.
결론적으로, 이중 이동 평균 다음 전략은 간단하고 실용적인 트렌드 다음 시스템입니다. 그것은 트렌드를 따라 움직여 더 낮은 드라우다운 위험을 가지고 있으며 구현하기가 쉽습니다. 우리는 주기 매개 변수를 조정하여 최적화 할 수 있습니다.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © coinilandBot // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © adolgov // @description // //@version=4 strategy("coiniland copy trading platform", overlay=true) // random entry condition longCondition = crossover(sma(close, 14), sma(close, 28)) if (longCondition) strategy.entry("My Long Entry Id", strategy.long) shortCondition = crossunder(sma(close, 14), sma(close, 28)) if (shortCondition) strategy.entry("My Short Entry Id", strategy.short) moneyToSLPoints(money) => strategy.position_size !=0 ? (money / syminfo.pointvalue / abs(strategy.position_size)) / syminfo.mintick : na p = moneyToSLPoints(input(200, title = "Take Profit $$")) l = moneyToSLPoints(input(100, title = "Stop Loss $$")) strategy.exit("x", profit = p, loss = l) // debug plots for visualize SL & TP levels pointsToPrice(pp) => na(pp) ? na : strategy.position_avg_price + pp * sign(strategy.position_size) * syminfo.mintick pp = plot(pointsToPrice(p), style = plot.style_linebr ) lp = plot(pointsToPrice(-l), style = plot.style_linebr ) avg = plot( strategy.position_avg_price, style = plot.style_linebr ) fill(pp, avg, color = color.green) fill(avg, lp, color = color.red)