동적 이동 평균 리트레이싱 마틴 전략은 이동 평균 크로스오버와 풀백 신호를 결합하여 입출 신호를 생성하는 빈번한 거래 전략이다. 이 전략은 단기 트렌드를 포착하기 위해 3 일 및 8 일 간 간단한 이동 평균의 크로스오버와 분리를 사용하여 단기 트렌드를 포착하고 위험을 제어하기 위해 스톱을 채택하고 이익을 취합니다. 이 전략은 다른 시장 조건에 따라 거래 방향을 선택할 수 있습니다.
이 전략은 3일 및 8일 간단한 이동 평균과 그 크로스오버 신호를 사용합니다. 3일 MA가 8일 MA보다 높을 때 긴 신호가 생성되며, 3일 MA가 8일 MA보다 낮을 때 짧은 신호가 생성됩니다. 긴 신호는 긴 진입을 유발하고 짧은 신호는 짧은 진입을 유발합니다.
포지션이 없다면, 전략은 크로스오버 신호를 기반으로 엔트리를 결정합니다. 엔트리 후, 스톱 로스 가격과 이윤을 취하는 가격은 최신 클로즈 가격, 스톱 로스 비율 및 이윤을 취하는 비율을 기반으로 계산됩니다. 예를 들어, 긴 포지션을 보유 할 때, 스톱 로스 가격은 최신 클로즈 가격 인하 스톱 로스 비율을 8 일 MA로 곱한 것입니다. 이윤을 취하는 가격은 최신 클로즈 가격 인더 스톱 로프 비율을 8 일 MA로 곱한 것입니다.
기존의 긴 포지션이 있다면, 가격이 수익을 취하거나 손실을 멈추게 할 때, 8 일 MA의 pullback 신호가 발생하면 포지션은 닫힐 것입니다. 이 시점에서, 손실 중지 가격과 수익을 취하는 가격은 0으로 재설정됩니다. 짧은 포지션을 처리하는 논리는 비슷합니다.
이 전략은 또한 차트에서 입구와 출구 지점을 그래프화합니다. 예를 들어, 긴 입구는 상향 삼각형으로 그리고 긴 출구는 하향 삼각형으로 그래프화됩니다. 이것은 입구와 출구를 시각적으로 판단하는 데 도움이됩니다.
이 전략의 장점은 다음과 같습니다.
이 전략의 주요 위험은 다음과 같습니다.
위험은 정지 손실 비율을 합리적으로 확대하고 MA 매개 변수를 최적화하고 추가 필터 조건을 도입함으로써 감소 할 수 있습니다. 또한 개인 관용을 올바르게 평가하고 과잉 거래를 피하는 것이 중요합니다.
이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.
동적 이동 평균 리트레이싱 마틴 전략은 단기 거래 전략이다. 이동 평균 크로스오버로 형성된 단기 트렌드를 포착하고 적절한 스톱과 수익을 취함으로써 위험을 관리한다. 빈번한 거래 특성으로 인해 수익 기회뿐만 아니라 위험이 발생한다. 매개 변수를 최적화하고 신호를 필터링하고 위험을 제어함으로써이 전략을 더욱 향상시킬 수 있다.
/*backtest start: 2022-11-17 00:00:00 end: 2023-11-23 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // ____ __ ___ ________ ___________ ___________ __ ____ ___ // / __ )/ / / | / ____/ //_/ ____/ |/_ __< / // / / __ |__ \ // / __ / / / /| |/ / / ,< / / / /| | / / / / // /_/ / / __/ / // / /_/ / /___/ ___ / /___/ /| / /___/ ___ |/ / / /__ __/ /_/ / __/ // /_____/_____/_/ |_\____/_/ |_\____/_/ |_/_/ /_/ /_/ \____/____/ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © blackcat1402 //@version=5 strategy('[blackcat] L1 MartinGale Scalping Strategy', overlay=true, pyramiding = 5) // Define input variables takeProfit = input(1.03, title='Take Profit') stopLoss = input(0.95, title='Stop Loss') inputTradingMode = input.string(defval='Long', options=['Long', 'Short', 'BiDir'], title='Trading Mode') //The purpose of this rule is to forbid short entries, only long etries will be placed. The rule affects the following function: 'entry'. strategy.risk.allow_entry_in(inputTradingMode == 'Long' ? strategy.direction.long : inputTradingMode == 'Short' ? strategy.direction.short : strategy.direction.all) // Define strategy logic entryPrice = 0.0 stopPrice = 0.0 takeProfitPrice = 0.0 stopLossPrice = 0.0 // Define SMA crossover and crossunder signals sma3 = ta.sma(close, 3) sma8 = ta.sma(close, 8) plot(sma3, color=color.yellow) plot(sma8, color=color.fuchsia) crossoverSignal = ta.crossover(sma3, sma8) crossunderSignal = ta.crossunder(sma3, sma8) crossoverState = sma3 > sma8 crossunderState = sma3 < sma8 if strategy.position_size == 0 if crossoverState strategy.entry('Buy', strategy.long) entryPrice := close stopPrice := close - stopLoss * sma8[1] takeProfitPrice := close + takeProfit * sma8[1] stopLossPrice := stopPrice stopLossPrice if crossunderState strategy.entry('Sell', strategy.short) entryPrice := close stopPrice := close + stopLoss * sma8[1] takeProfitPrice := close - takeProfit * sma8[1] stopLossPrice := stopPrice stopLossPrice if strategy.position_size > 0 if (close > takeProfitPrice or close < stopLossPrice) and crossunderState strategy.close('Buy') entryPrice := 0.0 stopPrice := 0.0 takeProfitPrice := 0.0 stopLossPrice := 0.0 stopLossPrice else strategy.entry('Buy', strategy.long) entryPrice := close stopPrice := close - stopLoss * sma8[1] takeProfitPrice := close + takeProfit * sma8[1] stopLossPrice := stopPrice stopLossPrice if strategy.position_size < 0 if (close > takeProfitPrice or close < stopLossPrice) and crossoverState strategy.close('Sell') entryPrice := 0.0 stopPrice := 0.0 takeProfitPrice := 0.0 stopLossPrice := 0.0 stopLossPrice else strategy.entry('Sell', strategy.short) entryPrice := close stopPrice := close + stopLoss * sma8[1] takeProfitPrice := close - takeProfit * sma8[1] stopLossPrice := stopPrice stopLossPrice // Plot entry and exit points plotshape(strategy.position_size > 0 and crossoverSignal, 'Buy Entry', shape.triangleup, location.belowbar, color.new(color.green, 0), size=size.small) plotshape(strategy.position_size > 0 and (close >= takeProfitPrice or close <= stopLossPrice), 'Buy Exit', shape.triangledown, location.abovebar, color.new(color.red, 0), size=size.small) plotshape(strategy.position_size < 0 and crossunderSignal, 'Sell Entry', shape.triangledown, location.abovebar, color.new(color.red, 0), size=size.small) plotshape(strategy.position_size < 0 and (close >= takeProfitPrice or close <= stopLossPrice), 'Sell Exit', shape.triangleup, location.belowbar, color.new(color.green, 0), size=size.small)