ProRealTime
Pour partager sur le trading automatique, nos algorithmes, nos backtests

Bug ou pas bug telle est la question.

par Doudidoudou » 19 avr. 2018 00:20

Bonjour,

Je n'arrivé pas à interpréter certaines prises de position sur mes backtests. Donc, pour prendre en main pro order et bien comprendre les prises de position des backtests, il faut que je revois les bases. J'ai donc crée un indicateur simple et un code basique (par c'que je suis trop c... cf:orelsan)
--------------------------------
A lire sur le rythme de la musique
--------------------------------
UT1min
Indicateur... simple: si le cours baisse de 1% par rapport a la fermeture de la veille alors 1 sinon 0

Code...basique: si indicateur = 1 alors ouverture de position (short)
---------------------------------
Y a pas plus simple, je vais enfin pouvoir comprendre l'incidence des décalages de bougie ...super!

Et la... surprise... je n'y comprends rien!
Regardez le résultat:
image1.jpg
Pour mes 3 premiers indicateurs, pas de problème, on a trois ouvertures de position.
Pour mon quatrième...rien...pourquoi?...Il a la peste?
Je rappelle le code: si signal alors ouverture! C'est quoi le problème!

Et là?
image2.jpg
Ouverture de position sans signal! Soyons positif y a eu une baisse quand même :D

Et encore...
image3.jpg
Ouverture avant signal.. Hourra!!! Un don de voyance, ça peut-être pratique sur les marchés!

Enfin, le meilleur pour la fin
image 4.jpg
Là, pour voir les 1% de baisse avant l'ouverture de la position, faut s'accrocher! :shock:

Bon, sérieux, si quelqu'un a des explications, des suppositions ou autre, je suis preneur! Mais jusqu’à avoir compris le schmilblick je ne vois comment faire confiance aux résultats de PRT backtest.

Avoir autant bosser pour ce retrouver en face de ça.... :mur:

Qu'en pensez vous?
Seuls les membres inscrits peuvent voir les fichiers.
L'inscription au forum prend moins de 30 secondes.

Re: Bug ou pas bug telle est la question.

par Toto le Héros » 19 avr. 2018 17:06

Bonjour,
Je pense que tu as certainement un bug dans ton code et que si tu le partages dans ton post "on" pourra t'aider.
prt Backtest est extrêmement fiable (en cochant l'option "tick by tick"). Je trade en auto en live! grâce à lui avec une fiabilité remarquable. Merci prt : langage extrêmement simple, fiable et efficace.

Re: Bug ou pas bug telle est la question.

par Doudidoudou » 20 avr. 2018 00:27

Merci Toto le hèros pour ta réponse.

J'ai trois questions dans ce poste...désolé... :D

Ton intervention me rassure sur la fiabilité de pro backtest.
Pour te donner toutes les infos liées au paramétrage de mon compte j'ai rappelé la fenêtre d'hier et surprise... plus aucun problème. La simplicité du code ne laissant que peu de place à une erreur de codage, je ne peux faire qu'une hypothèse.
Ci dessous, le code que j'ai rédigé pour l'exemple précédant:
-------------------------
//Indicateur binaire de prise de position
condvalind2 = CALL "condvalind2"

// ouverture et fermeture en short si signal ok
IF condvalind2=1 THEN
SELLSHORT 1 CONTRACTS AT MARKET

// stop éloigné pour ne pas risquer qu'il se situe dans la même bougie
SET STOP %TRAILING 1
ENDIF

-------------------------

Mon hypothèse est donc que lors de ma précédente cession, j'ai modifié les paramètres d'heure (passé en UTC+2), ce qui a peut-être fait faussé l'analyse.
(1) Possible? Je ne vois pas d'autres explications...

Du coup ma cession est paramétré de la façon suivante:
apercu.jpg
(2) Je ne suis pas sûr que cela soit correcte (UTC+1 ou +2?) pour afficher les heures d'ouverture du cac40. Je ne comprend pas trop l'unité de temps utilisé sur le graph (de 10:00 à 18:30)

Enfin le seul est unique "bug" qu'il me reste est celui là:
apercu2.jpg
Rien graphiquement n'indique que la valeur a chuté de 1% par rapport à la clôture de la veille.
(3) Sachant que cella c'est passé le lundi 24 Avril 2017 je me demande si mon indicateur n'a pas pris en considération la clôture de dimanche (qui du coup n'est pas sur le graph).

Si tu peux éclairer ma lanterne, je t'en serais reconnaissant.

pour info le code de l'indicateur:
--------------------------
condval = DClose(1) * 0.99

IF condval > close[1] then
result=clotveille * 0.99
endif


//res=1 si indicateur change de valeur
IF result[1]<>result THEN
res=1
ELSE
res=0
ENDIF
return res

--------------------------
Merci!
Seuls les membres inscrits peuvent voir les fichiers.
L'inscription au forum prend moins de 30 secondes.

Re: Bug ou pas bug telle est la question.

par Toto le Héros » 20 avr. 2018 09:33

Bonjour,
J'aurais tendance à te conseiller de laisser l'affichage par défaut. (1ère case à cocher fuseau horaire).
Ensuite tout dépent si tu souhaites exécuter ta stratégie sur le close de 17:30/17:35 ou sur le close de PRT CFD à risque limité qui est à 24:00. Et c'est de là que vient ton problème à mon avis. C'est bien une stratégie sur le CAC n'est-ce-pas ?
Je ne vois pas non plus quelle est l'ut de ta stratégie.

Voilà. Précise donc dans un 1er temps ce que tu veux faire EXACTEMENT :
-sur quel instrument
- sur quelle ut
- parles-tu de la clôture de la session cash ?

A partir de là, on pourra coder.

Re: Bug ou pas bug telle est la question.

par Doudidoudou » 20 avr. 2018 11:21

Je n'avais pas renseigné les infos ci dessous car elles étaient disponible sur les images. Haaa... fainéantise quand tu nous tiens... (je parle pour moi bien-sur!)
Donc:
-sur quel instrument: cfd à risque limité 1€ france 40
- sur quelle ut: ut 10min
- parles-tu de la clôture de la session cash ? sur les horaires de marché (9:00 / 17:30)

Objectif:
Créer un code simple (entrainement/compréhension des paramètres)
Peu importe sa logique et sa performance. Partons de l'exemple précédant.
Achat dans les horaires de marché en prenant comme ref le max (9:00/17:30) de la journée précédente.

Avant de te donner du boulot, je vais re-paramétrer les fuseaux comme à l'origine et re-rédiger le code en intégrant les horaires des plages d'achat et en virant le call, mais mes dispos hors boulot sont plutôt de 22h à minuit. Donc j'envois ca cette nuit....

Merci pour ton aide :)

Re: Bug ou pas bug telle est la question.

par Doudidoudou » 21 avr. 2018 00:30

Donc les deux codes:
indicateur binaire:
---------------------------------
clotveille = DClose(1)
condval = clotveille * 0.99

IF condval > low[1] then
result=condval
endif
IF result[1]<>result THEN
res=1
ELSE
res=0
ENDIF
return res AS "res"
---------------------------------


Code:
---------------------------------
DEFPARAM CumulateOrders = true

heureouv = 090000
heureclot = 173000

condvalind2 = call "condvalind2"

IF condvalind2=1 AND time >= heureouv AND time <= heureclot THEN
SELLSHORT 1 CONTRACTS AT MARKET
SET STOP %TRAILING 1
ENDIF
---------------------------------

(1) En reprenant les fuseaux d'origine mon Dclose ne semble pas être celui de 17:30 mais celui de 00:00... comment prendre celui de 17:30?
(2) Mes plages horaires du programme gèrent t'elles les passages des heures d'été aux heures d'hivers et inversement?
(3)Enfin, je n'ai pas réussi à supprimer le call.
(4) je la garde pour plus tard... :D

Re: Bug ou pas bug telle est la question.

par Toto le Héros » 23 avr. 2018 08:42

Bonjour,
L'instruction DClose ne correspond pas à la clôture "cash" de 17h30. Ton problème vient de là. Sur prt, tu as la cotation du cfd à risque limité. DClose te renvoie (quelle que soit l'ut dans laquelle tu es) la clôture de l'ut journalière (à 24h00 sauf le vendredi puisque le cfd à risque limité cote 24/24). DClose(1) te renvoie la clôture de la veille (à 24h00 sauf le vendredi puisque le cfd à risque limité cote 24/24).
Tu n'obtiendras pas sur prt la clôture cash. Tu auras une valeur approchante en faisant extraire la valeur de la clôture autour de 17h30 et à 9h00 pour l'ouverture.
Il y a des instructions du type if HOUR=xx and MINUTE=yy qui peuvent te permettre de faire çà facilement.

Gestion heure été / heure hiver : aucun problème si tu traites des indices/actions cotés dans ton fuseau horaire (CAC, DAX, etc...).
Tes plages horaires de programme ne servent à rien puisque ton objectif est de prendre une position à l'ouverture de toute façon si je comprends bien. En l'occurence si tu es en ut=10min, ta condition sera vérifiée sur la barre de 9:00 qui se clôture à 9:10. Si la condition est réalisée ta position sera prise à 9:10.

Bon courage.

Re: Bug ou pas bug telle est la question.

par Doudidoudou » 23 avr. 2018 15:38

Merci toto,

Ok Pour la prise en compte du Dclose... Je regarde ça ce soir. J’aurai probablement une ou deux questions sur le sujet mais j'attendrai de voir ce qu'il en sera après rectification du code et si j'arrive à les solutionner moi même.

Pour la gestion de l'heure, je me doute qu'il n'y aura pas de problème en réel. Ma question portait plutôt sur le backtest. Puisqu'il prend en référence l'heure de mon ordi, est-ce qu'en remontant dans le temps il fait automatiquement les décalages d'UTC.

Dans cet exemple, je ne souhaite pas qu'il prenne nécessairement position à l'ouverture mais lors du franchissement des -1%. Pour l'instant si le franchissement à lieu en over alors il ne se positionne pas à l'ouverture mais il se positionnera si la condition est remplie en journée.
Dans un deuxième temps je lui demanderai de se positionner aussi à l’ouverture si la condition est rempli en over...Mais ceci est une autre histoire

Prochaine étape, je vais travailler sur les fermetures des positions en positionnant un stop loss (réplique du stop garanti d'ig) en overnight et un stop suiveur en journée. à suivre...

Petite question te concernant: Tu fait du trading auto en intra ou en daily?

Re: Bug ou pas bug telle est la question.

par Toto le Héros » 23 avr. 2018 17:01

Changement d'heure : aucun problème. Le robot trade sur un instrument dont l'heure change en même temps que lui.
Tant que tu sais précisément ce que tu souhaites programmer et que tu gardes à l'esprit que ton robot va effectuer la vérification des conditions à chaque clôture de Bougie (et uniquement à ce moment-là), "tout ira bien".
Je programme des robots de scalping daily et intraday, mais j'ai une règle stricte de coupure systématique le vendredi soir ou les veilles de jour férié.

Re: Bug ou pas bug telle est la question.

par Doudidoudou » 23 avr. 2018 23:58

coucou,

Pour les valeurs de clôture, pas de problème...ca marche. :merci: Par contre j'ai placé le script dans l'indicateur.
Dans le manuel, il recommande de ne pas utiliser "call", mais je n'y arrive pas et il me semble logique que je ne puisse pas. As-tu une solution pour supprimer le "call"?

Pour mes fermetures de position:
Je n'arrive pas à simuler le stop garanti en over (placer à l'équivalent d'une perte totale de couverture) et le stop trailing en journée. Mon stop suiveur ne se désactive pas la nuit. :(
Comment faire?

indicateur:
-----------------------------------------
condval = clotveille * 0.99

IF condval > low[1] then
result=condval
endif
IF result[1]<>result THEN
res=1
ELSE
res=0
ENDIF

IF time=174000 then
clotveille=close
endif

return res AS "res"
-----------------------------------------


Code:
-----------------------------------------
DEFPARAM CumulateOrders = true

heureouv = 090000
heureclot = 173000

condvalind2 = call "condvalind2"

IF condvalind2=1 AND time >= heureouv AND time <= heureclot THEN
SELLSHORT 1 CONTRACTS AT MARKET
endif

IF onmarket AND time >= heureouv AND time <= heureclot THEN
SET STOP %loss 0
SET STOP %TRAILING 1
endif

IF onmarket AND time < heureouv AND time > heureclot THEN
SET STOP %TRAILING 0
SET STOP %loss 1
ENDIF
-----------------------------------------

Sujets similaires
Pourquoi une telle hausse du nasdaq ?
par lepierot » 30 juil. 2020 22:59 (7 Réponses)
Bug?
par Benoist Rousseau » 13 sept. 2011 11:39 (12 Réponses)
Bug IG market - iPhone ?
par Benoist Rousseau » 30 sept. 2011 11:07 (3 Réponses)
bug Demo IG Market?
par Fatah » 27 févr. 2012 08:03 (3 Réponses)
Bug Prorealtime avec IG MArkets et Dax ?
par DéBé » 27 févr. 2012 10:03 (55 Réponses)
Bug PRT - Temps & Horaires
par Fatah » 16 juil. 2012 13:45 (4 Réponses)
bug ordinateur
par LVO » 24 juil. 2012 18:19 (6 Réponses)
Petit bug
par Benoist Rousseau » 06 août 2013 09:29 (5 Réponses)
bug plateforme démo, confirmé par IG
par DeXTeR » 09 janv. 2014 09:11 (3 Réponses)