Sortie si PNL du PRU >0
Forums › ProRealTime forum Français › Support ProOrder › Sortie si PNL du PRU >0
- This topic has 12 replies, 2 voices, and was last updated 8 years ago by Nicolas.
-
-
10/08/2016 at 10:49 PM #14506
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)
123456789101112131415161718192021222324252627DEFPARAM CumulateOrders = Truecapital = 10000 + strategyprofitnbpozouverte=0pru=0quantite=0IF NOT ONMARKET AND STOCHASTIC[14, 3](close) CROSSES OVER AVERAGE[5](STOCHASTIC[14, 3](close)) AND STOCHASTIC[14, 3](close)<20 THENBUY ROUND(capital/3) CASH ROUNDEDDOWN at marketnbpozouverte=nbpozouverte+1pru=tradepricequantite=COUNTOFLONGSHARESENDIFIF ONMARKET AND STOCHASTIC[14, 3](close) CROSSES OVER AVERAGE[5](STOCHASTIC[14, 3](close)) AND nbpozouverte<3 THENBUY ROUND(capital/3) CASH ROUNDEDDOWN at marketnbpozouverte=nbpozouverte+1pru=(pru*quantite+tradeprice*(COUNTOFLONGSHARES-quantite))/(COUNTOFLONGSHARES)quantite=COUNTOFLONGSHARESENDIFIf (Open-PositionPrice)*COUNTOFLONGSHARES>0 THENSELL AT MARKETnbpozouverte=0quantite=0pru=0ENDIFD’avance merci
JF
10/09/2016 at 2:41 PM #14517Bonsoir, 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)
10/10/2016 at 9:02 AM #1454810/10/2016 at 8:55 PM #14612Bonjour 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…
10/17/2016 at 8:07 PM #1506310/17/2016 at 8:14 PM #1506910/17/2016 at 9:18 PM #1507010/17/2016 at 9:23 PM #15071je 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…:
1234567891011121314// Conditions pour ouvrir une position acheteuseDEFPARAM CumulateOrders = TrueREM 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 THENBUY 1 SHARES AT MARKETENDIFREM 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 THENBUY 1 SHARES AT MARKETENDIFREM 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)THENSELL AT MARKETENDIFbizarre!
10/21/2016 at 8:20 PM #1529910/22/2016 at 12:14 PM #15308On 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 ! 😰
10/23/2016 at 9:04 PM #15381Ok avec graph sur valsoia:
12345678910111213141516// Conditions pour ouvrir une position acheteuseDEFPARAM CumulateOrders = TrueREM 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 THENBUY 1 SHARES AT MARKETENDIFREM 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 THENBUY 1 SHARES AT MARKETENDIFREM 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)THENGRAPH open COLOURED(255,0,0) AS "open" //RedGRAPH positionprice COLOURED(0,0,255) AS "poz price" //RedSELL AT MARKETENDIF1la 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 ?
11/08/2016 at 2:12 PM #16165Bonjour
Grâce à graph j’ai finalement trouvé d’où vienne les trades perdants. Dans mon premier poste j’avais:
12If (Open-PositionPrice)*COUNTOFLONGSHARES>0 THENSELL AT MARKETA 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?
11/08/2016 at 3:19 PM #16177Pour 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.
-
AuthorPosts
Find exclusive trading pro-tools on