Página 1 de 1

NECESITO AYUDA CON ESTE SCRIPT PERSONALIZADO

Publicado: 08 Nov 2024 23:11
por BIT.PROx14
Buenas tardes gente, estoy diseñando un script que combina dos indicadores ya existentes en Tradingwiev y la ejecución de las condiciones que les asigno de acuerdo a mi estrategia personal. Les comparto el código y les pido que me ayuden a detectar errores y resolverlos, ya que no soy muy avanzado en el tema y no puedo corregir los errores que me informa el Pine.V5

Este es el código que aún no se puede vincular al gráfico:

//@version=5
indicator("Estrategia Personalizada Opciones Binarias", overlay=true)

rsiLength = input.int(14, title="Longitud RSI")
botLength = input.int(4, title="Longitud BOT")
upperBand = input.float(70, title="Banda superior RSI")
lowerBand = input.float(30, title="Banda inferior RSI")
exp1 = input.int(180, title="Expiración Colocación 1")
exp2 = input.int(300, title="Expiración Colocación 2")
fondoInicial = input.float(100, title="Fondo Inicial")
gananciaDiaria = input.float(3.68, title="Ganancia Diaria")
perdidaDiaria = input.float(10, title="Pérdida Diaria")

rsi = ta.rsi(close, rsiLength)
ma = ta.sma(close, botLength)
cci = ta.cci(close, botLength)
ema = ta.ema(cci, botLength/2)
th = 33.33*(botLength/2)

condicionCompra1 = rsi <= lowerBand and ta.crossover(cci, -th) and ta.crossover(cci, ema)
condicionCompra2 = condicionCompra1[1] and ta.crossover(cci, -th) and ta.crossover(cci, ema)

valorColocacion(fondo) => fondo < 100 ? 1.0 : fondo * 0.01

var float posicionActual = na
var float gananciaDia = 0.0
var float perdidaDia = 0.0

if condicionCompra1
posicionActual := 1
alert("Colocación 1 iniciada")

if posicionActual == 1
if close > close[exp1]
posicionActual := 2
gananciaDia := gananciaDia + valorColocacion(fondoInicial)
alert("Colocación 1 ganada")
else if close[exp1] < close
posicionActual := 2
perdidaDia := perdidaDia + valorColocacion(fondoInicial)
alert("Colocación 1 perdida")

if condicionCompra2 and posicionActual == 2
posicionActual := 3
alert("Colocación 2 iniciada")

if posicionActual == 3
if close > close[exp2]
posicionActual := 0
gananciaDia := gananciaDia + valorColocacion(fondoInicial) * 2
alert("Colocación 2 ganada")
else if close[exp2] < close
posicionActual := 0
perdidaDia := perdidaDia + valorColocacion(fondoInicial) * 2
alert("Colocación 2 perdida")

if gananciaDia >= (fondoInicial * 0.0368) or perdidaDia <= -(fondoInicial * 0.1)
alert("Finalizar día")
posicionActual := 0

Y ESTAS SON LOS PARÁMETROS Y CONFIGURACIONES DE LOS DOS INDICADORES COMO DESEO QUE TRABAJEN JUNTO A MI ESTRATEGIA Y LAS CONDICIONES QUE COMPARTO LUEGO:

LOS PARÁMETROS DE CADA INDICADOR:

RELATIVE STRENGTH INDEX:
RSI SETTINGS
RSI Length: 14
Source: Close
¿Calculate Divergence?: Yes
MOVING AVERAGE
Type: SMA
Length: 14
BBStdDev: 2
CALCULATION
Timeframe: Chart
¿Wait for timeframe closes?: Yes

BINARY OPTIONS TREND:
Length: 4
Source: Close
LeftBars: 4
RightBars: 2

3) LAS CONDICIONES PARA LAS SEÑALES DE COMPRA

