Bonjour à tous,
Je souhaite utiliser la fonction mathématique “tangente” dans ma stratégie mais cela ne fonctionne pas???
indicator4 = MACD[12,26,9](close)
c3 = (TAN(indicator4) = 0)
Rien ne se passe, donc bug
Comme je suis nouveau, il ne s’agit peut-être que d’une erreur de débutant mais je cale!
J’ai appliqué la proposition de Nicolas:
indicator4 = MACD[12,26,9](close)
c3 = lowest[5](indicator4)
Dans ce cas de figure Probacktest fonctionne bien mais pas du tout avec le résultat escompté!
C’est pourquoi je sollicite votre aide afin que cette fonction mathématique fonctionne dans mon programme
Pour mémoire:
tan(courbe) = 0
Veut dire que la courbe de prix ou la courbe de l’indicateur tangente à l’horizontal donc au bas d’un creux ou au sommet d’une bosse
Merci pour votre aide
Daniel
Ton test C3 vérifie que la tangente est strictement égale à 0, ce qui arrive très rarement .. enfin plus précisément dans le cas de la MACD lorsque celle-ci croise sa ligne de signal finalement (voir image ci-jointe).
indicator4 = MACD[12,26,9](close)
c3 = TAN(indicator4)
return c3
Je ne me souviens plus trop de l’idée dont tu parles, mais on peut réessayer de trouver les pics et les creux d’un MACD autrement .. ?
Merci pour ton aide Nicolas
Comme tu peux le voir sur l’indicateur MACD que tu m’as envoyé, la courbe passe plusieurs fois par tan(courbe)=0
Pas “très rarement”, j’ai compté 50 fois ou cette fonction est vérifiée en fait elle tangente une droite horizontale et se confond avec elle,
quand elle est au fond d’un creux ou au sommet d’une bosse.
Je n’arrive pas à la faire fonctionner dans mon programme avec ou sans les parenthèses (je l’ai esssayé)
Tu peux faire abstraction du signal ou de l’histogramme, voir les supprimer (si c’est possible, dans mon cas je ne peux que les rendre invisible) qui ne me servent à rien.
Sans vouloir te vexer Nicolas, apparemment tan(a) fait partie de la panoplie des outils de programmation Prorealtime mais personne ne sait ou n’a jamais essayé de l’utiliser, me tromp’je?
J’avais pensé que peut-être cela venait du fait que le MACD est un indice composite composé de plusieurs MM mais même si je le remplace par la courbe de prix
c6 = TAN(close) = 0
Probacktest ne fonctionne pas
Mais peut-être qu’il y a d’autres fonctions mathématique de géométrie fonctionnant directement avec une courbe tel cos(a), sin(a) etc… qui sont plus utilisées, qui fonctionnent et nous permettraient de nous aidez à trouver la solution.
Si tu peux m’aider à solutionner ce problème… grand merci
Daniel
Bonjour Nicolas,
Si je peux résumer, il s’agit simplement de faire fonctionner la fonction tan(a) de Probuilder
Ou bien je l’utilise mal???
Je ne connais pas la composition de “trend” mais une droite de tendance vient aussi tangenter certaines bougies, alors comment est construit cette appli?
Est-ce qu’elle utilise des fonctions mathématiques
Merci pour ton aide
Daniel
Ta condition :
c6 = TAN(close) = 0
est stricte, si ProBacktest ne la vérifie pas exactement au Close, c’est à dire au seul moment où il lit le code, alors c6 renverra toujours 0. Pour vérifier ce que retourn TAN(close), tu peux utiliser l’instruction GRAPH :
GRAPH TAN(close)
Pour tester un “pic” du MACD, pourquoi ne pas simplement tester les 3 dernières valeurs de celui-ci :
a = macd[12,26,9](close)
pic = a<a[1] and a[1]>a[2] and a[1]=highest[12](a)[1]
creux = a>a[1] and a[1]<a[2] and a[1]=lowest[12](a)[1]
if pic then
drawarrowdown(barindex[1],a[1])
endif
if creux then
drawarrowup(barindex[1],a[1])
endif
return a
Bonjour Nicolas,
J’ai testé le petit programme “pic du MACD” (en lieu et place de la fonction “tangente”) il fonctionne parfaitement en tant qu’indicateur, grand merci
Mais j’ai essayé de l’intégrer dans ma stratégie et la … c’est le drame!
Je n’arrive pas à l’intégrer!!!
Si tu peux m’aider
Par ailleurs j’ai mis en place avec l’indicateur CCI des valeurs limites pour l’achat ou la vente et Probacktest n’en tient pas compte???
Est-ce que j’ai loupé quelque chose?
Grand merci pour ton aide
Amicalement
Daniel
// Conditions pour ouvrir une position acheteuse
indicator1 = Average[20](close)
indicator2 = Average[10](close)
c1 = (indicator1 > indicator2)
indicator3 = CCI[20]
c2 = (indicator3 < -95)
a = macd[12,26,9](close)
indicateur4 = a > a[1] and a[1] < a[2] and a[1] = lowest[12](a)[1]
c3 = indicateur4
IF (c1 AND c2 AND c3) AND not daysForbiddenEntry THEN
BUY 1 SHARES AT MARKET
ENDIF
Il me semble qu’il manque quelques lignes au code de ta stratégie ? (daysForbiddenEntry n’est pas définit et il n’y a aucune sortie de position par un stop our un target profit par exemple).
Bonjour,
Excuses moi Nicolas mais j’avais mis uniquement la partie qui ne fonctionne pas et qui me paraissait la plus importante, voici le programme complet, si tu peux m’aider, par avance merci.
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Annule tous les ordres en attente et ferme toutes les positions à 0:00, puis empêche toute création d'ordre avant l'heure "FLATBEFORE".
DEFPARAM FLATBEFORE = 080000
// Annule tous les ordres en attente et ferme toutes les positions à l'heure "FLATAFTER"
DEFPARAM FLATAFTER = 173000
// Empêche le système de placer de nouveaux ordres sur les jours de la semaine spécifiés
daysForbiddenEntry = OpenDayOfWeek = 6 OR OpenDayOfWeek = 0
// Conditions pour ouvrir une position acheteuse
indicator1 = Average[20](close)
indicator2 = Average[10](close)
c1 = (indicator1 > indicator2)
indicator3 = CCI[20]
c2 = (indicator3 < -95)
a = macd[12,26,9](close)
indicateur4 = a > a[1] and a[1] < a[2] and a[1] = lowest[12](a)[1]
c3 = indicateur4
IF (c1 AND c2 AND c3) AND not daysForbiddenEntry THEN
BUY 1 SHARES AT MARKET
ENDIF
// Conditions pour fermer une position acheteuse
indicator5 = Average[10](close)
indicator6 = Average[20](close)
c4 = (indicator5 > indicator6)
indicator7 = CCI[20]
c5 = (indicator7 > 95)
a = macd[12,26,9](close)
indicateur8 = a < a[1] and a[1] > a[2] and a[1] = highest[12](a)[1]
c6 = indicateur8
c7= indicator8>1
IF c4 AND c5 AND c6 AND c7 THEN
SELL AT MARKET
ENDIF
// Stops et objectifs
SET STOP pLOSS 3
PS: je fonctionne avec un timeframe de 15mn
Tout fonctionne comme il se devrait selon moi pour les conditions sur le CCI, je ne vois ce qui te chagrine ?
Par contre pour les sorties, tu as créés un problème avec ta variable c7 qui teste si ‘indicateur8’ est supérieur à 1, ce qui n’arrivera jamais, c’est une condition booléenne qui retourne soit 0 (faux), soit 1 (vrai).
J’ai supprimé c7
Ce qui me chagrine c’est qu’à plusieurs reprises il y a ordre d’achat et de vente sur la même bougie
Ce qui me chagrine c’est qu’il n’y a pas toujours de flèche vers le haut pour des creux important ou de flèche vers le bas pour des pics importants
Si tu prends GBP/USD TF:15mn à 11H00 le 31/10/2017 tous les paramètres sont au vert pour qu’il déclenche l’achat et rien ne se passe
J’ai l’impression que l’indicateur c4 (pic/creux) est mal configuré ou pas au bon endroit ou pas avec les bons critères, bref même si PBT ne se met pas en erreur, il n’en tient pas compte
Petite question, que veut dire le carré orange par rapport à la croix orange?
En te remerciant encore pour le temps consacré à résoudre les problèmes de chacun
Amicalement
Daniel
La flèche de l’indicateur que je t’ai codé s’affiche 1 période dans le passé pour bien identifier le pic ou le creux, ce qui implique que la détection du signal sur ton exemple n’est pas bon pour cet indicateur, puisqu’elle intervient une bougie en avant, donc sur la bougie de 11h15, moment où certaines conditions ne sont donc plus respectées.
Pour connaître l’état d’une variable dans un backtest, tu peux utiliser l’instruction GRAPH:
GRAPH c3 as "pic ou creux vrai ?"
à ajouter à la fin du code de la stratégie.
Effectivement
Donc l’indicateur “pic/creux” est inutilisable puisqu’il me met la flèche à un endroit que je crois valable mais en réalité qui est faux puisque décalé d’une bougie
Il y a aussi le fait qu’à plusieurs reprises il y a ordre d’achat et de vente sur la même bougie (avec des carrés orange)
Non l’endroit est valable, c’est bien le pic ou le creux qu’on matérialise, comment savoir sur la bougie courante si on est bien sur un pic ou un creux ? Il faut bien attendre qu’il soit formé, donc une bougie après 🙂
Je ne vois pas les carrés orange dont tu parles ?