Limitar una martingala

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #110583 quote
    pruiz61
    Participant
    Junior

    Buenos días,

    Soy nuevo en el foro y en la programación de sistemas de trading, pero creo que estoy aprendiendo rápido, estudiando los códigos de quienes saben más. Estoy haciendo un sistema de martingala “suave”, que entra una vez al día, estrictamente intradiario -timeframe de un minuto-  y en el que he limitado las pérdidas diarias a 34 € (no pips, €). La martingala consiste en que cada vez que pierde, añade uno al positionsize de modo que, despues de perder 24 días consecutivos, por ejemplo, entra con 24 contratos. No me preocupa eso, porque para ese supuesto las pérdidas acumuladas no habrán llegado a 800 €, y el beneficio de la próxima vez que gane lo multiplicará por 2,5 o 3 pero, por razones de distribuir el riesgo y limitar el capital inmovilizado (trabajo con CFD, apalancado un 5%) quisiera que, cuando llegue a 24 por ejemplo, me reduzca la posición a-por ejemplo- 10 y siga sumando. Ya sé que en el prorealorder puedo limitar el número máximo de contratos, pero no quisiera que se pare o se bloquee el sistema, sino controlarlo desde el código.

    ¿Alguna idea? Gracias

    #110611 quote
    Juan Salas
    Participant
    Master

    Hola pruiz61,

    Bienvenido al foro. Yo estoy familiarizado con la Martingala y con todas esas estrategias tan poco “ortodoxas”.

    Yo tengo una formula que te puede solucionar el problema, pero es muy rudimentaria y ocupa sitio, aunque si te soluciona el problema ¿Que son diez minutos más programando??

    // Positioning
    ganada1 = positionperf(1)>0
    perdida1 = positionperf(1)<0
    perdida2 = positionperf(1)<0 and positionperf(2)<0
    perdida3 = positionperf(1)<0 and positionperf(2)<0 and positionperf(3)<0
    perdida4 = positionperf(1)<0 and positionperf(2)<0 and positionperf(3)<0 and positionperf(4)<0
    
    // Y asi seguimos hasta la positionperf(24)..
    
    perdida24 = positionperf(1)<0 and positionperf(2)<0 and positionperf(3)<0 and positionperf(4)<0 and positionperf(5)<0......
    
    ONCE positionsize=1
    
    IF ganada1 THEN
    positionsize=1
    ENDIF
    
    IF perdida1 THEN
    positionsize=1.5
    ENDIF
    
    IF perdida2 THEN
    positionsize=2
    ENDIF
    
    IF perdida3 THEN
    positionsize=3
    ENDIF
    
    IF perdida4 THEN
    positionsize=4
    ENDIF
    
    // Y asi seguimos hasta la operación 24
    
    IF perdida24 THEN
    positionsize=10
    ENDIF

    Es como te digo muy rudimentario, pero te puede servir

    Saludos

    #110654 quote
    pruiz61
    Participant
    Junior

    Gracias Juan,

    Después de escribir mi mensaje encontré la solución que buscaba, con algo tan simple como añadir la condición de que sólo incrementase una posición si no se había alcanzado determinado tamaño, y a partir de ahí quedaba congelada. Pero tu código me sugiere perspectivas más refinadas.

    Un saludo y reitero el agradecimiento

    #150393 quote
    galibier
    Participant
    Average

    Hola Buenas tardes,

    He estado repasando mensajes y veo que usted en su día programaba martingalas, yo estoy intentando programar una entrada en corto con orden de acumulación, y consigo que entre en corto hasta la 5 vela, que es lo que puesto.

    Bien, lo que quiero es entrar con 5 posiciones e ir reduciendo, es decir, primera entrada entro con 5, segunda entrada entro con 4, así sucesivamente.

    No sé si es muy dificil de programar,

    Muchas gracias de antemano

    // Definición de los parámetros del código
    DEFPARAM CumulateOrders = True // Acumulación de posiciones desactivada
    
    // Condiciones de entrada de posiciones cortas
    indicator2, indicator1 = CALL "PRC_Top Bottom Indicator"[14, 14]
    c1 = (indicator1 > indicator2)
    indicator3 = CALL "butter prorealcode"
    indicator4 = CALL "butter prorealcode"
    c2 = (indicator3 < indicator4[1])
    indicator5 = CALL "butter prorealcode"
    indicator6 = ExponentialAverage[14](close)
    c3 = (indicator5 < indicator6)
    
    IF c1 AND c2 AND c3 THEN
    SELLSHORT 1 SHARES AT MARKET
    ENDIF
    
    // Condiciones de salida de posiciones cortas
    indicator7, indicator8 = CALL "PRC_Top Bottom Indicator"[14,14]
    c4 = (indicator7 > indicator8)
    
    IF c4 THEN
    EXITSHORT AT MARKET
    ENDIF
    IF ShortOnMarket AND CountOfShortShares >= 5 THEN
    EXITSHORT AT MARKET
    ENDIF
    
Viewing 4 posts - 1 through 4 (of 4 total)
  • You must be logged in to reply to this topic.

Limitar una martingala


Trading General: Análisis de Mercado y Manual

New Reply
Author
author-avatar
pruiz61 @pruiz61 Participant
Summary

This topic contains 3 replies,
has 3 voices, and was last updated by galibier
5 years, 3 months ago.

Topic Details
Forum: Trading General: Análisis de Mercado y Manual
Language: Spanish
Started: 10/19/2019
Status: Active
Attachments: No files
Logo Logo
Loading...