PipShiesty Swagger est une stratégie de trading technique conçue spécifiquement pour TradingView. La stratégie utilise l'oscillateur WaveTrend (WT) et le prix moyen pondéré par volume (VWAP) pour identifier les signaux commerciaux potentiels, gérer le risque et visualiser les conditions de surachat et de survente sur un graphique de prix. L'oscillateur est calculé à l'aide d'une série de moyennes mobiles exponentielles (EMA) appliquées au prix moyen, ce qui donne un indice composite qui est encore plus lissé.
L'essence de la stratégie PipShiesty Swagger réside dans l'oscillateur de tendance des vagues (WT) et le prix moyen pondéré par volume (VWAP). Le WT utilise deux paramètres principaux, la longueur du canal et la longueur moyenne, pour calculer l'oscillateur en utilisant une série de moyennes mobiles exponentielles (EMA) appliquées au prix moyen.
PipShiesty Swagger est une stratégie de trading technique puissante conçue pour le graphique de 15 minutes de BTC sur TradingView. Elle utilise l'oscillateur de tendance de vague et VWAP pour identifier les signaux de trading potentiels tout en incorporant des paramètres de gestion des risques pour protéger le capital. Bien que la stratégie soit prometteuse, les traders doivent faire preuve de prudence lors de sa mise en œuvre et envisager d'optimiser la stratégie pour améliorer sa performance et son adaptabilité.
/*backtest start: 2023-05-22 00:00:00 end: 2024-05-27 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("PipShiesty Swagger", overlay=true) // WaveTrend Oscillator (WT) n1 = input.int(10, "Channel Length") n2 = input.int(21, "Average Length") obLevel1 = input.float(60.0, "Overbought Level 1") obLevel2 = input.float(53.0, "Overbought Level 2") osLevel1 = input.float(-60.0, "Oversold Level 1") osLevel2 = input.float(-53.0, "Oversold Level 2") ap = hlc3 esa = ta.ema(ap, n1) d = ta.ema(math.abs(ap - esa), n1) ci = (ap - esa) / (0.015 * d) tci = ta.ema(ci, n2) // VWAP vwap = ta.vwma(close, n1) // Signal Line wt1 = tci wt2 = ta.sma(wt1, 4) // Bullish and Bearish Divergences bullishDivergence = (ta.lowest(close, 5) > ta.lowest(close[1], 5)) and (wt1 < wt1[1]) and (close > close[1]) bearishDivergence = (ta.highest(close, 5) < ta.highest(close[1], 5)) and (wt1 > wt1[1]) and (close < close[1]) // Plot WaveTrend Oscillator plot(wt1, title="WT1", color=color.blue) plot(wt2, title="WT2", color=color.red) // Remove printed signals if price reverses var bool showBullishSignal = na var bool showBearishSignal = na if bullishDivergence showBullishSignal := true if bearishDivergence showBearishSignal := true // Reset signals if price reverses if close < ta.lowest(close, 5) showBullishSignal := false if close > ta.highest(close, 5) showBearishSignal := false plotshape(series=showBullishSignal ? bullishDivergence : na, location=location.belowbar, color=color.green, style=shape.labelup, title="Bullish Divergence") plotshape(series=showBearishSignal ? bearishDivergence : na, location=location.abovebar, color=color.red, style=shape.labeldown, title="Bearish Divergence") // Risk Management Parameters riskPercentage = input.float(1, title="Risk Percentage per Trade", minval=0.1, step=0.1) / 100 stopLossATR = input.float(1.5, title="Stop Loss ATR Multiplier", minval=0.5, step=0.1) // ATR Calculation atr = ta.atr(14) // Position Size Calculation calculatePositionSize(stopLoss) => riskAmount = strategy.equity * riskPercentage positionSize = riskAmount / stopLoss // Double the position size positionSize *= 2 positionSize // Entry and Exit Logic with Stop Loss if bullishDivergence stopLoss = low - atr * stopLossATR positionSize = calculatePositionSize(close - stopLoss) strategy.entry("Buy", strategy.long, qty=positionSize) strategy.exit("Sell", from_entry="Buy", stop=stopLoss) if bearishDivergence strategy.close("Buy") // Plot VWAP plot(vwap, title="VWAP", color=color.orange) // Background color to indicate Overbought/Oversold conditions bgcolor(wt1 > obLevel1 ? color.new(color.red, 90) : na, title="Overbought Level 1") bgcolor(wt1 < osLevel1 ? color.new(color.green, 90) : na, title="Oversold Level 1") bgcolor(wt1 > obLevel2 ? color.new(color.red, 70) : na, title="Overbought Level 2") bgcolor(wt1 < osLevel2 ? color.new(color.green, 70) : na, title="Oversold Level 2")