croisement mme
Forums › ProRealTime forum Français › Support ProBuilder › croisement mme
- This topic has 18 replies, 2 voices, and was last updated 3 years ago by JC_Bywan.
-
-
01/24/2018 at 10:26 PM #60451
Bonjour,
j ai créé un indicateur détectant les croisement de mme à la hausse et à la baisse
seulement en faisant fonctionner le programme il n arrive pas à détecter les croisements alors qu’ils se produisent
voici le programme:
1234567891011121314151617181920212223242526272829303132A=exponentialaverage[20]B=exponentialaverage[50]C=exponentialaverage[100]D=exponentialaverage[200]E=exponentialaverage[300]action=0// croisement à la hausse 20 avec toute les mm expcondition1=A CROSSES OVER Bcondition2=A crosses over Ccondition3=A crosses over Dcondition4=A crosses over E//croisement à la baisse 20 toute les moyennes mobiles expcondition7=A CROSSES UNDER Bcondition8=A crosses UNDER Dcondition9=A crosses UNDER Ccondition10=A crosses UNDER Eif condition1 and condition2 and condition3 and condition4 thenaction=1elsif condition7 and condition8 and condition9 and condition10 thenaction=-1elseaction =0endifreturn action coloured(255,0,0)En vous remerciant pour votre aide
01/25/2018 at 9:29 AM #60471Bonjour, merci de respecter les consignes du petit cadre jaune “astuces” lors de la création d’un post, ici en particulier d’utiliser le bouton <> “insert PRT code” pendant la création du message, afin de rendre la partie code du post plus lisible. Nous tenons à la lisibilité des messages sur nos forums pour qu’ils gardent un maximum de chances d’être lus attentivement par les autres membres (et donc plus de chances de recevoir des réponses). J’édite votre message pour vous cette fois-ci, merci d’y faire attention lors des prochains posts.
01/25/2018 at 9:43 AM #60473Ce code, par l’usage de AND pour 4 conditions à la fois, recherche 4 croisements simultanés, ce qui a très peu de chances de se produire au vu des paramètres des mm, la fonction cross over n’est valable qu’à la clôture de bougie où le croisement a lieu…
Il semble probable que vous cherchiez plutôt le moment où la mme A croise à la hausse la dernière des 4 autres après l’avoir déjà fait pour 3 parmi ces 4, ce qui peut se faire avec une combinaison de conditions “supérieur ou égal” pour 3 cas et “cross over” pour le 4e (et si l’ordre de croisement importe peu, avec des OR pour faire permuter toutes les combinaisons de 3 “>=” et un “cross over”).
Si c’est un état plutôt qu’un instant qui est recherché, alors plus simplement faire 4 fois >=
(et inversement pour le cas de baisse)
1 user thanked author for this post.
01/25/2018 at 4:42 PM #6052101/25/2018 at 4:50 PM #60522Ce que Noobywan explique, c’est qu’il est presque impossible que la MME20 croise au même moment toutes les autres moyennes mobiles (de 50 périodes à 300). Il faut donc revoir la condition générant ton signal avec pourquoi pas des conditions de dessus/dessous et non des croisements strictes.
1 user thanked author for this post.
01/25/2018 at 4:51 PM #6052301/25/2018 at 7:04 PM #60529Bonjour,
Suite à vos remarques j’ai amélioré le code seulement je n’arrive pas caractériser le signal sur le graphique PRT;
En effet, je voudrais une fleche m ‘indiquant le sens du signal directement sur le graphique .
voici mon code
Indicateur croisement mme123456789101112131415161718192021222324252627282930313233343536373839404142434445464748A=exponentialaverage[20]B=exponentialaverage[50]C=exponentialaverage[100]D=exponentialaverage[200]E=exponentialaverage[300]action=0// croisement à la hausse 20 avec toute les mm expcondition1=A > Bcondition2=A > Ccondition3=A > Dcondition4=A crosses over E//croisement à la baisse 20 toute les moyennes mobiles expcondition7=A <Bcondition8=A <Dcondition9=A < Ccondition10=A crosses UNDER Eif condition1 and condition2 and condition3 and condition4 thenaction=1if action=1 thendrawarrowup( barindex,action) coloured(0,191,255)endifelsif condition7 and condition8 and condition9 and condition10 thenaction=-1if action=-1 thendrawarrowdown(barindex,action) coloured(255,69,0)endifendifreturn action01/25/2018 at 8:07 PM #60532ok, pour avoir toutes les permutations possibles si on ne veut pas un état permanent tant qu’on a 4 fois A> 4 autres, il aurait fallu faire 3 fois > et une fois cross over, mais en attribuant le cross over tour à tour à chacune des 4mme, et avec un or pour les les 4 groupes de4 conditions. Mais c’est un peu lourd en écriture, une possibilité plus légère pour tenir compte de tous les cas est la suivante:
1234567891011121314151617181920212223242526272829303132333435A=exponentialaverage[20]B=exponentialaverage[50]C=exponentialaverage[100]D=exponentialaverage[200]E=exponentialaverage[300]action=0// croisement à la hausse 20 avec toute les mm expcondition1=A > Bcondition2=A > Ccondition3=A > Dcondition4=A > E//croisement à la baisse 20 toute les moyennes mobiles expcondition7=A < Bcondition8=A < Dcondition9=A < Ccondition10=A < Ecrit1=condition1 and condition2 and condition3 and condition4crit2=condition7 and condition8 and condition9 and condition10if crit1 and not crit1[1] thenaction=1if action=1 thendrawarrowup( barindex,2*low-high) coloured(0,191,255)endifelsif crit2 and not crit2[1] thenaction=-1if action=-1 thendrawarrowdown(barindex,2*high-low) coloured(255,69,0)endifendifreturn//return actionJ’y ai au passage positionné les flèches au même x = barindex bien sûr, mais avec une ordonnée y compatible avec n’importe quel actif (alors que y=+/-action va mettre la flèche à hauteur +/-1 ce qui est un peu bas sur un graphe CAC40 ou DAX30 par exemple.
Si on veut les flèches sur le graphe, il ne faut plus faire un “return action” mais juste un “return”, et ajouter l’indicateur à la fenêtre du prix (via la petite clé à molette immédiatement à droite du titre “prix” au coin supérieur gauche de la fenêtre) plutôt qu’en fenêtre séparée sous le prix.
Si par contre on préfère garder l’indicateur sous le prix en fenêtre séparée pour voir “action” à +/-1, alors il faut garder la ligne “return action” et supprimer le “return” seul. Mais on ne peut pas simultanément avoir un indicateur en fenêtre séparée qui sait mettre la flèche sur le prix, c’est ou l’un ou l’autre (ou alors il faut faire tourner 2 versions de l’indicateur, à la fois une en fenêtre séparée avec “return action” sans flèche, et une sur la fenêtre prix avec “return” et les flèches)
01/25/2018 at 9:00 PM #6053601/25/2018 at 9:35 PM #60540C’est juste une façon parmi plusieurs possibles de positionner la flèche selon l’axe vertical de telle sorte qu’elle soit proche des bougies avec une distance d’écart compatible aussi bien avec un graphe cac40 (vers 5500) qu’un graphe action, ou qu’un graphe forex (euro vers 1.24) etc… on n’est pas obligé de choisir celle-là, on peut lui préférer par exemple “high+averagetruerange[10](close)” et “low-averagetruerange[10](close)”… ou tant d’autres façons de faire, du moment qu’elles rendent la position de la flèche de ce morceau de code compatible avec le graphe de n’importe quel actif, et ce d’autant plus qu’a priori je ne savais pas pour quel niveau de prix tu voulais positionner les flèches
01/26/2018 at 9:36 AM #6056501/26/2018 at 10:11 AM #60572C’est un choix de programmation que j’ai fait pour simplifier les choses et éviter d’avoir à écrire les 4 permutations possibles (8 si on dit 4 pour la hausse et 4 pour la baisse) de 3 fois “>” et 1 fois “cross over” en faisant tourner à chaque permutation le cross over pour chaque mme à croiser…
Ce choix me fait stocker dans la condition crit1 (nom choisi juste comme ça vite fait pour dire “critère 1” mais on peut la nommer comme on veut tant que ce n’est pas un mot réservé du langage PRTt) l’ensemble des 4 conditions avec “>”, donc crit1 est “vrai” chaque fois que la mme20 est-au-dessus des 4 autres mme, et “faux” dès que mme20 est en-dessous de l’une d’entre elle peu importe laquelle.
Rajouter [1] à la fin pour faire crit1[1] me donne accès à la valeur de crit1 à la bougie précédente (crit1[2] aurait été la valeur de crit1 il y a 2 bougies, etc…). Dire “not crit1[1]” revient à dire que crit1[1] n’était pas vrai.
Et donc écrire “if crit1 and not crit1[1] then” me permet de sélectionner le cas où la mme20 est au-dessus des 4 autres mais ne l’était pas en bougie précédente, c’est une façon de résumer tous les cas possible de cross over de mme20 sur n’importe laquelle des 4 autres mme.
1 user thanked author for this post.
01/26/2018 at 11:49 AM #6059101/26/2018 at 12:55 PM #60597Oui et non, ça dépend de la façon dont tu veux générer ce son…
Non au sens où il n’y a pas de mot clé dans le langage PRT qui permette de générer un son via code…
Mais oui au sens où PRT te permet de créer des alertes sonores, il est donc possible de créer en dehors de l’indicateur (mais se servant des données de l’indicateur) une alerte haussière quand action=1 et une alerte baissière quand action=-1, et même de choisir le son dans les menus déroulants de l’alerte (et/ou la voix qui dit “alerte déclenchée…”). Voir petite vidéo tuto ci-dessous sur la création d’alertes dans PRT:
https://www.youtube.com/watch?v=HIMvhprZIzA
1 user thanked author for this post.
01/26/2018 at 9:51 PM #60645 -
AuthorPosts
Find exclusive trading pro-tools on