Esta é uma estratégia que toma decisões de negociação com base em três indicadores SuperTrend sobrepostos.
A estratégia usa a função ta.supertrend() para calcular três indicadores de SuperTrend com configurações de parâmetros diferentes, a saber, SuperTrend1 com 10 dias e um multiplicador de 3, SuperTrend2 com 14 dias e um multiplicador de 2 e SuperTrend3 com 20 dias e um multiplicador de 2.5. Um sinal de compra é gerado quando o preço cruza acima de todas as três linhas SuperTrend. Um sinal de venda é gerado quando o preço cruza abaixo de todas as três linhas SuperTrend.
O indicador SuperTrend incorpora o indicador ATR para rastrear efetivamente as mudanças de tendência de preços.
Para reduzir os riscos, podem ser consideradas as seguintes medidas:
Esta estratégia toma decisões com base em três SuperTrends sobrepostas, que podem identificar efetivamente a direção da tendência. Tem vantagens como alta qualidade de sinal e parâmetros configuráveis. Ao mesmo tempo, também há certos riscos. Parâmetros e tempo de saída precisam ser ajustados para se adaptar a diferentes ambientes de mercado.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('Combined Supertrend Strategy - Ajit Prasad', overlay=true) // Function to calculate Supertrend supertrendFunc(atrLength, factor) => [supertrend, direction] = ta.supertrend(factor, atrLength) [supertrend, direction] // Input parameters for the first Supertrend atrPeriod1 = input(10, 'ATR Length 1') factor1 = input(3, 'Factor 1') // Calculate the first Supertrend [supertrend1, direction1] = supertrendFunc(atrPeriod1, factor1) // Input parameters for the second Supertrend atrPeriod2 = input(14, 'ATR Length 2') // Change values as needed factor2 = input(2, 'Factor 2') // Change values as needed // Calculate the second Supertrend [supertrend2, direction2] = supertrendFunc(atrPeriod2, factor2) // Input parameters for the third Supertrend atrPeriod3 = input(20, 'ATR Length 3') // Change values as needed factor3 = input(2.5, 'Factor 3') // Change values as needed // Calculate the third Supertrend [supertrend3, direction3] = supertrendFunc(atrPeriod3, factor3) // Define market opening and closing times marketOpenHour = 9 marketOpenMinute = 15 marketCloseHour = 15 marketCloseMinute = 30 exitTimeHour = 15 exitTimeMinute = 10 // Fetch historical close values using security function histClose = request.security(syminfo.tickerid, "D", close) // Buy condition buyCondition = close > supertrend1 and close > supertrend2 and close > supertrend3 and close[1] <= supertrend1[1] // Sell condition sellCondition = close < supertrend1 and close < supertrend2 and close < supertrend3 and close[1] >= supertrend1[1] // Exit conditions buyExitCondition = close < supertrend1[1] or close < supertrend2[1] or close < supertrend3[1] sellExitCondition = close > supertrend1[1] or close > supertrend2[1] or close > supertrend3[1] // Execute orders with market timing if true // Buy condition without 'and not' strategy.entry('Buy', strategy.long, when = buyCondition) // Sell condition without 'and not' strategy.entry('Sell', strategy.short, when = sellCondition) // Close conditions strategy.close('Buy', when = buyExitCondition ) strategy.close('Sell', when = sellExitCondition) // Close all trades at 3:10 pm IST if true strategy.close_all() // Plot Supertrends plot(supertrend1, 'Supertrend 1', color=color.new(color.green, 0), style=plot.style_linebr) plot(supertrend2, 'Supertrend 2', color=color.new(color.red, 0), style=plot.style_linebr) plot(supertrend3, 'Supertrend 3', color=color.new(color.blue, 0), style=plot.style_linebr) // Plot labels plotshape(buyCondition, style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), size=size.large, text='Buy Signal', textcolor=color.new(color.white, 0)) plotshape(sellCondition, style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), size=size.large, text='Sell Signal', textcolor=color.new(color.white, 0))