이 전략은 여러 가지 기술적 지표를 결합하여 트렌드 방향을 파악하고, 부진이 발생했을 때 모멘텀을 추적하여 초과 수익을 목표로합니다.
전체 트렌드를 결정하기 위해 돈치안 채널을 사용하십시오. 채널의 파업은 트렌드 반전을 확인합니다.
헐 이동 평균은 트렌드 방향을 판단하는 데 도움이 됩니다. 그것은 가격 변화에 민감하며 트렌드 반전을 조기에 감지 할 수 있습니다.
하프트렌드 시스템은 가격 채널과 ATR 범위를 기반으로 구매 및 판매 신호를 생성합니다.
돈치안, 헐, 하프트렌드 신호가 정렬되면 강력한 동력 파업이 확인되고 전략이 시작됩니다.
위의 지표가 트렌드 반전을 나타내는 역 신호를 내면 출구
더 강력한 신호로 여러 가지 지표가 있습니다. 기초를 위한 돈치안, 세부사항을 위한 헐, 하프트렌드.
모멘텀 브레이크로 초과 수익을 추구합니다. 강한 브레이크로만 진입하고 통합에서 윙사 (wipshaw) 를 피합니다.
자본의 안전성을 보장하기 위해 엄격한 스톱 로스, 리버스 신호가 표시되면 손실이 제한됩니다
다양한 시장에 대한 유연한 매개 변수 조정 채널 길이, ATR 범위 등을 조정하고 최적화 할 수 있습니다.
이해하기 쉽고 구현하기 쉽습니다. 표시자 조합은 간단하고 명확하고 코딩하기가 쉽습니다.
초기 트렌드 기회를 놓치고 상대적으로 늦은 진입, 초기 릴리 포착되지 않습니다.
실패한 탈출과 반전으로 인한 손실
신호가 틀렸어 신호가 틀렸어 신호가 틀렸어
거래 빈도는 제한되어 있습니다. 명확한 브레이크오웃만 거래되므로 연간 거래 수가 낮습니다.
테스트를 통해 매개 변수 조합을 최적화합니다. 가장 좋은 매개 변수를 찾으세요.
후속 스톱 손실 조건을 추가합니다. 조기 스톱 손실을 피하십시오.
MACD, KDJ 같은 더 많은 필터를 도입합니다. 나쁜 신호를 필터링하기 위해서요.
다른 세션에 대한 매개 변수를 최적화 합니다. 다른 세션은 별도로 조정할 수 있습니다.
레버리지, DCA 등을 통해 자본 효율을 향상시키고 자본 활용을 개선합니다.
이 전략은 여러 지표를 결합하여 확립된 트렌드의 모멘텀 브레이크오프를 식별하고 트렌드 추적에서 이익을 얻습니다. 엄격한 스톱 로스는 위험을 관리합니다. 유연한 매개 변수는 다른 시장 환경에 적응합니다. 거래 빈도가 낮지만 각 거래는 높은 수익성을 목표로합니다. 매개 변수 조정, 추가 필터 등을 통해 전략을 지속적으로 개선 할 수 있습니다.
/*backtest start: 2023-10-29 00:00:00 end: 2023-11-05 00:00:00 period: 1m 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/ // © kgynofomo // @version=5 strategy(title="[Salavi] | Andy Super Pro Strategy",overlay = true) //Doinchian Trend Ribbon dlen = input.int(defval=30, minval=10) dchannel(len) => float hh = ta.highest(len) float ll = ta.lowest(len) int trend = 0 trend := close > hh[1] ? 1 : close < ll[1] ? -1 : nz(trend[1]) trend dchannelalt(len, maintrend) => float hh = ta.highest(len) float ll = ta.lowest(len) int trend = 0 trend := close > hh[1] ? 1 : close < ll[1] ? -1 : nz(trend[1]) maintrend == 1 ? trend == 1 ? #00FF00ff : #00FF009f : maintrend == -1 ? trend == -1 ? #FF0000ff : #FF00009f : na maintrend = dchannel(dlen) donchian_bull = maintrend==1 donchian_bear = maintrend==-1 //Hulls src = input(hlc3, title='Source') modeSwitch = input.string('Hma', title='Hull Variation', options=['Hma', 'Thma', 'Ehma']) length = input(55, title='Length') lengthMult = input(1.0, title='Length multiplier ') useHtf = false htf = '240' switchColor = true candleCol = false visualSwitch = true thicknesSwitch = 1 transpSwitch = 40 //FUNCTIONS //HMA HMA(_src, _length) => ta.wma(2 * ta.wma(_src, _length / 2) - ta.wma(_src, _length), math.round(math.sqrt(_length))) //EHMA EHMA(_src, _length) => ta.ema(2 * ta.ema(_src, _length / 2) - ta.ema(_src, _length), math.round(math.sqrt(_length))) //THMA THMA(_src, _length) => ta.wma(ta.wma(_src, _length / 3) * 3 - ta.wma(_src, _length / 2) - ta.wma(_src, _length), _length) //SWITCH Mode(modeSwitch, src, len) => modeSwitch == 'Hma' ? HMA(src, len) : modeSwitch == 'Ehma' ? EHMA(src, len) : modeSwitch == 'Thma' ? THMA(src, len / 2) : na //OUT _hull = Mode(modeSwitch, src, int(length * lengthMult)) HULL = useHtf ? request.security(syminfo.ticker, htf, _hull) : _hull MHULL = HULL[0] SHULL = HULL[2] //COLOR hullColor = switchColor ? HULL > HULL[2] ? #00ff00 : #ff0000 : #ff9800 hull_bull = HULL > HULL[2] bull_start = hull_bull and hull_bull[1]==false hull_bear = HULL < HULL[2] bear_start = hull_bear and hull_bear[1]==false barcolor(color=candleCol ? switchColor ? hullColor : na : na) //halftrend amplitude = input(title='Amplitude', defval=2) channelDeviation = input(title='Channel Deviation', defval=2) // showArrows = input(title='Show Arrows', defval=true) // showChannels = input(title='Show Channels', defval=true) var int trend = 0 var int nextTrend = 0 var float maxLowPrice = nz(low[1], low) var float minHighPrice = nz(high[1], high) var float up = 0.0 var float down = 0.0 float atrHigh = 0.0 float atrLow = 0.0 float arrowUp = na float arrowDown = na atr2 = ta.atr(100) / 2 dev = channelDeviation * atr2 highPrice = high[math.abs(ta.highestbars(amplitude))] lowPrice = low[math.abs(ta.lowestbars(amplitude))] highma = ta.sma(high, amplitude) lowma = ta.sma(low, amplitude) if nextTrend == 1 maxLowPrice := math.max(lowPrice, maxLowPrice) if highma < maxLowPrice and close < nz(low[1], low) trend := 1 nextTrend := 0 minHighPrice := highPrice minHighPrice else minHighPrice := math.min(highPrice, minHighPrice) if lowma > minHighPrice and close > nz(high[1], high) trend := 0 nextTrend := 1 maxLowPrice := lowPrice maxLowPrice if trend == 0 if not na(trend[1]) and trend[1] != 0 up := na(down[1]) ? down : down[1] arrowUp := up - atr2 arrowUp else up := na(up[1]) ? maxLowPrice : math.max(maxLowPrice, up[1]) up atrHigh := up + dev atrLow := up - dev atrLow else if not na(trend[1]) and trend[1] != 1 down := na(up[1]) ? up : up[1] arrowDown := down + atr2 arrowDown else down := na(down[1]) ? minHighPrice : math.min(minHighPrice, down[1]) down atrHigh := down + dev atrLow := down - dev atrLow ht = trend == 0 ? up : down var color buyColor = color.blue var color sellColor = color.red htColor = trend == 0 ? buyColor : sellColor // htPlot = plot(ht, title='HalfTrend', linewidth=2, color=htColor) // atrHighPlot = plot(showChannels ? atrHigh : na, title='ATR High', style=plot.style_circles, color=color.new(sellColor, 0)) // atrLowPlot = plot(showChannels ? atrLow : na, title='ATR Low', style=plot.style_circles, color=color.new(buyColor, 0)) // fill(htPlot, atrHighPlot, title='ATR High Ribbon', color=color.new(sellColor, 90)) // fill(htPlot, atrLowPlot, title='ATR Low Ribbon', color=color.new(buyColor, 90)) HalfTrend_buySignal = not na(arrowUp) and trend == 0 and trend[1] == 1 HalfTrend_sellSignal = not na(arrowDown) and trend == 1 and trend[1] == 0 // plotshape(showArrows and buySignal ? atrLow : na, title='Arrow Up', style=shape.triangleup, location=location.absolute, size=size.tiny, color=color.new(buyColor, 0)) // plotshape(showArrows and sellSignal ? atrHigh : na, title='Arrow Down', style=shape.triangledown, location=location.absolute, size=size.tiny, color=color.new(sellColor, 0)) //ema filter_ema = ta.ema(close,200) ema_bull = close>filter_ema ema_bear = close<filter_ema atr_length = input.int(7) atr = ta.atr(atr_length) atr_rsi_length = input.int(50) atr_rsi = ta.rsi(atr,atr_rsi_length) atr_valid = atr_rsi>50 longCondition = bull_start and atr_valid shortCondition = bear_start and atr_valid Exit_long_condition = shortCondition Exit_short_condition = longCondition if longCondition strategy.entry("Andy Buy",strategy.long, limit=close,comment="Andy Buy Here") if Exit_long_condition strategy.close("Andy Buy",comment="Andy Buy Out") // strategy.entry("Andy fandan Short",strategy.short, limit=close,comment="Andy 翻單 short Here") // strategy.close("Andy fandan Buy",comment="Andy short Out") if shortCondition strategy.entry("Andy Short",strategy.short, limit=close,comment="Andy short Here") // strategy.exit("STR","Long",stop=longstoploss) if Exit_short_condition strategy.close("Andy Short",comment="Andy short Out") // strategy.entry("Andy fandan Buy",strategy.long, limit=close,comment="Andy 翻單 Buy Here") // strategy.close("Andy fandan Short",comment="Andy Buy Out") inLongTrade = strategy.position_size > 0 inLongTradecolor = #58D68D notInTrade = strategy.position_size == 0 inShortTrade = strategy.position_size < 0 // bgcolor(color = inLongTrade?color.rgb(76, 175, 79, 70):inShortTrade?color.rgb(255, 82, 82, 70):na) plotshape(close!=0,location = location.bottom,color = inLongTrade?color.green:inShortTrade?color.red:na) plotshape(longCondition, title='Buy', text='Andy Buy', style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), textcolor=color.new(color.white, 0), size=size.tiny) plotshape(shortCondition, title='Sell', text='Andy Sell', style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny) Fi1 = plot(MHULL, title='MHULL', color=hullColor, linewidth=thicknesSwitch, transp=50) Fi2 = plot(SHULL, title='SHULL', color=hullColor, linewidth=thicknesSwitch, transp=50) fill(Fi1, Fi2, title='Band Filler', color=hullColor, transp=transpSwitch)