Effectivement, il me faut un historique des dernières 100 valeurs uniquement. Peut-être aurais-tu un bout de code pour ne conserver que les 100 dernières valeurs ?
Je n’ai aucune idée de comment tu remplis ton tableau, alors voici comment on pourrait faire en utilisant la variable “index” comme numéro de la colonne :
if macondition then
$tableau[index] = rsi[14] //stock ma valeur dans la colonne n° index
if index = 99 then //on reset index à 0 si on a 100 valeurs
index = 0
else //ou sinon
index=index+1 //on incremente la colonne
endif
endif
Bien sûr !! Suis-je bête… Ca devrait maintenant marcher très probablement.
Merci en tout cas.
J’ai corrigé le code ci-dessus, il faut s’arrêter à 99, sinon on aurait eu 101 colonnes (0 à 100 = 101 valeurs…) 🙄
Nickel merci, ça fonctionne au poil !
Merci pour votre aide qui m’a permit de bien avancer ! 🙂
Une autre question, j’aimerai utiliser une variable, mais qu’elle soit stockée en mémoire afin d’être réutilisée au(x) prochain(s) lancement(s) du script.
Exemple i=0 au 1er lancement du script (timeframe 10min), i=0 pendant les 5 bougies suivantes, puis je positionne i=1 car il satisfait à mes conditions, j’aimerais donc qu’au prochain parcourt du code i=1
Je n’ai pas réussi à trouver ça sur le forum
Tant que tu n’affectes pas d’autre valeurs à i, il restera à sa dernière valeur.
Par contre, si quand tu dis “prochain lancement du script”, tu veux dire enlever l’indicateur du graphique et le remettre ensuite, alors non, tout sera remis à l’état zéro.
J’ai toujours un souci, voila mon code :
if time=010000 or time=050000 or time=090000 or time=130000 or time=170000 or time=210000 then
//fermeture des positions en cours
sell at market
exitshort at market
Orders=0
//[enregistrement infos bougies précédentes]
//[...]
endif
for i = index downto 0
//[Récupération informations]
//[...]
if [Conditions] and Orders=0 then
// LONG
BUY 1 SHARE AT Haut STOP
SET STOP pLOSS amplitudepips
SET TARGET pPROFIT amplitudepips
// SHORT
SELLSHORT 1 SHARE AT Bas STOP
SET STOP pLOSS amplitudepips
SET TARGET pPROFIT amplitudepips
Orders=1
break
endif
next
Je suis en timeframe 10min, et toutes les 4H j’initialise une variable à 0 (Orders=0).
Puis quand les données que je récupèrent sont OK avec mes conditions :
– je place mes ordres (BUY STOP & SELL STOP) avec SL / TP
– je modifie ma variable (Orders=1) afin qu’il ne place pas de nouveaux ordres si mes conditions sont réunies de nouveau jusqu’au prochain tf 4H
Mais quand j’execute ce code, il ne place plus un seul ordre, j’ai l’impression que Orders vaut 1 tout le temps, dès le début…
Bon en fait il manquait juste un Orders=0 tout en haut du code…
Finalement j’ai bien toujours un souci pour ne pas placer de 2e ordre Buy ou Sell, quand un 1er est deja passé…
Le code est le suivant, je ne comprends pas avec les variables positionnées ça devrait fonctionner…
once Orders=0
if time=010000 or time=050000 or time=090000 or time=130000 or time=170000 or time=210000 then
//fermeture des positions en cours
sell at market
exitshort at market
Orders=0
//[enregistrement infos bougies précédentes]
//[...]
endif
for i = index downto 0
//[Récupération informations]
//[...]
if [Conditions] and Orders=0 then
// LONG
BUY 1 SHARE AT Haut STOP
SET STOP pLOSS amplitudepips
SET TARGET pPROFIT amplitudepips
// SHORT
SELLSHORT 1 SHARE AT Bas STOP
SET STOP pLOSS amplitudepips
SET TARGET pPROFIT amplitudepips
Orders=1
break
endif
next
J’ai également essayé de mettre le if Orders=0 avant le for…
Pas mieux ! 🙁
Un ordre conditionnel ne dure qu’une seule bougie, donc si tu lances ton code en timeframe 5-minutes par exemple, les ordres STOPS resteront actifs durant 5 minutes si ils ne sont pas activés par le prix, puis disparaîtront et il faudra attendre que ta condition à la ligne 2 soit vrai pour que “orders” soit à nouveau égal à 0 et que tu autorises à nouveau de placer ces ordres (condition ligne 14).