Proorder de PRT fonctionne t'il correctement ?

Forum sur le trading automatique et algorithmique : systèmes, backtests, robots de trading, résultats et limites, code à l'appui.
G'sT
Maître Jedi
Messages : 4719
Enregistré le : 01 mars 2012 18:45

Proorder de PRT fonctionne t'il correctement ?

Message non lu par G'sT »

Bonsoir à tous,

Ca y est je me suis lancé aujourd'hui dans une strategie de trading automatique en réel.


Ce 1er test automatique en réel a été réalisé ce matin (et que j'ai suivi en direct via mon smartphone).
Ce soir, de retour à la maison autodebriefing avec analyse des trades......; et là quelle surprise , je me met à douter sur la fiabilité de "proorder" et je m'interroge : proorder dysfonctionne t'il à l'identique du module "backtest" ?

Le contexte

En amont j'ai crée une stratégie toute simple ; j'ai associé cette stratégie avec un indicateur maison me permettant de tester la stratégie aisément.

1ère étape : je backteste cet indicateur (on va l'appeler BDC pour faciliter la compréhension) sur la période octobre 2015 à mai 2016 en UT 1mn.
Le bilan est satisfaisant (avec TP et SL !).

2ème étape : Je backeteste BDC manuellement, "sur papier" sur les 3 derniers mois soit entre mars 2016 et mai 2016. Le résultat est identique au backtest prt et la aussi donc satisfaisant.

J'ai à ce stade des repères sérieux et solides sur la manière dont fonctionne BDC, son nombre de trades par jour, son taux de réussite.....

3e étape : Dimanche soir je lance BDC sous proorder pour qu'il fasse son job (à partir de lundi entre 9h et 17h 30).

Le déroulement de l'éxécution de proorder

Ce matin j'ai mon smartphone allumé sur IG (version mobile - Android).
Je vois le 1er ordre se déclencher à 9h01 puis fermé quelques mn après par mon SL (qui a été respecté). S'en suis peu de temps après l'ouverture d'un 2nd ordre fermé peu de temps après sur son target profit (là aussi respecté!). Super me dis-je, les SL et TP sont bien respectés. J'assiste ensuite à une succession de trades positifs et négatifs. Il est 9h40 je suis presque flat ( PV d'1 pt exactement) avec un total de 10 trades.
Mais je suis quand même pris d'un doute car le déroulé des trades me surprend : chacun dure environ 4 mn et à chaque fois qu'un est fermé, un autre est ouvert peu de temps derrière.
Or de par mon backtest/analyse manuel précédent je sais bien qu'il n'y pas autant de trades en si peu de temps avec une telle chronicité (et très rare que BDC déclenche aussi vite un signal de trade après la cloture d'un précédent).
Je décide donc d’arrêter manuellement proorder. Bien entendu avec la version mobile d'IG on a pas accès à la platerforme prooder, et je suis donc contraint de laisser se déclencher le 11e trade afin de le déboucler manuellement (ce qui a pour conséquence d'arrêter l'algo de BDC).
C'est chose faite : le trade est débouclé au moment où il passe à une PV d'1pt). Algo arrêté.
A ce stade je devrais être content (PV totale de 2 pts ;) ), mes SL et TP étant respectés.

Le retour

De retour à la maison ce soir je démarre ma plateforme pour analyser les trades de ce matin.
Je démarre BDC figurant dans proorder puis je le backtest via PRT..... et là le résultat est tout à fait différent de celui vécu ce matin sur proorder.
J'analyse donc BDC manuellement......et effectivement le résultat de mon analyse manuelle est similaire à celle du backtetst PRT que je venais de faire : BDC indique un 1er signal de déclenchement de trade à 10h04 et aucun trade entre 9h et 10h04 (aucun doute dessus j'ai bien analysé/examiné).
Alors pourquoi Proorder a t'il déclenché 11 trades successifs entre 9H et 9h45 avec ce même indicateur BDC ?

J'ai de gros doutes sur la fiabilité du module proorder et sur un fonctionnement aléatoire à l'identique du module PRT.

Je m'adresse donc à ceux qui auraient utilisé proorder en réel : avez vous constaté de tels bugs,à savoir des écarts de trades entre ceux passés par PRT et une analyse de ces trades réalisés manuellement par vous même ?

Autre détail qui peut avoir une importance : Quand vous lancez une strategie via proorder, avec stops et objectifs compris, attention Proorder fonctionne de manière séquencée en 3 temps :
1) l'ordre est tout d'abord déclenché (ouvert)
2) L'ordre ouvert est ensuite modifié : placement du stop
3) L'ordre ouvert est ensuite modifié : placement du TP

