Cómo arreglar el código de Pine para que no genere señales de trading.
Estoy programando una estrategia basada en el canal de Donchian en Pine Script para TradingView, todos los canales se están trazando en el gráfico según el código, pero no puedo generar señales de compra, venta, corto y cierre, y el código tampoco muestra ningún error. Cualquier ayuda sería genial.
//@version=5
strategy("Canal de Donchian", overlay=true)
TOPLENGTH = input.int(defval=10, title='Longitud superior', minval=5, maxval=100, step=1)
BOTTOMLENGTH = input.int(defval=10, title='Longitud inferior', minval=5, maxval=100, step=1)
midsellT = input.int(defval=10, title='Venta media T', minval=5, maxval=100, step=1)
midsellB = input.int(defval=10, title='Venta media B', minval=5, maxval=100, step=1)
midcoverT = input.int(defval=10, title='Cobertura media T', minval=5, maxval=100, step=1)
midcoverB = input.int(defval=10, title='Cobertura media B', minval=5, maxval=100, step=1)
hh = ta.highest(high, TOPLENGTH)
ll = ta.lowest(low, BOTTOMLENGTH)
hhB = ta.highest(high, midsellT)
llB = ta.lowest(low, midsellB)
hhL = ta.highest(high, midcoverT)
llL = ta.lowest(low, midcoverB)
Top = plot(hh, 'Banda superior', color = color.green)
Bottom = plot(ll, 'Banda inferior', color = color.red)
midB = (hhB + llB) / 2
midL = (hhL + llL) / 2
midPlotB = plot(midB, 'BasisB', color = color.black)
midPlotS = plot(midL, 'BasisL', color = color.blue)
buy = ta.crossover(high, hh)
sell = ta.crossunder(low, midB)
short = ta.crossunder(low, ll)
cover = ta.crossover(high, midL)
plotshape(buy, style=shape.labelup, location=location.belowbar, color=color.green, title="Compra", textcolor=color.black, text="Compra")
plotshape(short, style=shape.labeldown, location=location.abovebar, color=color.red, title="Corto", textcolor=color.blue, text="Corto")
strategy.entry('Entrada larga', strategy.long, when=buy)
strategy.close('Entrada larga', when=sell)
strategy.entry('Entrada corta', strategy.short, when=short)
strategy.close('Entrada corta', when=cover)
davy.ai
Parece que el código para el Canal Donchian está funcionando correctamente y todos los canales se están trazando en el gráfico. Sin embargo, el problema está en la generación de señales de compra, venta, corto y cierre.
Al examinar el código, parece que las señales se generan correctamente utilizando las funciones
ta.crossover
yta.crossunder
. Sin embargo, las señales no se están ejecutando porque no se están pasando correctamente a las funcionesstrategy.entry
ystrategy.close
.Para solucionar esto, asegúrese de que la condición de la señal se esté pasando al parámetro
when
de las funcionesstrategy.entry
ystrategy.close
.Por ejemplo, la estrategia de “entrada larga” debe activarse cuando se cumpla la condición de “compra”, por lo que el parámetro
when
para la funciónstrategy.entry
debe serwhen=buy
.De manera similar, la estrategia de “entrada corta” debe activarse cuando se cumple la condición de “venta corta”, por lo que el parámetro
when
para la funciónstrategy.entry
debe serwhen=short
.Asegúrese de hacer lo mismo para las funciones
strategy.close
, pasando la condición correspondiente para la señal que debe cerrarse.Una vez que esto esté hecho, la estrategia debería generar las señales de compra, venta, corto y cierre como se esperaba.
¡Espero que esto ayude!