Die Kuberan-Strategie ist eine leistungsstarke Handelsstrategie, die von Kathir entwickelt wurde. Sie kombiniert mehrere analytische Techniken, um einen einzigartigen und starken Handelsansatz zu bilden.
Kuberan ist mehr als nur eine Strategie; es ist ein umfassendes Handelssystem. Es integriert Trendanalyse, Schwungindikatoren und Volumenmetriken, um Handelsmöglichkeiten mit hoher Wahrscheinlichkeit zu identifizieren.
Der Kern der Kuberan-Strategie ist das Prinzip des Zusammenflusses von mehreren Indikatoren. Sie nutzt eine einzigartige Kombination von Indikatoren, die in Harmonie arbeiten, um Lärm und falsche Signale zu reduzieren.
Durch die umfassende Berücksichtigung dieser Faktoren kann sich die Kuberan-Strategie an verschiedene Marktbedingungen anpassen und Handelschancen mit hoher Wahrscheinlichkeit nutzen.
Um diese Risiken zu mindern, können geeignete Kontrollmaßnahmen wie regelmäßige Anpassungen der Parameter, die Festlegung angemessener Stop-Losses, die Moderation des Leverages und die Überwachung grundlegender Veränderungen durchgeführt werden.
Kuberan ist eine leistungsfähige und zuverlässige Handelsstrategie, die auf geniale Weise mehrere technische Analysemethoden kombiniert. Durch das Prinzip der Indikatorenverschmelzung zeichnet sie sich durch die Erfassung von Trends und die Identifizierung von Wendepunkten aus. Während keine Strategie gegen Risiken immun ist, hat Kuberan seine Robustheit beim Backtesting bewiesen. Mit geeigneten Risikokontrollmaßnahmen und Optimierungsbemühungen kann diese Strategie Händlern helfen, im Marktkampf einen Vorteil zu erzielen und langfristiges, stetiges Wachstum ihres Anlageportfolios voranzutreiben.
/*backtest start: 2024-03-14 00:00:00 end: 2024-03-21 00:00:00 period: 5m 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/ // © LonesomeThecolor.blue // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © LonesomeThecolor.blue //@version=5 strategy('Kuberan*', overlay=true, max_lines_count=500) lb = input.int(5, title='Left Bars', minval=1) rb = input.int(5, title='Right Bars', minval=1) showsupres = input.bool(false, title='Support/Resistance', inline='srcol') supcol = input.color(color.lime, title='', inline='srcol') rescol = input.color(color.red, title='', inline='srcol') // srlinestyle = input(line.style_dotted, title='Line Style/Width', inline='style') srlinewidth = input.int(3, title='', minval=1, maxval=5, inline='style') changebarcol = input.bool(true, title='Change Bar Color', inline='bcol') bcolup = input.color(color.blue, title='', inline='bcol') bcoldn = input.color(color.black, title='', inline='bcol') ph = ta.pivothigh(lb, rb) pl = ta.pivotlow(lb, rb) iff_1 = pl ? -1 : na // Trend direction hl = ph ? 1 : iff_1 iff_2 = pl ? pl : na // similar to zigzag but may have multTLiple highs/lows zz = ph ? ph : iff_2 valuewhen_1 = ta.valuewhen(hl, hl, 1) valuewhen_2 = ta.valuewhen(zz, zz, 1) zz := pl and hl == -1 and valuewhen_1 == -1 and pl > valuewhen_2 ? na : zz valuewhen_3 = ta.valuewhen(hl, hl, 1) valuewhen_4 = ta.valuewhen(zz, zz, 1) zz := ph and hl == 1 and valuewhen_3 == 1 and ph < valuewhen_4 ? na : zz valuewhen_5 = ta.valuewhen(hl, hl, 1) valuewhen_6 = ta.valuewhen(zz, zz, 1) hl := hl == -1 and valuewhen_5 == 1 and zz > valuewhen_6 ? na : hl valuewhen_7 = ta.valuewhen(hl, hl, 1) valuewhen_8 = ta.valuewhen(zz, zz, 1) hl := hl == 1 and valuewhen_7 == -1 and zz < valuewhen_8 ? na : hl zz := na(hl) ? na : zz findprevious() => // finds previous three points (b, c, d, e) ehl = hl == 1 ? -1 : 1 loc1 = 0.0 loc2 = 0.0 loc3 = 0.0 loc4 = 0.0 xx = 0 for x = 1 to 1000 by 1 if hl[x] == ehl and not na(zz[x]) loc1 := zz[x] xx := x + 1 break ehl := hl for x = xx to 1000 by 1 if hl[x] == ehl and not na(zz[x]) loc2 := zz[x] xx := x + 1 break ehl := hl == 1 ? -1 : 1 for x = xx to 1000 by 1 if hl[x] == ehl and not na(zz[x]) loc3 := zz[x] xx := x + 1 break ehl := hl for x = xx to 1000 by 1 if hl[x] == ehl and not na(zz[x]) loc4 := zz[x] break [loc1, loc2, loc3, loc4] float a = na float b = na float c = na float d = na float e = na if not na(hl) [loc1, loc2, loc3, loc4] = findprevious() a := zz b := loc1 c := loc2 d := loc3 e := loc4 e _hh = zz and a > b and a > c and c > b and c > d _ll = zz and a < b and a < c and c < b and c < d _hl = zz and (a >= c and b > c and b > d and d > c and d > e or a < b and a > c and b < d) _lh = zz and (a <= c and b < c and b < d and d < c and d < e or a > b and a < c and b > d) plotshape(_hl, title='Higher Low', style=shape.labelup, color=color.new(color.lime, 0), textcolor=color.new(color.black, 0), location=location.belowbar, offset=-rb) plotshape(_hh, title='Higher High', style=shape.labeldown, color=color.new(color.lime, 0), textcolor=color.new(color.black, 0), location=location.abovebar, offset=-rb) plotshape(_ll, title='Lower Low', style=shape.labelup, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), location=location.belowbar, offset=-rb) plotshape(_lh, title='Lower High', style=shape.labeldown, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), location=location.abovebar, offset=-rb) float res = na float sup = na res := _lh ? zz : res[1] sup := _hl ? zz : sup[1] int trend = na iff_3 = close < sup ? -1 : nz(trend[1]) trend := close > res ? 1 : iff_3 res := trend == 1 and _hh or trend == -1 and _lh ? zz : res sup := trend == 1 and _hl or trend == -1 and _ll ? zz : sup rechange = res != res[1] suchange = sup != sup[1] var line resline = na var line supline = na if showsupres if rechange line.set_x2(resline, bar_index) line.set_extend(resline, extend=extend.none) resline := line.new(x1=bar_index - rb, y1=res, x2=bar_index, y2=res, color=rescol, extend=extend.right, style=line.style_dotted, width=srlinewidth) resline if suchange line.set_x2(supline, bar_index) line.set_extend(supline, extend=extend.none) supline := line.new(x1=bar_index - rb, y1=sup, x2=bar_index, y2=sup, color=supcol, extend=extend.right, style=line.style_dotted, width=srlinewidth) supline iff_4 = trend == 1 ? bcolup : bcoldn barcolor(color=changebarcol ? iff_4 : na) // Inputs A1 = input(5, title='Key Value. \'This changes the sensitivity\' for sell1') C1 = input(400, title='ATR Period for sell1') A2 = input(6, title='Key Value. \'This changes the sensitivity\' for buy2') C2 = input(1, title='ATR Period for buy2') h = input(false, title='Signals from Heikin Ashi Candles') xATR1 = ta.atr(C1) xATR2 = ta.atr(C2) nLoss1 = A1 * xATR1 nLoss2 = A2 * xATR2 src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=barmerge.lookahead_off) : close xATRTrailingStop1 = 0.0 iff_5 = src > nz(xATRTrailingStop1[1], 0) ? src - nLoss1 : src + nLoss1 iff_6 = src < nz(xATRTrailingStop1[1], 0) and src[1] < nz(xATRTrailingStop1[1], 0) ? math.min(nz(xATRTrailingStop1[1]), src + nLoss1) : iff_5 xATRTrailingStop1 := src > nz(xATRTrailingStop1[1], 0) and src[1] > nz(xATRTrailingStop1[1], 0) ? math.max(nz(xATRTrailingStop1[1]), src - nLoss1) : iff_6 xATRTrailingStop2 = 0.0 iff_7 = src > nz(xATRTrailingStop2[1], 0) ? src - nLoss2 : src + nLoss2 iff_8 = src < nz(xATRTrailingStop2[1], 0) and src[1] < nz(xATRTrailingStop2[1], 0) ? math.min(nz(xATRTrailingStop2[1]), src + nLoss2) : iff_7 xATRTrailingStop2 := src > nz(xATRTrailingStop2[1], 0) and src[1] > nz(xATRTrailingStop2[1], 0) ? math.max(nz(xATRTrailingStop2[1]), src - nLoss2) : iff_8 pos1 = 0 iff_9 = src[1] > nz(xATRTrailingStop1[1], 0) and src < nz(xATRTrailingStop1[1], 0) ? -1 : nz(pos1[1], 0) pos1 := src[1] < nz(xATRTrailingStop1[1], 0) and src > nz(xATRTrailingStop1[1], 0) ? 1 : iff_9 pos2 = 0 iff_10 = src[1] > nz(xATRTrailingStop2[1], 0) and src < nz(xATRTrailingStop2[1], 0) ? -1 : nz(pos2[1], 0) pos2 := src[1] < nz(xATRTrailingStop2[1], 0) and src > nz(xATRTrailingStop2[1], 0) ? 1 : iff_10 xcolor1 = pos1 == -1 ? color.red : pos1 == 1 ? color.green : color.blue xcolor2 = pos2 == -1 ? color.red : pos2 == 1 ? color.green : color.blue ema1 = ta.ema(src, 1) ema2 = ta.ema(src, 1) above1 = ta.crossover(ema1, xATRTrailingStop1) below1 = ta.crossover(xATRTrailingStop1, ema1) above2 = ta.crossover(ema2, xATRTrailingStop2) below2 = ta.crossover(xATRTrailingStop2, ema2) buy1 = src > xATRTrailingStop1 and above1 sell1 = src < xATRTrailingStop1 and below1 buy2 = src > xATRTrailingStop2 and above2 sell2 = src < xATRTrailingStop2 and below2 barbuy1 = src > xATRTrailingStop1 barsell1 = src < xATRTrailingStop1 barbuy2 = src > xATRTrailingStop2 barsell2 = src < xATRTrailingStop2 // plotshape(buy1, title="Buy 1", text='Buy 1', style=shape.labelup, location=location.belowbar, color=color.green, textcolor=color.white, transp=0, size=size.tiny) plotshape(sell1, title='Sell 1', text='Sell 1', style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny) plotshape(buy2, title='Buy 2', text='Buy 2', style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), textcolor=color.new(color.white, 0), size=size.tiny) // plotshape(sell2, title="Sell 2", text='Sell 2', style=shape.labeldown, location=location.abovebar, color=color.red, textcolor=color.white, transp=0, size=size.tiny) // barcolor(barbuy1 ? color.green : na) barcolor(barsell1 ? color.red : na) barcolor(barbuy2 ? color.green : na) // barcolor(barsell2 ? color.red : na) // alertcondition(buy1, "UT Long 1", "UT Long 1") alertcondition(sell1, 'UT Short 1', 'UT Short 1') alertcondition(buy2, 'UT Long 2', 'UT Long 2') // strategy.entry('long', strategy.long, when=buy2) source = close length = input.int(20, minval=1) mult = input.float(2.0, minval=0.001, maxval=50) basis = ta.sma(source, length) dev = mult * ta.stdev(source, length) upper = basis + dev lower = basis - dev buyEntry = ta.crossover(source, lower) sellEntry = ta.crossunder(source, upper) if (ta.crossover(source, lower) ) strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", comment="BBandLE") else strategy.cancel(id="BBandLE") if (ta.crossunder(source, upper)) strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands",comment="BBandSE") else strategy.cancel(id="BBandSE") //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr) lengthTL = input.int(14, 'Swing Detection Lookback') multTL = input.float(1., 'Slope', minval = 0, step = .1) calcMethod = input.string('Atr', 'Slope Calculation Method', options = ['Atr','Stdev','Linreg']) backpaint = input(true, tooltip = 'Backpainting offset displayed elements in the past. Disable backpainting to see real time information returned by the indicator.') //Style upCss = input.color(color.teal, 'Up Trendline Color', group = 'Style') dnCss = input.color(color.red, 'Down Trendline Color', group = 'Style') showExt = input(true, 'Show Extended Lines') //-----------------------------------------------------------------------------} //Calculations //-----------------------------------------------------------------------------{ var upperTL = 0. var lowerTL = 0. var slope_phTL = 0. var slope_plTL = 0. var offset = backpaint ? lengthTL : 0 n = bar_index srcTL = close phTL = ta.pivothigh(lengthTL, lengthTL) plTL = ta.pivotlow(lengthTL, lengthTL) //Slope Calculation Method slope = switch calcMethod 'Atr' => ta.atr(lengthTL) / lengthTL * multTL 'Stdev' => ta.stdev(srcTL,lengthTL) / lengthTL * multTL 'Linreg' => math.abs(ta.sma(srcTL * n, lengthTL) - ta.sma(srcTL, lengthTL) * ta.sma(n, lengthTL)) / ta.variance(n, lengthTL) / 2 * multTL //Get slopes and calculate trendlines slope_phTL := phTL ? slope : slope_phTL slope_plTL := plTL ? slope : slope_plTL upperTL := phTL ? phTL : upperTL - slope_phTL lowerTL := pl ? pl : lowerTL + slope_plTL var upos = 0 var dnos = 0 upos := phTL ? 0 : close > upperTL - slope_phTL * lengthTL ? 1 : upos dnos := pl ? 0 : close < lowerTL + slope_plTL * lengthTL ? 1 : dnos