Merci de votre retour.
Avatar du membre
plataxis
Membre du Conseil Jedi
Messages : 5049
Enregistré le : 30 avr. 2014 03:12

Re: Proorder de PRT fonctionne t'il correctement ?

Message non lu par plataxis »

Moi j'ai seulement tenté en démo. Je n'aurais jamais fait tourner en réel avant d'avoir un peu de recul en démo. Et j'ai été plutôt faignant pour décortiquer ce qu'il a fait (pas gagnant = poubelle direct)
G'sT
Maître Jedi
Messages : 4719
Enregistré le : 01 mars 2012 18:45

Re: Proorder de PRT fonctionne t'il correctement ?

Message non lu par G'sT »

Merci plata.
Ma stratégie est éprouvée sur le papier, et verrouillée (stop, exposition limitée en lot, possibilité d’arrêter manuellement l'algo => c'est pour ça que je suivais en direct) donc le risque était limité. Et puis j'aime bien essayer mes stratégies en réel dès lors qu'elles sont bien abouties.
G'sT
Maître Jedi
Messages : 4719
Enregistré le : 01 mars 2012 18:45

Re: Proorder de PRT fonctionne t'il correctement ?

Message non lu par G'sT »

Bon je crois que j ai intuitivement (mais restera a confirmer ce soir par la vérification) un début de réponse au dysfonctionnement de proorder, car il y a bien eu dysfonctionnement
.....

Constat du probleme :
Proorder s est mis à declencher un 1 er ordre a 9h01. Des que le tp ou le stop etait touché, la position.etait fermee.et la.minute suivante un ordre etait declenché, et ainsi de suite pendant 1 ordre consecutif jusqu à ce que j arrete proorder dans le 11e trade.

Donnees du probleme :
Mon module bdc fonctione.selon 3 variables qui doivent etre verifiees cumulativement.
1) condition de plage horaire : "if time" compris entre 9h00 et 17h30 alors 1 sinon 0 (1 permettant le declenchement d un trade).
2) condition de cours : du style "if close> close (1) alors vente" / "if close <close(1).alors achat
3)condition d indicateur BDC. Ici proorder recherche mes 2 indicateurs faits "maison" : "signal bdc achat" et "signal.bdc vente" qui sont tous 2 binaires (le 1 declenchant le trade).
Dans cette variable prooder prend en.compte 2 éléments :
A=signal bdc achat
B=signal bd vente

Deroule du programme prooder :
J ai in finé les 2 lignes d achat/vente sujvantes :

Condition pour ouvrir une position longue :
Si close<close(1) ET "if time"=1 ET A=1 alors achete 1 contrat

Condition pour ouvrir une position courte
Si close>close(1) Et "if time"=1 ET B=1 alors vend 1 contrat

De ce que je pense comprendre, c est que proorder declenche les ordres sur la base des 2 premieres variables et zappe la 3 e variable (indicateur maison) comme s il n existait pas.
Je verifierais ce soir.
Avatar du membre
Benoist Rousseau
Trader Futures / CME Member
Messages : 174758
Enregistré le : 06 sept. 2011 22:45

Re: Proorder de PRT fonctionne t'il correctement ?