COLOCACIÓN N°1:
- Relative Strength Index: Igual o menor al nivel 30
- Ocurrencia de la segunda señal de compra consecutiva del Binary Options Trend desde que el Relative Strength Index tocó el nivel 30
-Colocar instantáneamente cuando se produzca la segunda señal de compra del Binary Options Trend
- Expiración: 180 segundos
- Valor de la colocación: 1,00 dólares para fondo inferior a 100,00 dólares
- Valor de la colocación: 1,00% del fondo para fondo igual o superior a 100,00 dólares
- Condiciones después del cierre de la colocación N°1:
Si resulta perdida continuar cuando se cumplan las condiciones de la colocación N°2
Si resulta ganada continuar cuando se vuelvan a cumplir las condiciones para la Colocación N°1

COLOCACIÓN N°2:

- Si la colocación N°1 cierra en pérdida
- Expiración: 300 segundos
- Valor de la colocación: 2,00 dólares para fondo inferior a 100,00 dólares
Valor de la colocación: 2,00% del fondo para fondo igual o superior a 100,00 dólares
- Condiciones después del cierre de la colocación N°2:
Si resulta perdida continuar cuando se vuelvan a cumplir las condiciones de la colocación N°1
Si resulta ganada continuar cuando se vuelvan a cumplir las condiciones para la Colocación N°1
- Condiciones para suspender todas las operaciones y finalizar el día:
Si las ganancias del día alcanzan los 3,68 dólares para un fondo inicial del día inferior a 100,00 dólares
Si las ganancias del día alcanzan el 3,68% del fondo para un fondo inicial del día igual o superior a 100,00 dólares
Si las pérdidas del día alcanzan los -10,00 dólares para un fondo inicial del día igual o inferior a 100,00 dólares
Si las pérdidas del día alcanzan el -10,00% del fondo para un fondo inicial del día igual o superior a 100,00 dólares

LA OTRA ALTERNATIVA QUE PODRÍA SER, ES SI ALGUNO DE USTEDES VISUALIZA UNA MEJOR MANERA DE EXPREZAR TODO EL PROYECTO EN UN NUEVO CÓDIGO.

Desde ya muchas gracias y saludos para todos.

Re: NECESITO AYUDA CON ESTE SCRIPT PERSONALIZADO

Publicado: 10 Nov 2024 01:39
por gu5tavo71
Hola

Tu codigo no compila
Tiene errores de indexado, porque está mal posteado
Por favor, edita el post
Imagen

Re: NECESITO AYUDA CON ESTE SCRIPT PERSONALIZADO

Publicado: 10 Nov 2024 01:41
por gu5tavo71
No veo ningun plot o plotshape
Trabajas solo con las alertas? A ciegas?

Re: NECESITO AYUDA CON ESTE SCRIPT PERSONALIZADO

Publicado: 10 Nov 2024 15:28
por BIT.PROx14
gu5tavo71 escribió: 10 Nov 2024 01:39 Hola

Tu codigo no compila
Tiene errores de indexado, porque está mal posteado
Por favor, edita el post
Imagen
Hola gu5tavo71, ¿En que parte del código está mal posteado?. Con el tema de los Plots o Plotshape se me pasó de integrarlos, los integro al código y lo vuelvo a postear cuando me corrijas en que parte está mal posteado. Muchas gracias y buen fin de semana.

Re: NECESITO AYUDA CON ESTE SCRIPT PERSONALIZADO

Publicado: 10 Nov 2024 16:13
por BIT.PROx14

Código: Seleccionar todo

//@version=5
indicator("Estrategia Personalizada Opciones Binarias", overlay=true)

rsiLength = input.int(14, title="Longitud RSI")
botLength = input.int(4, title="Longitud BOT")
upperBand = input.float(70, title="Banda superior RSI")
lowerBand = input.float(30, title="Banda inferior RSI")
exp1 = input.int(180, title="Expiración Colocación 1")
exp2 = input.int(300, title="Expiración Colocación 2")
fondoInicial = input.float(100, title="Fondo Inicial")
gananciaDiaria = input.float(3.68, title="Ganancia Diaria")
perdidaDiaria = input.float(10, title="Pérdida Diaria")

rsi = ta.rsi(close, rsiLength)
ma = ta.sma(close, botLength)
cci = ta.cci(close, botLength)
ema = ta.ema(cci, botLength/2)
th = 33.33*(botLength/2)

condicionCompra1 = rsi <= lowerBand and ta.crossover(cci, -th) and ta.crossover(cci, ema)
condicionCompra2 = condicionCompra1[1] and ta.crossover(cci, -th) and ta.crossover(cci, ema)

