Diese Strategie verwendet Pivotpunkte (PivotHigh und PivotLow), um Swing-Hoch- und Tiefpunkte im Preis zu identifizieren und zieht auf der Grundlage dieser Punkte Aufwärts- und Abwärtstrendlinien. Die Neigung der Trendlinien wird mit Methoden wie ATR (Average True Range), Standardabweichung oder lineare Regression berechnet und dann durch einen Neigungsfaktor angepasst.
Diese Strategie nutzt Drehpunkte und Trendlinie Neigungen, um ein Echtzeit-Trendlinie-Trading-System zu konstruieren. Durch die Erfassung von Trendline-Breakout-Ereignissen kann die Strategie in den frühen Stadien der Trendbildung handeln. Obwohl die Strategie bestimmte Vorteile hat, ist es immer noch notwendig, sich ihrer Risiken in unruhigen Märkten bewusst zu sein und die Robustheit und Rentabilität der Strategie weiter zu verbessern, indem mehr Informationen eingeführt werden, die Signalfilterung, das Positionsmanagement und andere Methoden optimiert werden.
/*backtest start: 2023-04-20 00:00:00 end: 2024-04-25 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(" only Ajay ", overlay=true) //------------------------------------------------------------------------------ //Settings //------------------------------------------------------------------------------{ length = input.int(14, 'Swing Detection Lookback') mult = 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 upper = 0. var lower = 0. var slope_ph = 0. var slope_pl = 0. var offset = backpaint ? length : 0 n = bar_index src = close ph = ta.pivothigh(length, length) pl = ta.pivotlow(length, length) //Slope Calculation Method slope = switch calcMethod 'Atr' => ta.atr(length) / length * mult 'Stdev' => ta.stdev(src,length) / length * mult 'Linreg' => math.abs(ta.sma(src * n, length) - ta.sma(src, length) * ta.sma(n, length)) / ta.variance(n, length) / 2 * mult //Get slopes and calculate trendlines slope_ph := ph ? slope : slope_ph slope_pl := pl ? slope : slope_pl upper := ph ? ph : upper - slope_ph lower := pl ? pl : lower + slope_pl var upos = 0 var dnos = 0 upos := ph ? 0 : close > upper - slope_ph * length ? 1 : upos dnos := pl ? 0 : close < lower + slope_pl * length ? 1 : dnos //------------------------------------------------------------------------------} //Extended Lines //------------------------------------------------------------------------------{ // var uptl = line.new(na,na,na,na, color = upCss, style = line.style_dashed, extend = extend.right) // var dntl = line.new(na,na,na,na, color = dnCss, style = line.style_dashed, extend = extend.right) // if ph and showExt // uptl.set_xy1(n-offset, backpaint ? ph : upper - slope_ph * length) // uptl.set_xy2(n-offset+1, backpaint ? ph - slope : upper - slope_ph * (length+1)) // if pl and showExt // dntl.set_xy1(n-offset, backpaint ? pl : lower + slope_pl * length) // dntl.set_xy2(n-offset+1, backpaint ? pl + slope : lower + slope_pl * (length+1)) //------------------------------------------------------------------------------} //Plots //------------------------------------------------------------------------------{ plot(backpaint ? upper : upper - slope_ph * length, 'Upper', color = ph ? na : upCss, offset = -offset) plot(backpaint ? lower : lower + slope_pl * length, 'Lower', color = pl ? na : dnCss, offset = -offset) //Breakouts upBreakout = upos > upos[1] dnBreakout = dnos > dnos[1] if (upBreakout) strategy.entry("Up Breakout", strategy.long) if (dnBreakout) strategy.entry("Down Breakout", strategy.short) //------------------------------------------------------------------------------} //Alerts //------------------------------------------------------------------------------{ alertcondition(upos > upos[1], 'Upward Breakout', 'Price broke the down-trendline upward') alertcondition(dnos > dnos[1], 'Downward Breakout', 'Price broke the up-trendline downward') //------------------------------------------------------------------------------}