Curso Gratuito - Trading IA

Tipos de script en EasyLanguage y modularización del código

enormi
enormi 183 puntos
editado 27 de mayo en Plataformas

Hola, estoy teniendo bastantes problemas para entender cómo se trabaja con Easylanguage. El lenguaje es parecido a pinescript pero me costó menos entender cómo trabajar en tradingview.

El tema es que cuando estoy haciendo un indicador muy extenso porque voy integrando diferentes partes, me voy perdiendo y se me hace muy complicado ir buscando en el código los errores, corregirlos, mostrarlos, depurarlos….. Además si luego tienes que hacer alguna modificación también se hace más complicado que si por ejemplo tuviera el indicador dividido en partes y cada parte fuera más pequeña.

En Easylanguage tenemos varias opciones a la hora de crear código:

  • indicador
  • showme
  • paintbar
  • activitybar
  • probabilitymap
  • Strategy

Mi pregunta es cómo es la forma más correcta de crear nuestros indicadores, porque puede que tenga partes en el indicador que sean para mostrar en pantalla (showme) y para entregar valores(indicador)o para operar (strategy).

¿Se pueden hacer indicadores pequeños y luego llamarlos desde la estrategia?

A ver si me podéis orientar un poco con cómo lo hacéis vosotros y cómo pensáis que es la mejor manera.

Gracias

Comentarios

  • Luismi
    Luismi 214 puntos

    Indicador y showme es parecido.

    El algoritmo lo tienes que hacer en la Strategy

    Se puden hacer funciones y esas si las puedes llamar luego desde cualquier sitio(yo lo descubri tarde asi que casi no lo he utilizado)

    Y en el strategy no puedes usar cosas como plot

    Asi que si, al principio es un poco lio.

    Si estas empezando por ponerte cosas para verlas en el grafico que te indiquen cosas ,pues hazlo en un showme o indicador, luego si te hace falta en la strategy, pues copiar y pegar

    Si hablar de clases y objetos y cosas asi te suena a algo, manuel es un crack esn eso, em algun post me daba consejos sobre eso,si no sabes de lo que hablo , pues obvia estas palabras ,porque tampoco es que hagan falta.

    Vete haciendo preguntas concretas y vamos viendo(yo no soy muy ortodoxo en esto,pero hare lo que pueda😀)

  • enormi
    enormi 183 puntos

    En eso estamos, entonces entiendo que lo ideal es hacer un indicador o showme con todo lo que quieras representar en el gráfico y en el strategy sólo lo relativo a operativa. Dos indicadores para lo mismo, pero cada uno para lo suyo😅.

  • Luismi
    Luismi 214 puntos

    En el strategy vas a tener que ir poniendo todo, por ejemplo te haces un shome con el POC, y le representas, pero en el strategy tienes que tener lo que es el POC igual

    un ejemplo de funcion

    //Funcion para saber si estamos en sesion operativa o no

    inputs:
    sesion_on(NUMERIC), sesion_off(NUMERIC);

    Sesion = (Time >= sesion_on) and (Time <= sesion_off);

    // salida luego en cualquier indicador o Strategy es algo asi —- Sesion(1531,1730);

    Ya te digo que yo no llegue a tiempo de hacer muchas funciones,porque ya tenia el algoritmo avanzado, pero puede ser interesante porque lo puedes llamar desde varios sitios sin escribir tanto codigo, pero tambien pasa que luego cualquier cambio en esa funcion, afecta a todos los algoritmos donde la hayas llamado

  • enormi
    enormi 183 puntos
    editado 24 de mayo

    Muchas gracias por tu aporte Luismi, es muy interesante y cuando me deslíe pienso meterle mano, ya que pienso que estando bien estructurado, puede simplificar y facilitar mucho mi trabajo.

    Comparto por aquí el hilo al que creo que te referías que hablabas con Manuel sobre el lenguaje de programación orientado a objetos.

    Sigo con lo del código de Easylanguage para que veáis los problemas que estoy teniendo, que son tonterías cuando los has resuelto, pero un quebradero de cabeza hasta que ves lo que es. Un ejemplo que acabo de resolver.

    Tengo el Scanner 1 con unos filtros a partir de unas comparaciones lógicas sencillas en pinescript que uso para saber cuándo estoy alcista o cuándo estoy bajista

    if SwitchSc1 and FiltroSc1 == 1
        if RcortoSc1 < RAlcistaSc1
            FiltroAlcista:=true
        if RcortoSc1 > RBajistaSc1
            FiltroBajista:=true
    

    Ese fragmento en pinescript funciona perfectamente. Ahora lo traduzco a EasyLanguage de la siguiente manera:

    If SwitchSc1 and FiltroSc1 = 1 Then Begin
    If RCortoSc1 < RAlcista Then FiltroAlcista = True;
    If RCortoSc1 > RBajista Then FiltroBajista = True;
    End;

    Y resulta que el código no da ningún error pero no hay manera de que funcione, ahora me pongo a pintar variables y depurar y no hay manera hasta que después de muchas pruebas y tiempo "perdido" se me ocurre poner el Else.

    If SwitchSc1 and FiltroSc1 = 1 Then Begin
    If RCortoSc1 < RAlcista Then FiltroAlcista = True
    Else FiltroAlcista = False;
    If RCortoSc1 > RBajista Then FiltroBajista = True
    Else FiltroBajista = False;
    End;

    Y ahora sí funciona. Claro, yo a la hora de programarsigo pensando como en pinescript, pero resulta que en EasyLanguage funciona diferente. Son pequeñísimos detalles que te hacen avanzar muy lentamente y la curva de aprendizaje del nuevo lenguaje (teniendo en cuenta que no somos tampoco expertos en el otro lenguaje ni somos programadores) pues necesita su tiempo.

    Digamos que ya tengo el Scanner 1 programado la base en los dos leguajes y mi prisa por tenerlo en EasyLanguage era por poder extraer ya datos y empezar a trastear también con las redes neuronales, que también he empezado con los ejercicios. Esto de estar en varias plataformas y lenguajes es un poco lío pero tiene todo el sentido prepararse para lo que pueda venir.

    Seguimos adelante.

  • luis
    luis 412 puntos

    Cada uno tiene su utilidad:

    • Indicador por ejemplo te crea el típico indicador como rsi que se muestra bajo el gráfico.
    • Showme dibuja sobre el gráfico

    Algo parecido al overlay=true/false de pinescript.

    • Strategy te crea el robot pero no dibuja nada.

    En mi caso tengo el mismo código con diferente final en showme para que dibuje y en strategy para que opere.

    El scanner debe ser indicator que devuelva un número.

    Para modularizar puedes utilizar funciones:

  • enormi
    enormi 183 puntos

    Sí, más o menos lo entendía pero claro, hay que aprender ahora a usarlo. El tema de las funciones está muy bien para tener el código ordenado, ahorrar líneas y reutilizar código, pero para los no programadores tiene su curva de aprendizaje también.

    El indicador, el showme…. los tengo funcionando más o menos, a falta de detalles, sin embargo el strategy estoy teniendo muchos problemas para que haga lo que quiero, pero no sólo por el código, también por no saber usar la plataforma bien. Muchas opciones y muy poco intuitiva para mi gusto, pero es normal porque es muy potente.

    Bueno, que seguimos dando batalla.

  • josemoreno
    josemoreno 0 puntos
    editado 28 de agosto

    enormi como vas con el aprendizaje ?

  • enormi
    enormi 183 puntos

    Bueno, el verano no me ha dado mucho margen, ahora tengo que ponerme de nuevo y sacarlo adelante.