Message non lu par [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/src/Extension/CoreExtension.php on line 570: strtr(): Ignoring replacement of empty string
Benoist Rousseau
»

C'est peut-être un problème de if et if then
Avatar du membre
DarthTrader
Membre du Conseil Jedi
Messages : 11260
Enregistré le : 09 oct. 2013 17:09

Re: Proorder de PRT fonctionne t'il correctement ?

Message non lu par DarthTrader »

integre ton code BDC dans proorder c est plus propre que l appel de fonction externe je trouve
G'sT
Maître Jedi
Messages : 4719
Enregistré le : 01 mars 2012 18:45

Re: Proorder de PRT fonctionne t'il correctement ?

Message non lu par G'sT »

Merci Benoist je verifirais ce soir.
Peut etre que tu as raison : je me.demande si on peut ecrire un ordre d achat avec 3 variables et un seul if /then comme je l ai ecrit :
If A and B and C then
Buy 1 contract at market
Endif
Avatar du membre
kero
Compagnon Jedi
Messages : 1317
Enregistré le : 22 juil. 2015 09:08

Re: Proorder de PRT fonctionne t'il correctement ?

Message non lu par kero »

Je ne sais pas si ça peut aider, mais peut-être une piste.

Quand je construit un indicateur avec ProBuilder, la référence des cours utilisés pour les données comme Close est celle de la bougie en cours. En revanche, lorsque j'utilise ProScreener, le code prend en référence la bougie précédente. Ainsi Close dans ProBuilder et dans ProScreener ne se réfère pas à la même bougie.

Si t'as une même décorrélation entre ProBuilder et ProOrder, ça pourrait peut-être expliquer ?

Note que si dans ProScreener j'appelle une fonction ProBuilder, il utilise également la bougie précédente et pas actuelle.

Pour tester tout ça il faudrait que tu débug ton code: le faire fonctionner en observant le moment où il se déclenche et en testant les données qu'il utilise/ses résultats intermédiaire. À l'évidence ce travail de débuggage n'a pas été fait.
G'sT
Maître Jedi
Messages : 4719
Enregistré le : 01 mars 2012 18:45

Re: Proorder de PRT fonctionne t'il correctement ?

Message non lu par G'sT »

Oui darth c etait la piste que j envisageai : je pencherai pour un "pb d appel externe" de BDC et j envisage son integration.dans proorder.
G'sT
Maître Jedi
Messages : 4719
Enregistré le : 01 mars 2012 18:45

Re: Proorder de PRT fonctionne t'il correctement ?

Message non lu par G'sT »

Merci pour ton aide kero et ton explication.
Je ne pense pas que ce soit un probleme lié au close mais en lien avec la 3e variable "bdc" qui n est pas prise en compte pour le dclenchement du trade.
Comme BDC fonctionne bien en tant qu indicateur independant mais est ignore lorsqu il est inclu en reference externe comme 3 e indicateur.dans proorder, je pencherai pour les 2 pistes evoquees :
- pb d IF/then (Benoist)
- pb de reference externe a bdc (comme darth et moi le pensons)

Autre question : avec 3 variables, plutot que de ne mettre qu 1 seul IF/then et les 3 variables separees par "And", est ce que je ne devrais pas plutot mettre 2 If/then ou bien 1 if/ then + 1 elsif ?
Avatar du membre
Stark
Compagnon Jedi
Messages : 1482
Enregistré le : 01 nov. 2015 10:06

Re: Proorder de PRT fonctionne t'il correctement ?

Message non lu par Stark »

Salut G'sT, j'utilise tous les jours ProOrder en réel, et mes résultats sont semblables à mes backtests. Je pense qu'il faut que tu intègres tes indicateurs maisons directement dans ton robot ProOrder.

N'hésite pas si tu as besoin d'un coup de main ;)
Avatar du membre
Benoist Rousseau
Trader Futures / CME Member
Messages : 174758
Enregistré le : 06 sept. 2011 22:45

Re: Proorder de PRT fonctionne t'il correctement ?

Message non lu par [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/src/Extension/CoreExtension.php on line 570: strtr(): Ignoring replacement of empty string
Benoist Rousseau
»

vu ce que tu décris c'est un problème de if G'sT, perso je n'ai pas de soucis avec proorder

les if then else if ça me rappelle le Turbo Pascal et ses boucles infinies :)
G'sT
Maître Jedi
Messages : 4719
Enregistré le : 01 mars 2012 18:45

Re: Proorder de PRT fonctionne t'il correctement ?

Message non lu par G'sT »

Msg recu Stark ;-)
J examinerai tout ca ce soir. Merci a tous pour votre collaboration collective.
En y reflechissant a nouveau, je viens de prendre conscience (grace a vous ;-) ) de la necessite d alleger, de simplifier mon "code proorder".

