BUY and hold – achats progressifs à la cloture journaliere tous les 20 périodes si mme 150 croissante
bonsoir
comment initialiser le démarrage avec les deux conditions
rem controle de la barre courante
if (barindex-lastindex=20 )then
buy 1 contract at market
lastindex=barindex
merci
Ce code doit déjà ouvrir une position toutes les 20 bougies, si tu veux ajouter une condition sur la “mme 150 croissante”, donc depuis le dernier ordre, on peut faire une soustraction ?
rem controle de la barre courante
if (barindex-lastindex=20) and (average[150,1]-average[150,1][20]>0) then
buy 1 contract at market
lastindex=barindex
endif
merci nicolas,
j’ai testé… mais ca ne marche pas . quand j’enlève le test mm croissante j’ai bien un achat récurrent. j’ai testé avec des périodes de mm plus courtes.
il y a quelque chose que je ne comprends pas
merci de ton aide
En effet, c’est logique, puisque à la fois “lastindex” vaut 0 et que la condition barindex-lastindex=20 ne sera vérifié qu’une seule fois (à la barindex n°20), hors cette barre se trouve hors historique et donc pas d’ordre. Il faut donc supprimer la lecture d’historique pour que la barindex 20 soit présente sur le graphique et donc à l’intérieur des dates de backtest :
defparam preloadbars=0
if ((barindex-lastindex=20) or lastindex=0) and (average[150,1]-average[150,1][20]>0) then
buy 1 contract at market
lastindex=barindex
endif
//graph average[150,1]-average[150,1][20]>0
//graph barindex-lastindex=20
//graph lastindex
merci nicolas
j’achète deux fois puis plus rien
????
Par ce que les conditions ne sont pas réunies ? On teste 1 seule fois toutes les 20 barres, si à cet instant précis la condition sur la variation positive de la EMA 150 n’est pas vrai, alors pas de trade. Donc par la suite, on ne reprendra plus jamais d’ordres car la différence entre le BARINDEX et le lastindex sera supérieure à 20.
Je te propose alors de modifier ton code en vérifiant avec le TRADEINDEX (qui est le numéro du chandelier du dernier ordre) avec un condition supérieure ou égale, plutôt que strictement égale à.
defparam preloadbars=0
if (barindex-tradeindex(1)>=20) and (average[150,1]-average[150,1][20]>0) then
buy 1 contract at market
endif
//graph average[150,1]-average[150,1][20]>0
//graph barindex-lastindex=20
//graph lastindex
merci nicolas….aprés être entré en position, je poursuis la definition du SELL sur enfoncement du dernier plus bas sur X barres ou sur enfoncement du donchian inférieur
je modifie mon code en abandonnant l’achat progressif.
avec ce nouveau code j’achète mais je ne vends pas quand la cloture est < au donchian inférieur !?
voici mon nouveau code
DEFPARAM CumulateOrders=False
defparam preloadbars=0
rem if (barindex-tradeindex(1)>=22) and ((average[150,1]-average[150,1][1]>0) and (average[7]>average[20])) then
if ((average[150,1]-average[150,1][1]>0) and (average[7]>average[20])) then
buy 5000 cash at market
set stop %loss 7
rem and (average[7]>average[20]
rem set target %profit15
endif
period = 15
rem hh = highest[period](high)
II = lowest[period](low)
if close<II then
sell at market
endif
Svp pensez à l’usage du bouton “insert PRT code” , merci, en cas d’oubli il est possible d’éditer son post pendant 5 minutes après l’avoir envoyé. Pas besoin de reposter le code, je le reformate dans le message ci-dessus.