Curso Gratuito - Trading IA

Cerrar posiciones en EasyLanguage

Esta discusión fue creado de los comentarios divididos de: TRADESTATION EASYLENGUAGE.

Comentarios

  • Luismi
    Luismi 224 puntos

    A ver si se os ocurre que me esta pasando

    En el algoritmo cuando doy una orden de compra le pongo que compre— nc Contract next bar at market;

    donde antes he definido nc como variable y de momento es 1( 1 contrato), pues bien si doy a nc otro valor 2 o 5 o el que sea , solo realiza la primera compra y no llega a vender nunca. Con nc =1 hace las operaciones sin problemas

    Y tiene que ser algo del codigo pero no se por donde van los tiros , porque si hago un pequeño algoritmo como este

    var: nc(0),entrada1(0) ;
    nc= 5 ;
    if marketposition =0 and  c>c[1] then buy ("Entrada1") nc Contract next bar at market;
    if marketposition = 1 and c<low[1] then sell from Entry("entrada1") nc Contract next bar at market ;
    

    aqui no me da problemas el numero de contratos en nc

    imagen del problema si pongo 2 contratos

  • luis
    luis 425 puntos

    Para cerrar una operación tenemos la opción de cerrar esta operación y de abrir la posición contraria con la misma cantidad.

    Si teníamos 2 vendidos, compramos dos para cerrar, por ejemplo.

    Por ejemplo, si hemos vendido (Sell), cerramos la posición con un buy por la misma cantidad.

    Con la función MarketPosition podemos saber qué posición tenemos abierta en mercado para saber si podemos cerrar algo y en qué cantidad.

  • Luismi
    Luismi 224 puntos

    Sabia ,que no podia ser muy dificil

    Marketposition te dice 1 si vas largo y -1 si vas corto no el numero de contratos abiertos, ahi tenia el fallo, por eso con un contrato funcionaba y con un numero distinto no

    simplemente cambie if marketposition =-nc then begin por if marketposition <0 then begin

  • luis
    luis 425 puntos
    editado octubre 2023

    Exacto. https://help.tradestation.com/10_00/eng/tsdevhelp/elword/word/marketposition_reserved_word_.htm

    En tu algoritmo, igual que calculas la posición para decirle a la plataforma mediante la orden que sea (buy/sell, etc), el precio de entrada, take… todos estos datos los mantienes de forma que en todo momento controlas cuál debería ser la posición y qué debe tener la plataforma.

    Lo interesante: las órdenes de entrada llevan un ID asociado. Por ejemplo Sell("Mi ID"). Para cerrar esta posición, solo tengo que utilizar la contraria pasándole este identificador y cerrará la posición completa a no ser que le digas lo contrario.

    https://help.tradestation.com/10_00/eng/tsdevhelp/elword/word/sell_reserved_word_.htm

    Un ejemplo

    if condicion_entrada Then Begin
    	Buy ("B") X shares next bar at precio_entrada;
    	End;
    	
    if una_vez_ejecutada_la_entrada Then Begin
    	sell ("B_S1") X shares next bar at precio_stop;
    	sell ("B_S2") X shares next bar at precio_take;
    End;
    

    Siendo X el tamaño de la posición.

    Ya solo quedaría ir moviendo stop conforme sea necesario.

    Para cerrar, hacer la contraria y cancelar "B_S1" y "B_S2"

  • trader89
    trader89 202 puntos

    Tengo entendido que no hay función para cerrar todo o al menos yo no la conozco

    Se hace siempre cerrando todo lo que hay abierto con la orden contraria.

    🇪🇦

  • luis
    luis 425 puntos

    Este post puede resultar interesante y relacionado con este.