Hello,
J’ai trouvé ce code dans la documentation et j’ai un peu de mal à comprendre la ligne ” IF MyIndex + NbBarLimit ”
// Définition de la durée de validité de l'ordre
ONCE NbBarLimit = 10
MM20 = Average[20](close)
MM50 = Average[50](close)
// Si la MM20 croise à la hausse la MM50, nous définissons 2 variables : "MyLimitBuy" et "MyIndex", qui contiennent respectivement le prix de clôture actuel et l'index de la barre concernée par le croisement.
IF MM20 CROSSES OVER MM50 THEN
MyLimitBuy = Close
MyIndex = Barindex
ENDIF
IF BarIndex >= MyIndex + NbBarLimit THEN
MyLimitBuy = 0
ENDIF
// Place un ordre au prix correspondant de MyLimitBuy, valable tant que cette variable est supérieure à 0 et que nous ne sommes pas en position long.
// Rappel : MyLimitBuy est supérieur à 0 pendant les 10 barres qui suivent le croisement
IF MyLimitBuy > 0 AND NOT LongOnMarket THEN
BUY 1 SHARES AT MyLimitBuy LIMIT
ENDIF
// Si un ordre n'est pas exécuté, il est possible de remplacer l'ordre d’achat limite expiré par un ordre d'achat au marché. Le bloc de code vous en donnera la possibilité s'il est ajouté à la suite du bloc précédent :
IF MyIndex + NbBarLimit AND MyLimitBuy > 0 AND NOT LongOnMarket THEN
BUY 1 SHARES AT MARKET
ENDIF
une fois que la variable MyIndex est initier elle sera donc toujours positif, donc la condition toujours vrais ? J’ai un peu du mal à comprendre
merci pour vos lumières 😊
MyIndex est le numéro du chandelier qui a vu le croisement des moyennes mobiles 20 et 50, lignes 8 à 11. Donc si on est sur le chandelier courante (BARINDEX) + NbBarLimit, soit 10 barres plus loin, alors on reset la variable MyLimitBuy et donc on ne pose plus de BUY LIMIT (lignes 19 à 21).
Merci @Nicolas,
Tout à fait votre réponse, mais j’ai peut-être mal formulé ma question, mon incompréhension réside à la ligne 24 du code, je ne comprends pas la première condition qui est “MyIndex + NbBarLimit” :
IF MyIndex + NbBarLimit AND MyLimitBuy > 0 AND NOT LongOnMarket THEN
Une fois que la variable MyIndex est initié elle sera toujours positif donc quelque soit la valeur de NbBarLimit alors on aura : MyIndex + NbBarLimit > 0, est-ce qu’il n’est pas possible par exemple de remplacer la ligne 24 par la suivante ? :
IF MyIndex AND MyLimitBuy > 0 AND NOT LongOnMarket THEN
En effet il y a un truc qui va pas, mais je n’arrive pas à saisir la logique de l’exemple, puisque dés qu’on aura dépasser la quantité de chandeliers pour placer des ordres LIMIT, MyLImitBuy repassera à 0.
Aussi, avec ta correction ça signifie qu’on rentre directement au marché sans attendre une expiration, donc placer un ordre LIMIT devient inutile.. Je vais me renseigner sur cet exemple.
Hello
c’est bon j’ai commpris :
IF MyIndex + NbBarLimit AND MyLimitBuy > 0 AND NOT LongOnMarket THEN
la variable NbBarLimit la variable est déclaré une seule fois avec la fonction Once, ce qui signifie après sa premiere lecture sur la ligne 13 elle sera alors indéfini, ou si on ajoute le deuxième titre avec la variable MyIndex qui ne sera déclaré et donc positif seulement si notre condition de croisement de moyenne mobile a eu lieu
Donc il est bien possible que les deux variables ne soit pas déclaré et ça nous donnerait donc un résultat éliminatoire pour la dernière condition :
IF 0 + 0 AND MyLimitBuy > 0 AND NOT LongOnMarket THEN