이것은 이윤을 잠금하기 위해 ATR 지표에 기반한 동적 스톱 손실과 결합된 돈치안 채널 지표에 기반한 트렌드 다음 전략입니다. 그것은 트렌드 다음 전략 범주에 속합니다.
이 전략은 채널 중간에 가장 높은 높음과 가장 낮은 낮은 평균이 있는 20주기 돈치안 채널을 사용한다. 가격이 채널 중간에 넘어가면 긴 길이가 되고, 가격이 중간에 넘어가면 짧은 길이가 된다. 출구 규칙은 가격이 동적 스톱 로스 라인을 만지면 긴 포지션의 ATR 값의 1/3을 빼고 최근 3 바의 가장 낮은 하위값으로 계산되며, 최근 3 바의 가장 높은 하위값과 짧은 포지션의 ATR 값의 1/3을 더하면 긴 길이가 된다.
이 전략의 주요 장점은 다음과 같습니다.
이 전략의 주요 위험은 다음과 같습니다.
이 전략에 대한 최적화 방향:
요약하자면, 이것은 간단하고 실용적인 트렌드 다음 전략이다. 그것은 돈치안 채널을 통해 트렌드 방향을 식별하고 동적 인 트레일링 스톱 로스로 수익을 잠금합니다. 이는 트렌드를 효과적으로 따라갈 수 있습니다. 이 전략은 사용하기에는 매우 실용적이지만 더 복잡한 시장 환경에서 더 나은 성능을 위해 다양한 방법으로 추가로 최적화 될 수 있습니다.
/*backtest start: 2023-11-29 00:00:00 end: 2023-12-06 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title = "dc", overlay = true) atrLength = input(title="ATR Length:", defval=20, minval=1) testStartYear = input(2017, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testEndYear = input(2018, "Backtest Start Year") testEndMonth = input(12) testEndDay = input(31, "Backtest Start Day") testPeriodEnd = timestamp(testEndYear,testEndMonth,testEndDay,0,0) testPeriod() => true //time >= testPeriodStart ? true : false dcPeriod = input(20, "Period") dcUpper = highest(close, dcPeriod)[1] dcLower = lowest(close, dcPeriod)[1] dcAverage = (dcUpper + dcLower) / 2 atrValue=atr(atrLength) useTakeProfit = na useStopLoss = na useTrailStop = na useTrailOffset = na //@version=1 Buy_stop = lowest(low[1],3) - atr(20)[1] / 3 plot(Buy_stop, color=red, title="buy_stoploss") Sell_stop = highest(high[1],3) + atr(20)[1] / 3 plot(Sell_stop, color=green, title="sell_stoploss") plot(dcLower, style=line, linewidth=3, color=red, offset=1) plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1) plot(dcAverage, color=black, style=line, linewidth=3, title="Mid-Line Average") strategy.entry("simpleBuy", strategy.long, when=(close > dcAverage) and cross(close,dcAverage)) strategy.close("simpleBuy",when= ( close< Buy_stop)) strategy.entry("simpleSell", strategy.short,when=(close < dcAverage) and cross(close,dcAverage) ) strategy.close("simpleSell",when=( close > Sell_stop)) //strategy.exit("Exit simpleBuy", from_entry = "simpleBuy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset) //strategy.exit("Exit simpleSell", from_entry = "simpleSell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)