Curso Gratuito - Trading IA

TRADESTATION EASYLENGUAGE

13»

Comentarios

  • Luismi
    Luismi 224 puntos
    editado junio 2023
    Ya me parecia a mi que con los if me estaba haciendo algo muy gordo, muchas gracias ire probando


  • Luismi
    Luismi 224 puntos
       Bueno que no se diga que no lo intento, estoy con lo del switch, pero no me  sale . Se supone que defines una variable y cada vela va pasando por cada caso y el que se cumple lo deberia de ejecutar, si no estoy equivocado, y si no se cumple ninguno el default.
       Hasta ahi no tiene mucho misterio, pero algo no debo de poner bien, ahi va :smile:

    Si lo pongo asi no me hace caso a las instrucciones me marca siempre la default
    if  Tendencia_alcista=true and sesion=true then begin
    
    	switch(S_estructura) Begin	
    				
    		case 1:  if high>s_estructura and close<s_estructura then  s_estructura =  high;//una vela que supera la señal pero cierra por debajo
    		
    		case 2:  if s_estructura-POCa > maximo[1]-highest(high,(barnumber-b1b+1)) then s_estructura = maximo[1];// Distancia entrada>maximo -high de la vela señal pasa a ser el maximo
    		
    		default:  S_estructura= giro1b;
    	
    	end;	
    end;
    Si lo pongo asi directamente no me sale nada

    if  Tendencia_alcista=true and sesion=true then begin
    
    	switch(S_estructura) Begin	
    				
    		case s_estructura: if high>s_estructura and close<s_estructura then  s_estructura =  high;//una vela que supera la señal pero cierra por debajo
    		
    		case s_estructura: if s_estructura-POCa > maximo[1]-highest(high,(barnumber-b1b+1)) then s_estructura = maximo[1];// Distancia entrada>maximo -high de la vela señal pasa a ser el maximo
    		
    		default:  S_estructura= giro1b;
    	
    	end;	
    end;
    a ver si me puedes dar una pequeña explicacion, me da que esto no debe ser muy dificil, no se si son los if o la forma de definir los case, o que...

  • Luismi
    Luismi 224 puntos
    editado junio 2023
    Si, si la ayuda ya la lei, por eso y por tu explicacion se lo que se supone que es el switch, pero no consigo que funcione correctamente, asi que se me plantean dudas, a ver si con preguntas concreas y concisas lo solucionamos rapido:

    1.en case hay que poner un numero 1,2... o ese numero tiene que ser algo con significado

    yo si pongo el  nombre de la variable no hace nada, y si pongo 1,2.. se las salta y hace la default

    2.despues de los : del case  esta bien poner na declaracion if o se me ocurre otra manera de hacerlo)


         En el ejemplo tengo una variable(s_estructura) que es la señal dde estructura en este caso para alcista y 2 case , dime si esta bien(que entiendo que no ,porque no funciona) y que esta mal (que me da que es algo sencillo) Las sentencias de los case si las saco del switch si funcionan, asi que entiendo que soy yo que no estoy definiendo bien el switch

    Te estas ganando el cielo conmigo, mucas gracias
  • Manuel
    Manuel 109 puntos
    Hola, la sentencia Switch tienes que interpretarla como:
    Dado un valor para la variable A:
      En caso que A=1: …
      En caso que A>1 y A<3: …
      En caso que A>3: …
      En otro caso: …

    A lo mejor estás pensando en una condición que involucre varias variables y no te sirva una sola sentencia Switch, tengas que combinar varias sentencias Switch con otras if.

    Aquí es donde entra el ingenio de cada programador, el resultado puede ser el mismo, pero la forma de hacerlo es algo que decides tú.

    Intenta simplificar, agrupa código en métodos y crea variables y constantes con nombres bien elegidos.

    Saludos y encantado de ayudare.
  • Luismi
    Luismi 224 puntos
    Ahh,osea que si la variable es estructura, cuando pongo case es como si case es estructura
    Bueno ya probaré y te diré que tal me va

    Que tal llevas la integración de la IA?,te está dando Buenos resultados 
  • Manuel
    Manuel 109 puntos
    Luismi dijo:
    Ahh,osea que si la variable es estructura, cuando pongo case es como si case es estructura
    Bueno ya probaré y te diré que tal me va

    Que tal llevas la integración de la IA?,te está dando Buenos resultados 
    Pues ahora puedo dedicar menos tiempo y he bajado un poco el ritmo.
    Al paso a la IA me he encontrado que elegir las variables no es fácil y por lo tanto al entrenar la red neuronal cuesta obtener buenos resultados.
    Lo tengo todo implementado, pero estoy pensando en los parámetros que debería pasar a la IA y revisando a la vez el resto de conceptos.
  • Luismi
    Luismi 224 puntos
    Una pregunta de posiciones
       Estoy programando las entradas y salidas del algoritmo, y me encuentro por ejemplo que a una entrada le he llamado Estructura y a otra Parada.
       Cuando voy a representarlas uscuando solo tenia 1 usaba 
    if marketposition =1 ó -1 o lo que sea, pero ahora que ya tengo 2 , me gustaria llamarlas por su nombre o como tenga que hacerlo porque los piuntos de stop o take no son los mismos.
    que tengo que hacer?

    y OTRA cosa aprovechando , para las entradas he puesto nc=1 , que es la variable para numero de contratos, de momento la tengo a 1 , pues si pongo 2 no me salen entradas, no se que configuracion o que es pero tampoco doy con ello

     


  • Manuel
    Manuel 109 puntos
    Hola, ¿te refieres a que quieres gestionar dos posiciones abiertas simultáneamente?
    Sobre el número de contratos, para mi también es un poco confuso. Depende del importe que quieras arriesgar y de la distancia del take profit y stop loss (y por supuesto del valor del índice).

    ¿Has visto la ayuda sobre esto? hay algunas cosas que te pueden servir.
  • Luismi
    Luismi 224 puntos
    editado julio 2023
    No ,me refiero que segun voy haciendo el algoritmo a la entrada de estructura le he llamado "estructura_alcista" y a la bajista "Estructura_Bajista", y cuando programo las condiciones empiezo por
    if marketposition=1 
    if marketposition=0 
    pero ahora le añado condiciones para entrada volumen de parada,que la llamo"parada_alcista" y no se como referenciar si es de una u otra entrada en conctreto,(me esta pasando para representar las lineas de entrada, alomejor hay otra forma de representarlas con ordenes mas directas).

    // Señal entrada
    if marketposition<>0 then Begin
    
    	value7= tl_new(d[0],t[1],Entryprice,d,t,Entryprice);
    		Tl_setcolor(value7,white);
    		Tl_setstyle(value7,5);
    end;
    
    //Señales en largo
    
    
    if marketposition>0   then Begin	
    	VALUE8 = tl_new(d[0],t[1],st,d,t[0],st);
    		Tl_setcolor(value8,red);
    		Tl_setstyle(value8,1);
    	VALUE9 = tl_new(d[0],t[1],tp,d,t,tp);
    		Tl_setcolor(value9,green );
    		Tl_setstyle(value9,1);
    	VALUE10 = tl_new(d[0],t[1],Take_PARADA_alcista,d,t,Take_PARADA_alcista);
    		Tl_setcolor(value10,Darkblue );
    		Tl_setstyle(value10,1);
    end;		
    
    //Señales en corto	
    if marketposition<0 then Begin	
    	VALUE8 = tl_new(d[0],t[1],stop_est_bajista,d,t[0],stop_est_bajista);
    		Tl_setcolor(value8,red);
    		Tl_setstyle(value8,1);
    	VALUE9 = tl_new(d[0],t[1],Take_est_bajista,d,t,Take_est_bajista);
    		Tl_setcolor(value9,green );
    		Tl_setstyle(value9,1);
    end;	
    
    		


    Con respecto a lo de los contratos, no he empezado a gestionar posicion, pero si he visto que si pongo 2 conytratos en vez de 1 , no realiza ninguna operacion, y no se porque sera
  • Manuel
    Manuel 109 puntos
    Si no entiendo mal, te basta con tener una variable que indique qué tipo de setup ha dado la entrada que tienes en curso.
    Cuando hagas una entrada pon en una variable qué setup la ha originado.
  • Manuel
    Manuel 109 puntos
    editado julio 2023
    Durante el verano estaré programando, no voy a estar pendiente del mercado, solo depuraré el algoritmo.
    Si quieres envíame un email y para una comunicación más directa, a veces con el foro me pierdo un poco (Por favor, si lo hacemos fuera del foro el resto de miembros no podrán beneficiarse de ello).
  • Luismi
    Luismi 224 puntos
    editado julio 2023
    Cuando hagas una entrada pon en una variable qué setup la ha originado

        Creo que si me va a valer, es que pensaba que alomejor habia alguna instruccion directa de easylenguage , pero de momento probare con la variable ,cuando se dan las condiciones de entrada pues que se active tambien esa variable.

         Ahi te pongo mi mail (Por favor, si lo hacemos fuera del foro el resto de miembros no podrán beneficiarse de ello) ,yo me comprometo actualizar este post si saco enseñanzas de ello , que de hecho para eso cree este post con el nombre TRADESTATION ESAYLENGUAGE porque igual que a mi alguno vendra detras que le cueste la programacion

  • Manuel
    Manuel 109 puntos
    Ok, mira, si te ves con fuerza puedes dar un paso más.
    Quizás no te lo recomiende hasta que no te veas suelto con la plataforma y el lenguaje easylanguage.
    Cuando lanzas una operación, se abre un objeto de la Clase Position.
    Para gestionar estas clases pudes hacerlo mediante una Clase PositionProvider.

    Pues bien, dentro de cada operación (Objeto Position) hay un campo "ExtendedProperties" que es una colección y que puedes usar para guardar cualquier valor que necesites, por ejemplo el setup que origina la entrada.

    Como te digo es algo avanzado y no deberías liarte si todavía no gestionas entradas básicas.

    Si te lanzas a la aventura dímelo y vamos avanzando.
  • Luismi
    Luismi 224 puntos
         Yo con fuerza me veo, lo que veo es que no se , tu esto como lo has aprendido,leyendo la ayuda de Tradestation?, si es asi es porque ya lo hacias parecido en otro lenguaje o plataforma ,porque yo leo la ayuda y lo medioentiendo, pero con las explicaiones y ejemplos son tan basicos que no consigues que funcione ni la primera linea de codigo y son cosas sencillas ,como que hay que llamar primero a la libreria o que hay que iniciar una variable o cosas asi ,pero vamos que por ti solo no arrancas.
        De momento voy a probar con lo de las variables, y si hay cosas que no puedo hacer vamos viendo,porque de momento solo me esta dando guerra para la representacion, y ahora en verano tengo menos tiempo y quiero avanzar el algoritmo aunque sea poco a poco
  • Manuel
    Manuel 109 puntos
    Lo he aprendido con ejemplos que encuentro por Internet, no es que sea como buscar ejemplos en python pero algo encuentras.
    La ayuda es limitada porque no tiene ejemplos completos, así que necesitarás buscar en otras fuentes.

    Hazlo con las variables, intenta que funcione e irás encontrando las limitaciones. Hasta que no encuentres la necesidad de avanzar en la complejidad, no lo hagas.
  • Luismi
    Luismi 224 puntos
    Una pregunta sencilla antes de ponerme a dar vueltas.
      Hay alguna instruccion directa en Tradestation para decirle que cuando has hecho una operacion no haga mas, o hay que hacerlo con una variable tipo contador y que sea esta la que no te deje entrar
  • Manuel
    Manuel 109 puntos
    Si, Marketposition creo que era, indica el número de operaciones abiertas.
  • Luismi
    Luismi 224 puntos
    Si , pero yo digo cuando ya has hecho una , para no hacer mas , cuando se cierra la operacion marketposition=0 y si se dan las condiciones vuelves a entrar
  • Manuel
    Manuel 109 puntos
    Ok, a ver, lo más fácil es que tengas una variable que las cuente.
    Si que puedes, es un poco más complejo pero creo que te podrá venir bien conocer la clase PositionProvider. 
    https://help.tradestation.com/10_00/eng/tsdevhelp/elobject/class/positionsprovider_class.htm
    Usándola podrás gestionar las posiciones en curso y las ya cerradas.
    Yo la usaba para exportar los datos al finalizar una operación.

    Saludos.
  • Luismi
    Luismi 224 puntos
    Muchas gracias, lo echare un ojo, aunque yo creo que lo haga con la variable