POSITIONSIZE exponentiel

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #31782 quote
    larouedegann
    Participant
    Master

    Bonjour à tous

    Je viens chercher un petit peu d”aide en programmation pour augmenter la taille des positions de 5 en cas de gain et la diminuer de moitié en cas de perte et ainsi de suite.Avec un maximum de 50 contrats en cas de gain.

    J’ai essayé de reprendre ce qu”avait fait RAUL avec son intraday dax mais cela ne fonctionne pas…..

    J’ai inséré mon essai non concluant….

    Si quelqu’un a une idée  Merci a vous

    DEFPARAM CUMULATEORDERS = FALSE
    DEFPARAM FLATBEFORE = 090000
    DEFPARAM FLATAFTER = 171500
    
    once Ordersize = 1
    N=5
    if Ordersize>50 then
    Ordersize=50
    endif
    
    //Condition 1
    
    //Condition 2
    
    
    IF TIME  > 090000 and Condition 1 and Condition 2 THEN
    IF PositionPerf(1) < 0 THEN
    OrderSize = OrderSize/2//+1
    if ordersize<1 then
    ordersize=1
    ENDIF
    ELSIF PositionPerf(1) > 0 THEN
    OrderSize =OrderSize+1
    endif
    BUY ordersize*n contracts AT MARKET
    
    endif
    
    if TIME > 090000 and Condition 1 and Condition 2 THEN
    IF PositionPerf(1) < 0 THEN
    OrderSize = OrderSize/2//+1
    if ordersize<1 then
    ordersize=1
    ENDIF
    ELSIF PositionPerf(1) > 0 THEN
    OrderSize =OrderSize+1
    endif
    SELLSHORT ordersize*n contracts AT MARKET
    
    ENDIF
    
    SET STOP LOSS 5
    SET TARGET PROFIT 9

    Apparemment le systeme ne prend pas en compte 50 contrats maximum

    #31784 quote
    Francesco78
    Participant
    Master

    Hello, sorry maybe I didn’t understand the problem but maybe you could just use the function “Countofposition”?

    IF  COUNTOFPOSITION  < 50 Then

    …..

     

    END IF

    #31819 quote
    Nicolas
    Keymaster
    Master

    Mon premier avis pour t’aider serait de positionner ta condition limitant la positionsize à 50 avant chaque prise de position, car c’est à ce moment là que tu la détermines par ces instructions:

    ELSIF PositionPerf(1) > 0 THEN
    OrderSize =OrderSize+1

    Sinon, tu peux aussi limiter directement la taille des contrats pour chaque ordre à chaque lancement de trade: (exemple pour un short)

    SELLSHORT MIN(ordersize*n,50) contracts AT MARKET

    Dans ce cas là, l’instruction MIN choisira la valeur minimale entre 50 et ton calcul de lot ‘ordersize*n’. Je pense que ça doit le faire !

    #32063 quote
    larouedegann
    Participant
    Master

    Merci à tous

    Malheureusement, rien ne fonctionne….j”ai tout essayé avec countofposition de franscesco.

    sellshort min de nicolas bloque effectivement à 50 contrats mais ne monte pas en exponentiel les contrats et le diminue encore moins.Pourtant Je pense que la solution n’est pas loin.

    je remets ci-dessous l’autotrading de raul en 5mn dax. En le testant on s’aperçoit que le max 54 ne fonctionne pas.Mon principe exponentiel est basé sur celui-ci.

    est-ce qu’il est faux ?

    Le principe est par contre très bien pensé quel que soit les conditions du bot. Alors merci encore pour votre travail…..

    // Definición de los parámetros del código
    DEFPARAM CumulateOrders = false // Acumulación de posiciones desactivada
    
    // La posición se cierra a las 17:29 p.m. si no toca ni stop ni take.
    DEFPARAM FlatAfter =173000
    
    once ordersize=1
    // No se abren nuevas posiciones después de la vela que se cierra a las 09:06
    HoraEntradaLimite = 090600
    // El análisis de mercado empieza en la vela de 5 minutos que cierra a las 09:05
    HoraInicio = 090500
    
    // Órdenes máximas
    if Ordersize>54 then
    Ordersize=54
    endif
    
    // Riesgo, multiplicador de contratos.
    
    n=6
    
    // Condiciones para el analisis.
    
    if Time >= HoraInicio and time <= HoraEntradaLimite then
    
    // Condiciones de entrada de posiciones largas
    
    c1 = open < close-1
    IF c1 THEN
    IF PositionPerf(1) < 0 THEN
    OrderSize = OrderSize/2//+1
    if ordersize<1 then
    ordersize=1
    ENDIF
    ELSIF PositionPerf(1) > 0 THEN
    OrderSize =OrderSize+2
    endif
    // Si la primera barra del día de 5 min es positiva, compramos
    buy ordersize*n shares at market
    endif
    
    // Condiciones de entrada de posiciones cortas
    
    c2= open > close-1
    IF c2 THEN
    iF PositionPerf(1) < 0 THEN
    OrderSize = OrderSize/2//+1
    if ordersize<1 then
    ordersize=1
    ENDIF
    ELSIF PositionPerf(1) > 0 THEN
    OrderSize =OrderSize+2
    ENDIF
    // Si la primera barra del día de 5 min es negativa, vendemos
    sellshort ordersize*n shares at market
    endif
    endif
    
    SET STOP ploss 5
    SET TARGET pPROFIT 10
    
    
    
    #32211 quote
    larouedegann
    Participant
    Master

    Bonjour,

    j’ai trouvé cette Formule dans la documentation de PRT

    ONCE OrderSize = 1
    ONCE ExitIndex = -2
    REM On commence avec une position de 1
    //*********************//
    //*****Code à insérer juste après les instructions liquidant une position*****//
    ExitIndex = BarIndex
    //***********Code à insérer en fin de système**********//
    IF Barindex = ExitIndex + 1 THEN
     ExitIndex = 0
     IF PositionPerf(1) < 0 THEN
     OrderSize = OrderSize * 2
     REM Si le dernier trade était perdant, alors on double la taille de la position
     ELSIF PositionPerf(1) > 0 THEN
     OrderSize = 1
     REM Si le dernier trade était gagnant, alors on revient à une position de taille 1
     ENDIF
    ENDIF
    //*********************//
    REM La taille de la position doit être déterminée par la variable ordersize pour 
    l"intégralité du code

    Je ne sais pas ou mettre exitindex = barindex

    Si quelqu”un a une idée

    #32446 quote
    Nicolas
    Keymaster
    Master

    La diminution de moitié en cas de perte est déjà dans le code, j’ai modifié le reste pour l’augmentation d’un pas de 5 à chaque trade gagnant et inclut la limitation à 50 contrats maximum:

    DEFPARAM CUMULATEORDERS = FALSE
    DEFPARAM FLATBEFORE = 090000
    DEFPARAM FLATAFTER = 171500
    
    once Ordersize = 1
    
    IF TIME  > 090000 and Condition 1 and Condition 2 THEN
    IF PositionPerf(1) < 0 THEN
    OrderSize = OrderSize/2
    if ordersize<1 then
    ordersize=1
    ENDIF
    ELSIF PositionPerf(1) > 0 THEN
    OrderSize =OrderSize+5
    endif
    BUY  MIN(ordersize,50) contracts AT MARKET
    
    endif
    
    if TIME > 090000 and Condition 1 and Condition 2 THEN
    IF PositionPerf(1) < 0 THEN
    OrderSize = OrderSize/2
    if ordersize<1 then
    ordersize=1
    ENDIF
    ELSIF PositionPerf(1) > 0 THEN
    OrderSize =OrderSize+5
    endif
    SELLSHORT  MIN(ordersize,50) contracts AT MARKET
    
    ENDIF
    
    SET STOP LOSS 5
    SET TARGET PROFIT 9
    Victorio thanked this post
    #32797 quote
    larouedegann
    Participant
    Master

    merci à toi

Viewing 7 posts - 1 through 7 (of 7 total)
  • You must be logged in to reply to this topic.

POSITIONSIZE exponentiel


ProOrder : Trading Automatique & Backtests

New Reply
Author
Summary

This topic contains 6 replies,
has 3 voices, and was last updated by larouedegann
8 years, 10 months ago.

Topic Details
Forum: ProOrder : Trading Automatique & Backtests
Language: French
Started: 04/11/2017
Status: Active
Attachments: No files
Logo Logo
Loading...