Sortie si PNL du PRU >0

Viewing 13 posts - 1 through 13 (of 13 total)
  • Author
    Posts
  • #14506 quote
    qdsdh2004
    Participant
    New

    Bonsoir,

    Je voulais écrire un code pour acheter en 3 fois (iso montant) à un signal donné (croisement sto par ex) et sortir lorsque le pnl du trade est >0 i.e. lorsque le PRU est > prix de revient. Malgré la condition de sortie, certains backtestings me donnent des trades négatifs ! Certes il y a les frais de courtage mais jergardez sur JLL, il y a autre chose. Sauriez-vous éclairer mes lanternes SVP ? (ex Valsoia ou JLL)

    DEFPARAM CumulateOrders = True
    
    capital = 10000 + strategyprofit
    nbpozouverte=0
    pru=0
    quantite=0
    IF NOT ONMARKET  AND STOCHASTIC[14, 3](close) CROSSES OVER AVERAGE[5](STOCHASTIC[14, 3](close)) AND STOCHASTIC[14, 3](close)<20 THEN
    BUY ROUND(capital/3) CASH ROUNDEDDOWN at market
    nbpozouverte=nbpozouverte+1
    pru=tradeprice
    quantite=COUNTOFLONGSHARES
    ENDIF
    
    IF ONMARKET  AND STOCHASTIC[14, 3](close) CROSSES OVER AVERAGE[5](STOCHASTIC[14, 3](close)) AND nbpozouverte<3  THEN
    
    BUY ROUND(capital/3) CASH ROUNDEDDOWN at market
    nbpozouverte=nbpozouverte+1
    pru=(pru*quantite+tradeprice*(COUNTOFLONGSHARES-quantite))/(COUNTOFLONGSHARES)
    quantite=COUNTOFLONGSHARES
    ENDIF
    
    If  (Open-PositionPrice)*COUNTOFLONGSHARES>0 THEN 
    SELL AT MARKET
    nbpozouverte=0
    quantite=0
    pru=0
    ENDIF

    D’avance merci

    JF

    #14517 quote
    qdsdh2004
    Participant
    New

    Bonsoir, Je voulais écrire un code pour acheter en 3 fois (iso montant) à un signal donné (croisement sto par ex) et sortir lorsque le pnl du trade est >0 i.e. lorsque le cours est > prix de revient (PRU). Malgré la condition de sortie, certains backtestings me donnent des trades négatifs ! Certes il y a les frais de courtage mais regardez sur JLL, il y a autre chose. Sauriez-vous éclairer mes lanternes SVP ? (ex Valsoia ou JLL)

    #14548 quote
    Nicolas
    Keymaster
    Master

    Le code ne semble pas être complet ?

    Positionprice retourne le prix d’ouverture moyen de l’ensemble des positions ouvertes, je pense qu’à la ligne 22, il n’est pas utile de multiplier par “countoflongshares”.

    #14612 quote
    qdsdh2004
    Participant
    New

    Bonjour et merci pour la réponse. J’ai bien copié tout le code mais il n’est pas garanti sans erreur ! Pour la ligne 22 c est vrai c est inutile, j’avais utilisé le countoflongshares pour obtenir le PNL en montant et le mettre > aux frais de courtage en pensant que l’erreur venait de là. Mais en réalité, dans les backtesting Valsoia ou JLL on voit que certaines pertes vont bien au dela. Bref que ce soit avec (open-positionprice)>0 ou (open-positionprice)*countoflongshares>2 j’ai le meme probleme de trade négatifs en backtesting et je ne trouve pas l’erreur dans le code…

    #15063 quote
    qdsdh2004
    Participant
    New

    personne d’autre n’est inspiré ? help please …

    #15069 quote
    Nicolas
    Keymaster
    Master

    Utiliser Close à la place de Open à la ligne 22 ?

    #15070 quote
    qdsdh2004
    Participant
    New

    merci mais non il y a toujours 9 positions perdantes sur JLL, oh rage, oh…

    #15071 quote
    qdsdh2004
    Participant
    New

    je prends le code du pyramidage du probacktest et j’ajoute seuleument la condition (open>positionprice) pour la sortie et sur Valsoia, j’ai aussi un trade négatif…:

    // Conditions pour ouvrir une position acheteuse
    DEFPARAM CumulateOrders = True
    REM Ce système entre long de 1 lorsque le RSI est inférieur à 30, si l'on n'est pas déjà en position.
    IF NOT ONMARKET AND RSI[14](Close) < 30 THEN
    BUY 1 SHARES AT MARKET
    ENDIF
    REM Si l'on a ouvert une position longue et que le cours de clôture précédent < au cours d'ouverture actuel, alors on entre long de 1 lot à chaque fois que les conditions qui précèdent sont validées, dans la limite de 3 lots au total.
    IF LONGONMARKET AND Open > Close[1] AND COUNTOFPOSITION < 3 THEN
    BUY 1 SHARES AT MARKET
    ENDIF
    REM Lorsque le prix croise à la baisse une moyenne mobile simple, toute la position est fermée.
    IF Close Crosses Under Average[14](Close) and (Open>positionprice)THEN
    SELL AT MARKET
    ENDIF

    bizarre!

    #15299 quote
    qdsdh2004
    Participant
    New

    ????

    #15308 quote
    Nicolas
    Keymaster
    Master

    On peut debugger avec l’instruction GRAPH. Si tu graph open et positionprice tu auras toutes les informations pour trouver de où provient ton problème.

    Quand un truc nous echappe dans le comportement d’une stratégie, GRAPH peut nous éviter les maux de tête ! 😰

    #15381 quote
    qdsdh2004
    Participant
    New

    Ok avec graph sur valsoia:

    // Conditions pour ouvrir une position acheteuse
    DEFPARAM CumulateOrders = True
    REM Ce système entre long de 1 lorsque le RSI est inférieur à 30, si l'on n'est pas déjà en position.
    IF NOT ONMARKET AND RSI[14](Close) < 30 THEN
    BUY 1 SHARES AT MARKET
    ENDIF
    REM Si l'on a ouvert une position longue et que le cours de clôture précédent < au cours d'ouverture actuel, alors on entre long de 1 lot à chaque fois que les conditions qui précèdent sont validées, dans la limite de 3 lots au total.
    IF LONGONMARKET AND Open > Close[1] AND COUNTOFPOSITION < 3 THEN
    BUY 1 SHARES AT MARKET
    ENDIF
    REM Lorsque le prix croise à la baisse une moyenne mobile simple, toute la position est fermée.
    IF Close Crosses Under Average[14](Close) and (Open>positionprice)THEN
    GRAPH open COLOURED(255,0,0) AS "open" //Red
    GRAPH positionprice COLOURED(0,0,255) AS "poz price" //Red
    SELL AT MARKET
    ENDIF
    
    

    la position perdante a lieu le 02 septembre 2015. quand je regarde avec graph j’ai un écart aussi bien sur le pru (positionprice) que sur l’open. Comment cela est il possible ? dans le backtest j’ai pru=(22.29+20.02)/2=21.155 contre 21.51667 sur grah et pour l’open j’ai 21.5 contre 22.2 avec graph ! qui dit mieux ?

    #16165 quote
    qdsdh2004
    Participant
    New

    Bonjour

    Grâce à graph j’ai finalement trouvé d’où vienne les trades perdants. Dans mon premier poste j’avais:

    If  (Open-PositionPrice)*COUNTOFLONGSHARES>0 THEN 
    SELL AT MARKET
    

    A priori impossible d’avoir des trades perdants sauf que le sell at market est réalisé à l’ouverture de la barre suivante et en cas de gap baissier ma condition basée sur l’ouverture de la barre précédente n’est plus vraie. N’est il pas possible de sortir pendant la barre du jour dès qu’une condition est atteinte  car cela fausse le Backtest SVP?

    #16177 quote
    Nicolas
    Keymaster
    Master

    Pour le moment non, puisque l’on ne teste les conditions qu’une seule fois par barre. La seule possibilité serait de placer des ordres en dur à des prix déterminés pour sortir, tel que des SET STOP LOSS ou SET TARGET, ou même des ordres conditionnels de type STOP ou LIMIT.

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

Sortie si PNL du PRU >0


Support ProOrder

New Reply
Author
author-avatar
qdsdh2004 @qdsdh2004 Participant
Summary

This topic contains 12 replies,
has 2 voices, and was last updated by Nicolas
9 years, 2 months ago.

Topic Details
Forum: Support ProOrder
Language: French
Started: 10/08/2016
Status: Active
Attachments: No files
Logo Logo
Loading...