[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 504

 
prom18:
Le graphique doit ressembler à une ligne droite croissante.

Pourquoi pensez-vous cela ?
 
Vinin:

Pourquoi avez-vous décidé cela ?
Eh bien, chaque barre a un volume supérieur à zéro et j'ai besoin de leur total, qui est recalculé lorsqu'une nouvelle barre apparaît.
 

à Sergeev:

Ah, maintenant je vois ce que vous voulez dire. For se souvient exactement de la valeur à laquelle le compteur doit être comparé, et ne la change pas. Autrement dit, si OrdersTotal a donné 2, for s'en souviendra et travaillera avec 2.

 
Solree:

à Sergeev:

Ah, maintenant je vois ce que vous voulez dire. For se souvient exactement de la valeur à laquelle le compteur doit être comparé, et ne la change pas. Ainsi, si OrdersTotal a donné 2, alors for s'en souviendra et travaillera avec 2.


Non. Ce n'est pas ce que je dis.

La condition d'arrêt de la boucle (dans votre cas, OrdersTotal()) est calculée !à chaque itération !

donc à la première itération =2
à la deuxième itération =1

Tu es programmeur ou quoi ? Tu ne peux pas comprendre les choses élémentaires.

 

à Sergeev:

Vous m'avez ouvert les yeux. J'ai même volontairement ouvert l'IDE pour C++ pour le vérifier. Et il s'avère que vous avez doublement raison ! Merci ! :) Mais... L'ordre n'est toujours pas sélectionné, même si vous procédez de cette manière :

int someA = OrdersTotal();
for (int a = 0; a < someA; a++)
    if (OrderSelect(a, SELECT_BY_POS, MODE_TRADES))
        if (OrderComment() == "Aelit" && OrderType() == OP_SELL)
            OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), 0);
 
prom18:
Eh bien, chaque barre a un volume supérieur à zéro et j'ai besoin que leur somme soit recalculée lorsqu'une nouvelle barre apparaît.

Le volume total peut aussi bien augmenter que diminuer.
 
Vinin:

Le volume total peut aussi bien augmenter que diminuer.
Je ne comprends pas. Le volume est le nombre de ticks dans une barre. Le volume du premier est de 30, le second de 20, le troisième de 10. La somme serait de 60. Ou pas ?
 
Solree:

à Sergeev:

Vous m'avez ouvert les yeux. J'ai même volontairement ouvert l'IDE pour C++ pour le vérifier. Et il s'avère que vous avez doublement raison ! Merci ! :) Mais... L'ordre n'est toujours pas sélectionné, même si vous procédez de cette manière :


Toujours supprimer les commandes en comptant

int someA = OrdersTotal();
for (int a = someA-1;a>=0 a--)
    if (OrderSelect(a, SELECT_BY_POS))
        if (OrderComment() == "Aelit" && OrderType() == OP_SELL)
            OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0);
 
Solree:

Mais... l'ordre n'est toujours pas sélectionné, même si vous le faites :

et ça n'arrivera pas !

vous faites OrderSelect par numéro de position.

dans la première itération, vous sélectionnez le premier ordre, position de l'ordre a=0

lorsque cet ordre est fermé, le nombre d'ordres devient OrdersTotal=1.
Cela signifie que l'ancien deuxième ordre de la position 1 devient la position 0.

Mais à la deuxième itération de votre ordre, a = 1, et non 0! Ainsi, l'OrderSelect sur la position=1, maintenant inexistante, retournera une erreur.

-------

Maintenant, réfléchissez une minute avant d'écrire votre prochain article. Quelles sont les deux options que vous pouvez suggérer pour éviter cette dynamique.

 
prom18:
Je ne comprends pas. Le volume est le nombre de ticks dans une barre. Le volume du premier est de 30, le second de 20, le troisième de 10. La somme sera de 60. Ou est-ce le cas ?


Prendre une série temporelle avec des volumes et recalculer avec des plumes

Par exemple, il y a les volumes suivants

10, 15, 25, 8, 11, 24, 30

Voici les sommes de trois

50, 48, 44, 55

Il y a une montée, il y a une descente.

C'est comme dans la vie.