valorColocacion(fondo) => fondo < 100 ? 1.0 : fondo * 0.01

var float posicionActual = na
var float gananciaDia = 0.0
var float perdidaDia = 0.0

if condicionCompra1
posicionActual := 1
alert("Colocación 1 iniciada")

if posicionActual == 1
if close > close[exp1]
posicionActual := 2
gananciaDia := gananciaDia + valorColocacion(fondoInicial)
alert("Colocación 1 ganada")
else if close[exp1] < close
posicionActual := 2
perdidaDia := perdidaDia + valorColocacion(fondoInicial)
alert("Colocación 1 perdida")

if condicionCompra2 and posicionActual == 2
posicionActual := 3
alert("Colocación 2 iniciada")

if posicionActual == 3
if close > close[exp2]
posicionActual := 0
gananciaDia := gananciaDia + valorColocacion(fondoInicial) * 2
alert("Colocación 2 ganada")
else if close[exp2] < close
posicionActual := 0
perdidaDia := perdidaDia + valorColocacion(fondoInicial) * 2
alert("Colocación 2 perdida")

if gananciaDia >= (fondoInicial * 0.0368) or perdidaDia <= -(fondoInicial * 0.1)
alert("Finalizar día")
posicionActual := 0

plotshape(condicionCompra1, location=location.belowbar, color=color.green, style=shape.labelup, text="Compra 1")
plotshape(condicionCompra2, location=location.belowbar, color=color.green, style=shape.labelup, text="Compra 2")

plotshape(posicionActual == 1 and close > close[exp1], location=location.abovebar, color=color.green, style=shape.labeldown, text="Ganada 1")
plotshape(posicionActual == 1 and close[exp1] < close, location=location.belowbar, color=color.red, style=shape.labelup, text="Perdida 1")

plotshape(posicionActual == 3 and close > close[exp2], location=location.abovebar, color=color.green, style=shape.labeldown, text="Ganada 2")
plotshape(posicionActual == 3 and close[exp2] < close, location=location.belowbar, color=color.red, style=shape.labelup, text="Perdida 2")

