이중 하위 반전 평균 반전 DCA 그리드 전략은 주로 평균 반전 가격과 DCA 전략을 적용하여 점진적 위치 구축을 구현합니다. 이중 하위 반전 패턴에 기반하여 반전 기회를 결정합니다. 반전 패턴이 활성화되면 점진적 그리드 포지션을 설정하기 위해 DCA와 결합하여 다양한 가격에서 여러 가지 제한 명령을 사용합니다.
이 전략은 먼저 촛불 차트에서 아래쪽과 같은 두 개의 연속적인 종료 가격이 있는지 확인하고, 이는
특히, 최근 14개의 촛불 상의 ATR 지표는 먼저 ta.atr를 통해 얻는다. 그 다음 최근 5개의 촛불 상의 가격 변동성을 계산한다. 이들은 그리드 영역을 결정하는데 사용되는 주요 매개 변수이다. 그리드에는 4개의 가격 레벨이 포함되어 있다 - 최하위 가격 + 변동성, 최하위 가격 + 0.75 * 변동성 등. 이중 최하위 조건이 트리거되면 이 공식에 따라 동일한 크기의 4개의 제한 오더가 배치될 것이다. 채우지 않은 오더는 여러 개의 촛불 후에 취소될 것이다.
또한, 전략은 또한 스톱 로스 가격과 이윤을 취하는 가격을 설정합니다. 스톱 로스 가격은 이중 바닥 마이너스 한 틱 사이즈의 가장 낮은 가격으로 설정되며, 이윤을 취하는 가격은 입상 가격과 ATR의 5배로 설정됩니다. 이 두 가격은 포지션 크기가 0보다 크면 실시간으로 업데이트됩니다.
이 전략의 주요 장점은 다음과 같습니다.
주요 위험:
개선 할 수있는 몇 가지 영역:
이중 하위 반전 평균 반전 DCA 그리드 전략은 가격 패턴, 지표 기술 및 그리드 거래를 통합합니다. 정확한 타이밍, 제어 가능한 비용 기반 및 드라우다운 보호가 있습니다. 여전히 최적화 할 여지가 있으며 조사 할 가치가 있습니다. 올바르게 구성되면 범위 제한 시장에서 좋은 결과를 얻을 수 있습니다.
/*backtest start: 2024-02-12 00:00:00 end: 2024-02-19 00:00:00 period: 3m basePeriod: 1m 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/ // © cherepanovvsb //@version=5 strategy("Reversal (only long)", overlay=true, margin_long=1, margin_short=1,initial_capital=1000,commission_type = strategy.commission.percent,commission_value =0.1,currency='USD', process_orders_on_close=true) plotshape(low == low[1], style=shape.triangleup, location=location.belowbar, color=color.blue, title="1 Setup") plotshape(low == low[1] and low[1]==low[2], style=shape.triangleup, location=location.belowbar, color=color.red, title="Triple Setup") ATRlenght = input.int(title="ATR length for taking profit", defval=14, group="Strategy Settings") rewardMultiplier= input.int(title="ATR multiplier", defval=5, group="Strategy Settings") Volatility_length=input.int(title='Volatility length',defval=5,group="Strategy Settings") Volatility_multiplier=input.float(title='Volatility multiplier',defval=0.5,step=0.1, group="Strategy Settings") Candles_to_wait=input.int(title='How many candles to wait after placing orders grid?',defval=4,group="Strategy Settings") // Get ATR atr1 = ta.atr(ATRlenght) //Get volatility values (not ATR) float result = 0 for i = 0 to Volatility_length result+=high[i]-low[i] volatility=result*Volatility_multiplier/Volatility_length //Validate entrance points validlow = low [2]== low[1] and not na(atr1) validlong = validlow and strategy.position_size == 0 and low[1]<low // Calculate SL/TP longStopPrice = low[1]-syminfo.mintick longStopDistance = close - longStopPrice longTargetPrice = close + (longStopDistance * rewardMultiplier) strategy.initial_capital = 50000 //Assign all variables var tradeStopPrice = 0.0 var tradeTargetPrice = 0.0 var point1=0.0 var point2=0.0 var point3=0.0 var point4=0.0 var contracts = int(strategy.initial_capital/close)/4 if validlong tradeStopPrice := longStopPrice tradeTargetPrice := longTargetPrice point1:=low[1]+volatility point2:=low[1]+volatility*0.75 point3:=low[1]+volatility*0.5 point4:=low[1]+volatility*0.25 strategy.entry ("Long1", strategy.long,limit=point1,qty=contracts, when=validlong) strategy.entry ("Long2", strategy.long,limit=point2,qty=contracts, when=validlong) strategy.entry ("Long3", strategy.long,limit=point3,qty=contracts, when=validlong) strategy.entry ("Long4", strategy.long,limit=point4,qty=contracts, when=validlong) stopcondition = ta.barssince(validlong) == Candles_to_wait strategy.cancel("Long1",when=stopcondition) strategy.cancel("Long2",when=stopcondition) strategy.cancel("Long3",when=stopcondition) strategy.cancel("Long4",when=stopcondition) strategy.exit(id="Long Exit", limit=tradeTargetPrice, stop=tradeStopPrice, when=strategy.position_size > 0) plot(strategy.position_size != 0 or validlong ? tradeStopPrice : na, title="Trade Stop Price", color=color.red, style=plot.style_linebr, linewidth=3) plot(strategy.position_size != 0 or validlong ? tradeTargetPrice : na, title="Trade Target Price", color=color.green, style=plot.style_linebr, linewidth=3) plot(strategy.position_size != 0? point1 : na, title="Long1", color=color.green, style=plot.style_linebr, transp=0) plot(strategy.position_size != 0? point2 : na, title="Long2", color=color.green, style=plot.style_linebr, transp=0) plot(strategy.position_size != 0? point3 : na, title="Long3", color=color.green, style=plot.style_linebr, transp=0) plot(strategy.position_size != 0? point4 : na, title="Long4", color=color.green, style=plot.style_linebr, transp=0)