Bonjour,
J aurai bien besoin d’aide car cela fait pas mal de temps que je bloque est n’y arrive pas malgré mais recherche sur ce forum.
Je souhaiterai créer un indicateur qui serait composé de 3 autres indicateurs (maison) mais ou les conditions ne se déclenchent pas forcement en meme temps.
ex :
c1 = indic1
c2 = indic2
c3 = indic3
Je voudrais que les conditions se suivent pour valider un achat, cela donnerai :
c1 validé , en attente de c2, une fois c2 validé attendre que c3 soit validé. rentrer en position a l achat et la condition de sorti, serait sur le signal inverse.
J’espere avoir été assez claire, sinon n hésitez pas a me demander des précisions
Par avance merci
Dans ce cas, on peut utiliser un test sur le BARINDEX (la quantité de chandeliers lue depuis le début de l’historique). Ainsi, si le BARINDEX de c2 est supérieur à celui de c1 alors on sait que c2 a eu lieu après c1, soit :
if c1 then
c1bar = barindex
endif
if c2 and barindex>c1bar then
c2bar = barindex
endif
if c3 and barindex>c2bar then
signal = 1
endif
if signal = 1 then
buy at market
signal = 0
endif
Merci Nicolas,
je vais tester tout ca et vous tient au courant.
Re bonjour Nicolas,
Comment faire pour qu il ne prenne qu une seule position a l achat et qu il en vende deux pour la vente et ainsi de suite?
car dans se code il me prend des poses à chaque barre aprés le signal validé.
L’idée est que j aimerai qu il rentre en position et qu une fois fait qu il n en prenne pas d autre sauf à l inverse.
ex =
signal achat à 100 = prise de position de 1 contrat call.
un signal de vente se déclenche à 120 = prise de 2 contrats short.
Par avance merci
Le code que j’ai proposé est à adapter à ta stratégie, c’est juste un exemple. Je ne connais pas tes conditions d’entrées au marché, si tu ne veux pas cumuler les positions acheteuse, tu peux ajouter cette instruction dans ta condition d’achat (toujours en reprenant l’exemple précédent) :
if signal = 1 and NOT LONGONMARKET then
buy at market
signal = 0
endif
Pour la taille des contrats, tu changes la ligne par 2 avec:
buy 1 contract at market
tu changes la quantité selon tes propres conditions bien entendu.
Re ,
en rentrant ton code j obtiens ceci :
avec le graph ci joint se sera peut etre plus simple 🙂
Ps : j ai codé comme ceci :
// Définition des paramètres du code
DEFPARAM CumulateOrders = False // Cumul des positions désactivé
// Conditions pour ouvrir une position acheteuse
indicator1 = CALL "testsignal1"
indicator2 = CALL "testsignal2"
indicator3 = call "testsignal3"
c1 = (indicator1 = 1)
c2 = (indicator2 = 1)
c3 = (indicator3 = 1)
c4 = (indicator1 = -1)
c5 = (indicator2 = -1)
c6 = (indicator3 = -1)
if c1 then
c1bar = barindex
endif
if c2 and barindex>c1bar then
c2bar = barindex
endif
if c3 and barindex>c2bar then
signal = 1
endif
if signal = 1 and NOT LONGONMARKET then
buy 1 contract at market
signal = 0
endif
// Conditions pour ouvrir une position en vente à découvert
if c4 then
c4bar = barindex
endif
if c5 and barindex>c4bar then
c5bar = barindex
endif
if c6 and barindex>c5bar then
signal = -1
endif
if signal = -1 then
sellshort 1 CONTRACT AT MARKET
signal = 0
if signal = 1 and NOT LONGONMARKET then
sell 1 contract at market
signal = 0
endif
sell 1 contract at market
endif
Certaines conditions se chevauchent, tu devrais faire une comparaison type >= au lieu de strictement supérieur.
ça donne quoi un
GRAPH signal
lors d’un backtest ?
te répond plus tard, vais regarder tout ca ce soir.
Serait il pas plus facile de code en mode “indicateur” et non “proOrder” ?
En tout cas merci de ton aide.
Oui en effet, pourquoi ne pas plutôt créer un indicateur synthétique avec les conditions de ces 3 indicateurs ! plus simple à débugger en tout les cas 🙂
Le backtest donne ce qu il y a sur le graphique que j ai posté, l ordre d ‘achat qui est exécuté (ellipse jaune) a exactement bien appliqué la “methode” si je puis dire.
barre verte dans le 1er indic en bas, barre verte dans celui du milieu et barre verte sur celui du bas,(ellipse jaune),
ce qui a bien déclenché la position acheteuse.
La ou cela bloque est :
quand la 1 ere barre rouge arrive sur le 1er indic, suivi des autres rouges dans les 2 derniers (rectangle jaune),
il n y a pas eu de prise de position (rectangle jaune), dans notre exemple il aurait du déclencher “2” vente,
1 pour cloturer la position acheteuse et une autre pour prendre une position vendeuse.
j’espére que j ai été assez claire 🙂
le code pour un indicateur m irai trés bien en effet, pourrais tu me le donner , si c est pas trop abusé !!
merci
Bonjour Nicolas,
J’ai finalement enlevé une condition et fait un code pour un indicateur qui fonctionne bien, comme suit :
c1 = (indicator1 > 0.5)
c2 = (indicator2 > 0.5)
if c1 then
buyc=1
endif
if buyc and c2 then
signal = 1
buyc=0
endif
return signal
En revanche, j ‘aurais bien besoin d’aide pour les ventes car je n’arrive pas à remplacer le “buyc” !!
J’ai esseyé avec “sellc” puis “sellshort” sans résultat.
Par avance merci
C’est bon 🙂
J’avais oublié de mettre le négatif dans les conditions !!
voici le code si cela intéresse quelqu’un :
c1 = (indicator1 < -0.5)
c2 = (indicator2 < -0.5)
if c1 then
sellshortc=1
endif
if sellshortc and c2 then
signal = 1
sellshortc=0
endif
return signal
Merci pour tout, bonne journée.