plotshape(gananciaDia >= (fondoInicial * 0.0368) or perdidaDia <= -(fondoInicial * 0.1), location=location.belowbar, color=color.yellow, style=shape.labelup, text="Finalizar día")
```

Re: NECESITO AYUDA CON ESTE SCRIPT PERSONALIZADO

Publicado: 10 Nov 2024 16:15
por BIT.PROx14
gu5tavo71 escribió: 10 Nov 2024 01:41 No veo ningun plot o plotshape
Trabajas solo con las alertas? A ciegas?
Listo, ahí volví a postear el código correctamente y le agregué los plotshape que me había olvidado. Saludos y gracias.

Re: NECESITO AYUDA CON ESTE SCRIPT PERSONALIZADO

Publicado: 10 Nov 2024 17:24
por X-Trader
Gu5tavo71 se refiere a que el código que has subido no está correctamente indentando (ie, al pegarlo le has quitado las tabulaciones de precedencia), pero nada como pasarlo por una IA para que quede todo colocadito ;)

Código: Seleccionar todo

//@version=5
indicator("Estrategia Personalizada Opciones Binarias", overlay=true)

// Inputs
rsiLength = input.int(14, title="Longitud RSI")
botLength = input.int(4, title="Longitud BOT")
upperBand = input.float(70, title="Banda superior RSI")
lowerBand = input.float(30, title="Banda inferior RSI")
exp1 = input.int(180, title="Expiración Colocación 1")
exp2 = input.int(300, title="Expiración Colocación 2")
fondoInicial = input.float(100, title="Fondo Inicial")
gananciaDiaria = input.float(3.68, title="Ganancia Diaria")
perdidaDiaria = input.float(10, title="Pérdida Diaria")

// Indicadores técnicos
rsi = ta.rsi(close, rsiLength)
ma = ta.sma(close, botLength)
cci = ta.cci(close, botLength)
ema = ta.ema(cci, botLength/2)
th = 33.33*(botLength/2)

// Condiciones de compra
condicionCompra1 = rsi <= lowerBand and ta.crossover(cci, -th) and ta.crossover(cci, ema)
condicionCompra2 = condicionCompra1[1] and ta.crossover(cci, -th) and ta.crossover(cci, ema)

// Función para calcular valor de colocación
valorColocacion(fondo) =>
    fondo < 100 ? 1.0 : fondo * 0.01

// Variables de seguimiento
var float posicionActual = na
var float gananciaDia = 0.0
var float perdidaDia = 0.0

// Lógica de trading
if condicionCompra1
    posicionActual := 1
    alert("Colocación 1 iniciada")

if posicionActual == 1
    if close > close[exp1]
        posicionActual := 2
        gananciaDia := gananciaDia + valorColocacion(fondoInicial)
        alert("Colocación 1 ganada")
    else if close[exp1] < close
        posicionActual := 2
        perdidaDia := perdidaDia + valorColocacion(fondoInicial)
        alert("Colocación 1 perdida")

if condicionCompra2 and posicionActual == 2
    posicionActual := 3
    alert("Colocación 2 iniciada")

if posicionActual == 3
    if close > close[exp2]
        posicionActual := 0
        gananciaDia := gananciaDia + valorColocacion(fondoInicial) * 2
        alert("Colocación 2 ganada")
    else if close[exp2] < close
        posicionActual := 0
        perdidaDia := perdidaDia + valorColocacion(fondoInicial) * 2
        alert("Colocación 2 perdida")

// Verificación de límites diarios
if gananciaDia >= (fondoInicial * 0.0368) or perdidaDia <= -(fondoInicial * 0.1)
    alert("Finalizar día")
    posicionActual := 0

// Visualizaciones
plotshape(condicionCompra1, 
    location=location.belowbar, 
    color=color.green, 
    style=shape.labelup, 
    text="Compra 1")

plotshape(condicionCompra2, 
    location=location.belowbar, 
    color=color.green, 
    style=shape.labelup, 
    text="Compra 2")

plotshape(posicionActual == 1 and close > close[exp1], 
    location=location.abovebar, 
    color=color.green, 
    style=shape.labeldown, 
    text="Ganada 1")

plotshape(posicionActual == 1 and close[exp1] < close, 
    location=location.belowbar, 
    color=color.red, 
    style=shape.labelup, 
    text="Perdida 1")

plotshape(posicionActual == 3 and close > close[exp2], 
    location=location.abovebar, 
    color=color.green, 
    style=shape.labeldown, 
    text="Ganada 2")

plotshape(posicionActual == 3 and close[exp2] < close, 
    location=location.belowbar, 
    color=color.red, 
    style=shape.labelup, 
    text="Perdida 2")

plotshape(gananciaDia >= (fondoInicial * 0.0368) or perdidaDia <= -(fondoInicial * 0.1), 
    location=location.belowbar, 
    color=color.yellow, 
    style=shape.labelup, 
    text="Finalizar día")


Saludos,
X-Trader

Re: NECESITO AYUDA CON ESTE SCRIPT PERSONALIZADO

Publicado: 10 Nov 2024 19:19
por BIT.PROx14
X-Trader escribió: 10 Nov 2024 17:24 Gu5tavo71 se refiere a que el código que has subido no está correctamente indentando (ie, al pegarlo le has quitado las tabulaciones de precedencia), pero nada como pasarlo por una IA para que quede todo colocadito ;)

Código: Seleccionar todo

//@version=5
indicator("Estrategia Personalizada Opciones Binarias", overlay=true)

// Inputs
rsiLength = input.int(14, title="Longitud RSI")
botLength = input.int(4, title="Longitud BOT")
upperBand = input.float(70, title="Banda superior RSI")
lowerBand = input.float(30, title="Banda inferior RSI")
exp1 = input.int(180, title="Expiración Colocación 1")
exp2 = input.int(300, title="Expiración Colocación 2")
fondoInicial = input.float(100, title="Fondo Inicial")
gananciaDiaria = input.float(3.68, title="Ganancia Diaria")
perdidaDiaria = input.float(10, title="Pérdida Diaria")

// Indicadores técnicos
rsi = ta.rsi(close, rsiLength)
ma = ta.sma(close, botLength)
cci = ta.cci(close, botLength)
ema = ta.ema(cci, botLength/2)
th = 33.33*(botLength/2)

// Condiciones de compra
condicionCompra1 = rsi <= lowerBand and ta.crossover(cci, -th) and ta.crossover(cci, ema)
condicionCompra2 = condicionCompra1[1] and ta.crossover(cci, -th) and ta.crossover(cci, ema)

// Función para calcular valor de colocación
valorColocacion(fondo) =>
    fondo < 100 ? 1.0 : fondo * 0.01

// Variables de seguimiento
var float posicionActual = na
var float gananciaDia = 0.0
var float perdidaDia = 0.0

// Lógica de trading
if condicionCompra1
    posicionActual := 1
    alert("Colocación 1 iniciada")

if posicionActual == 1
    if close > close[exp1]
        posicionActual := 2
        gananciaDia := gananciaDia + valorColocacion(fondoInicial)
        alert("Colocación 1 ganada")
    else if close[exp1] < close
        posicionActual := 2
        perdidaDia := perdidaDia + valorColocacion(fondoInicial)
        alert("Colocación 1 perdida")

if condicionCompra2 and posicionActual == 2
    posicionActual := 3
    alert("Colocación 2 iniciada")

if posicionActual == 3
    if close > close[exp2]
        posicionActual := 0
        gananciaDia := gananciaDia + valorColocacion(fondoInicial) * 2
        alert("Colocación 2 ganada")
    else if close[exp2] < close
        posicionActual := 0
        perdidaDia := perdidaDia + valorColocacion(fondoInicial) * 2
        alert("Colocación 2 perdida")

// Verificación de límites diarios
if gananciaDia >= (fondoInicial * 0.0368) or perdidaDia <= -(fondoInicial * 0.1)
    alert("Finalizar día")
    posicionActual := 0

// Visualizaciones
plotshape(condicionCompra1, 
    location=location.belowbar, 
    color=color.green, 
    style=shape.labelup, 
    text="Compra 1")

plotshape(condicionCompra2, 
    location=location.belowbar, 
    color=color.green, 
    style=shape.labelup, 
    text="Compra 2")

plotshape(posicionActual == 1 and close > close[exp1], 
    location=location.abovebar, 
    color=color.green, 
    style=shape.labeldown, 
    text="Ganada 1")

plotshape(posicionActual == 1 and close[exp1] < close, 
    location=location.belowbar, 
    color=color.red, 
    style=shape.labelup, 
    text="Perdida 1")

plotshape(posicionActual == 3 and close > close[exp2], 
    location=location.abovebar, 
    color=color.green, 
    style=shape.labeldown, 
    text="Ganada 2")

plotshape(posicionActual == 3 and close[exp2] < close, 
    location=location.belowbar, 
    color=color.red, 
    style=shape.labelup, 
    text="Perdida 2")

plotshape(gananciaDia >= (fondoInicial * 0.0368) or perdidaDia <= -(fondoInicial * 0.1), 
    location=location.belowbar, 
    color=color.yellow, 
    style=shape.labelup, 
    text="Finalizar día")


Saludos,
X-Trader
Hola X-Trader, jaja que novato que soy aún!! Dale seguiré tu consejo de ayudarme con la IA, aunque la IA tiene sus chiripiolcas de vez en cuando ajaj. Saludos y buen finde! Gracias!

Re: NECESITO AYUDA CON ESTE SCRIPT PERSONALIZADO

Publicado: 11 Nov 2024 14:03
por gu5tavo71
Como dije en otro post (y en otras comunidades)
El código generado por IA es inconsistente, tiene errores y no es confiable. La inteligencia artificial es muy útil en muchos aspectos, pero codifica Pinescript de manera muy deficiente (por ahora...)
Imagen

Un ejemplo es que el nuevo codigo que subieron, indexado por la IA, sigue sin compilar.
Ese no es el problema (el posteo ahora se soluciona facil)

Tu codigo tiene "alucinaciones", y habría que hacer todo el script de nuevo. Desde cero.

Re: NECESITO AYUDA CON ESTE SCRIPT PERSONALIZADO

Publicado: 11 Nov 2024 16:33
por X-Trader
Hola chicos,

Lo he repasado y limpiado para que compile, pero como bien apunta gu5tavo71 no parece tener mucho sentido lo que hace. Os dejo por aquí el código arreglado:

Código: Seleccionar todo

//@version=5
indicator("Estrategia Personalizada Opciones Binarias", overlay=true)

// Inputs
rsiLength = input.int(14, title="Longitud RSI")
botLength = input.int(4, title="Longitud BOT")
upperBand = input.float(70, title="Banda superior RSI")
lowerBand = input.float(30, title="Banda inferior RSI")
exp1 = input.int(180, title="Expiración Colocación 1")
exp2 = input.int(300, title="Expiración Colocación 2")
fondoInicial = input.float(100, title="Fondo Inicial")
gananciaDiaria = input.float(3.68, title="Ganancia Diaria")
perdidaDiaria = input.float(10, title="Pérdida Diaria")

// Indicadores técnicos
rsi = ta.rsi(close, rsiLength)
ma = ta.sma(close, botLength)
cci = ta.cci(close, botLength)
ema = ta.ema(cci, botLength/2)
th = 33.33*(botLength/2)

// Condiciones de compra
condicionCompra1 = rsi <= lowerBand and ta.crossover(cci, -th) and ta.crossover(cci, ema)
condicionCompra2 = condicionCompra1[1] and ta.crossover(cci, -th) and ta.crossover(cci, ema)

// Función para calcular valor de colocación
valorColocacion(fondo) =>
    fondo < 100 ? 1.0 : fondo * 0.01

// Variables de seguimiento
var float posicionActual = na
var float gananciaDia = 0.0
var float perdidaDia = 0.0

// Lógica de trading
if condicionCompra1
    posicionActual := 1
    alert("Colocación 1 iniciada")

if posicionActual == 1
    if close > close[exp1]
        posicionActual := 2
        gananciaDia := gananciaDia + valorColocacion(fondoInicial)
        alert("Colocación 1 ganada")
    else if close[exp1] < close
        posicionActual := 2
        perdidaDia := perdidaDia + valorColocacion(fondoInicial)
        alert("Colocación 1 perdida")

if condicionCompra2 and posicionActual == 2
    posicionActual := 3
    alert("Colocación 2 iniciada")

if posicionActual == 3
    if close > close[exp2]
        posicionActual := 0
        gananciaDia := gananciaDia + valorColocacion(fondoInicial) * 2
        alert("Colocación 2 ganada")
    else if close[exp2] < close
        posicionActual := 0
        perdidaDia := perdidaDia + valorColocacion(fondoInicial) * 2
        alert("Colocación 2 perdida")

// Verificación de límites diarios
if gananciaDia >= (fondoInicial * 0.0368) or perdidaDia <= -(fondoInicial * 0.1)
    alert("Finalizar día")
    posicionActual := 0

// Visualizaciones
plotshape(condicionCompra1,location=location.belowbar,color=color.green,style=shape.labelup,text="Compra 1")

plotshape(condicionCompra2,location=location.belowbar,color=color.green,style=shape.labelup,text="Compra 2")
plotshape(posicionActual == 1 and close > close[exp1],location=location.abovebar,color=color.green,style=shape.labeldown,text="Ganada 1")

plotshape(posicionActual == 1 and close[exp1] < close,location=location.belowbar,color=color.red,style=shape.labelup,text="Perdida 1")

plotshape(posicionActual == 3 and close > close[exp2],location=location.abovebar,color=color.green,style=shape.labeldown,text="Ganada 2")

plotshape(posicionActual == 3 and close[exp2] < close,location=location.belowbar,color=color.red,style=shape.labelup,text="Perdida 2")

plotshape(gananciaDia >= (fondoInicial * 0.0368) or perdidaDia <= -(fondoInicial * 0.1), location=location.belowbar, color=color.yellow, style=shape.labelup, text="Finalizar día")


Saludos,
X-Trader

Re: NECESITO AYUDA CON ESTE SCRIPT PERSONALIZADO

Publicado: 11 Nov 2024 22:28
por BIT.PROx14
Muchas gracias a todos por los consejos! Los tendré en cuenta al momento de programar y tener cuidado con la IA. Saludos para todos y buena semana!