Effectivement ma 3e variable (signal.bdc achat") fait appel a un indicateur maison binaire qui lui meme fait appel (puisqu il est binaire) a un autre indicateur maison externe "bdc".

Proorder fait donc reference a 2 indicateurs externes imbriques.
De meme l'indicateur "signal bdc achat", contient aussi un if/then qui entre peut etre "en conflit" avec mon if/then dans proorder.
Idem pour une nomenclature "A=" qui intervient dans BDC / signal bdc achat / et proorder... d ou peut etre une confusion des genres....

Je vais simplifier mon code proorder et je vous tiendrai informés
Avatar du membre
Jim
Chevalier Jedi
Messages : 2373
Enregistré le : 24 févr. 2016 10:39

Re: Proorder de PRT fonctionne t'il correctement ?

Message non lu par Jim »

Hello G'sT,

Je suis un utilisateur régulier de ProOrder, et je suis souvent agacé par des différences avec PBT. Les conséquences peuvent être très lourdes. A titre personnel, pour un même système de trading, j'ai un code spécifique pour PBT et un code spécifique pour ProOrder.

J'ai lu que tu utilises des Close et des Close[1] dans ton code, et là je dis : Aïe ! Perso, quand je passes de PBT à PO, je remplace les Close par des Close[1], et les Close[1] par des Close[2].
En effet, PBT fait un test de condition en fin de chandelier, et si le test est positif il ouvre une position en début de chandelier suivant. PO fait un test de condition en début de chandelier, et si le test est positif il ouvre une position immédiatement.
En conséquence, tu te retrouves avec Close = Close[1] (si absence de glissement).
Avatar du membre
Stark
Compagnon Jedi
Messages : 1482
Enregistré le : 01 nov. 2015 10:06

Re: Proorder de PRT fonctionne t'il correctement ?

Message non lu par Stark »

Jim a écrit :En effet, PBT fait un test de condition en fin de chandelier, et si le test est positif il ouvre une position en début de chandelier suivant. PO fait un test de condition en début de chandelier, et si le test est positif il ouvre une position immédiatement.
Chez moi, ProOrder ne prend position qu'en clôture de bougie, je suis surpris de ça Jim.
Avatar du membre
Jim
Chevalier Jedi
Messages : 2373
Enregistré le : 24 févr. 2016 10:39

Re: Proorder de PRT fonctionne t'il correctement ?

Message non lu par Jim »

Stark,
Ca m'intrigue aussi ce que tu me dis. Il faut croire qu'on fait une utilisation différente de ProOrder, ou bien on a des éléments de langage différents.

Je vais te donner un bout de code, et tu me diras si tu obtiens le même résultat :
IF TIME = 130500 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
En UT 1 min, ProOrder effectuera le test entre 13h05m00s et 13h05m02s environ, puis IG essaiera d'ouvrir une position dans la foulée. Si IG rejette l'ordre, il retentera de passer l'ordre vers 13h05m05s. Bref, l'ordre est exécuté au début de la bougie qui va de 13h05m00s à 13h06m00s.

En tout cas, Stark, si tu disposes d'une méthode pour exécuter les ordres en fin de bougie, je suis très intéressé !
Avatar du membre
Stark
Compagnon Jedi
Messages : 1482
Enregistré le : 01 nov. 2015 10:06

Re: Proorder de PRT fonctionne t'il correctement ?

Message non lu par Stark »

Ok je vais essayer. Après j'utilise l'UT 10 secondes pour mes codes, peut-être que cela joue.
Avatar du membre
kero
Compagnon Jedi
Messages : 1317
Enregistré le : 22 juil. 2015 09:08

Re: Proorder de PRT fonctionne t'il correctement ?

Message non lu par kero »

Bah 2 IF/THEN ou un IF+ELSIF, ça ne donne pas le même algorythme.

En fait, le mieux serait de le voir, ce code.
Avatar du membre
plataxis
Membre du Conseil Jedi
Messages : 5049
Enregistré le : 30 avr. 2014 03:12

Re: Proorder de PRT fonctionne t'il correctement ?

Message non lu par plataxis »

c'est surtout que Jim ouvre une position sans autre condition que l'heure. Peut-être Stark met-il une condition de prix ou d' indicateur ou de n'importe quoi qui fait que PRT attend la cloture d'une bougie ?
Avatar du membre
Stark
Compagnon Jedi
Messages : 1482
Enregistré le : 01 nov. 2015 10:06

Re: Proorder de PRT fonctionne t'il correctement ?

Message non lu par Stark »

Oui c'est tout à fait ça plataxis, j'ai des conditions en mode CLOSE, donc forcément mon code attend la fin de la bougie pour déterminer si les conditions d'entrées sont réunies, et seulement à l'ouverture de la bougie suivante il rentre.

Voilà pourquoi on a une différence Jim ;)