[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 69

 

Je suis assis ici et je n'arrive pas à comprendre comment mettre en œuvre l'algorithme.

Peut-être que quelqu'un peut aider.

1. trouver le début de la journée (j'ai fait cela)

2. Trouver le maximum de la journée (je l'ai fait)

3. Je dois déterminer les barres qui suivront la première fractale après le croisement de la MA de haut en bas après ce maximum.


Je joins la figure.


 
komposter >> :

Au lieu de iRSI, on devrait dire iCCI.

YEPRST...... c'est complètement hors de vue..... merci, nous allons le réparer

 
luka >> :

Je suis assis ici et je n'arrive pas à comprendre comment mettre en œuvre l'algorithme.

Peut-être que quelqu'un peut aider.

3. vous devez calculer les barres qui suivront la première fractale après avoir traversé la MA de haut en bas après ce maximum.

"calculer les barres qui vont suivre..."

Écrivez simplement : "Je veux savoir où le prix va aller après avoir allumé l'ordinateur..." :-)))))

 
mukata >> :

"calculer les barres qui vont suivre..."

Écrivez simplement : "Je veux savoir où le prix va aller après avoir allumé l'ordinateur..." :-)))))


vous ne comprenez pas.

ces barres sont déjà sur le graphique. ou disons que c'est la barre actuelle. Et s'il répond à ces conditions, c'est le bar que vous recherchez.

C'est la première chose.

Et deuxièmement, pourquoi s'embêter avec ces conneries si vous ne comprenez pas de quoi nous parlons ?

 
Skydiver >> :

Vous pouvez essayer ceci

OrderSelect(1, SELECT_BY_POS)

if(OrderOpenTime()!=0)

{

///необходимая операция

}

Mais cette option n'est possible que si vous n'avez qu'une seule commande !

Donc on vérifie juste si l'ordre est en attente ?


L'idée est la suivante : en même temps que l'arrêt d'un ordre, par exemple à l'achat, trois ordres en attente sont définis

Je veux une condition pour que l'un de ces 3 ordres en attente devienne un "ordre de travail" normal.

 
luka >> :

vous ne comprenez pas.

Ces barres sont déjà sur le graphique. ou disons que c'est la barre actuelle. Et si elle remplit les conditions, c'est la barre que vous cherchez.

C'est la première chose.

Et deuxièmement, pourquoi perdez-vous votre temps si vous ne comprenez pas de quoi nous parlons ?

"Calculez les barres qui suivront la première fractale après la ré... "Cela signifie qu'ils la suivront, pas qu'ils "existent déjà sur la carte"...

Mais si "Et s'il remplit les conditions - c'est le bar que vous cherchez" - c'est une autre affaire. Décrivez les "conditions", quelqu'un vous aidera.

Je m'excuse pour l'inondation, ça m'a échappé.



 
mukata >> :

"calculer les barres qui suivront la première fractale après la re... " S'ils suivent, cela signifie qu'ils le feront, pas s'ils sont "déjà sur la carte"...

Mais si "Et s'il remplit les conditions - c'est le bar que vous cherchez" - c'est une autre affaire. Décrivez les "conditions", quelqu'un vous aidera.

Désolé pour le déluge, ça m'a échappé.



Oooh, je l'ai écrit exactement comme ça.

Je ne vais pas chercher à trouver je ne sais quoi, sans savoir où ni comment.

Je suis intéressé par les bars spécifiques qui existent déjà. Et pour être plus exact - leur changement.

Au fait, je l'ai déjà mis en œuvre, il s'avère que ce n'est pas si difficile :)

 
fima_ >> :

donc nous vérifions simplement si l'ordre est en attente ?


L'idée est la suivante : lorsque vous arrêtez un ordre, par exemple à l'achat, trois ordres en attente sont définis

Je veux une condition pour que l'un de ces 3 ordres en attente devienne un "ordre de travail" normal.

Vous avez donc 3 ordres en attente et si au moins un d'entre eux s'est déclenché, alors une condition est définie ?

si oui, alors c'est comme ceci

for(int cnt=0;cnt<OrdersTotal();cnt++) // последовательно проверяем все ордера

{

OrderSelect(cnt, SELECT_BY_POS)
if(OrderOpenTime()!=0) ///время не равно 0 значит отложка сработала(или как писал Roger if(OrderType()<2) )
{
///необходимая операция
}
}

ou avez-vous 1 ordre ouvert + 3 ordres en attente ?

alors vous pouvez essayer de cette façon

//в глобальных переменных

int tick[3];

//в функции start

//cначало записываем номера тикетов отложек в переменные

for(int cnt=0;cnt<OrdersTotal();cnt++) // последовательно проверяем все ордера

{

OrderSelect(cnt, SELECT_BY_POS)
if(OrderOpenTime()!=0)

{

tick[cnt]=OrderTicket();

}

}

//а далее проверяем выполнился ли отложенный ордер


for(int cnt=0;cnt<OrdersTotal();cnt++)

{

OrderSelect(cnt, SELECT_BY_POS)
if(OrderOpenTime()!=0)

{

for(int cnt2=0;cnt2<3;cnt++)

if(tick[cnt]==OrderTicket())

{

//необходимое условие

}

}

ou utiliser un Magic spécifique pour tous les ordres et s'il y a un ordre en attente avec ce Magic, vous devez l'utiliser comme ceci :

в глоб перем

int mag=12345;

в ф start

/// При открытии отложки укажите ему в качестве магика mag

///ну а далее идет поиск "бывшей" отложки по Magic

for(int cnt=0;cnt<OrdersTotal();cnt++)

{

OrderSelect(cnt, SELECT_BY_POS)
if(OrderOpenTime()!=0&&OrderMagic()==Mag)

{

///необходимая операция

}

}

je n'ai pas vérifié le code pour d'éventuelles erreurs !

 
Dans quel ordre la fonction OrderSelect(0,SELECT_BY_POS) renvoie-t-elle ? Lequel a été ouvert en premier ? Les commandes ne peuvent pas être échangées ? (Je n'utilise pas les ordres en attente)
 
AndreyK писал(а) >>
Quel ordre la fonction OrderSelect(0,SELECT_BY_POS) renvoie-t-elle ? Lequel a été ouvert en premier ? Les commandes ne peuvent-elles pas être échangées ? (Je n'utilise pas les ordres en attente)

Bien, lequel est le plus ancien. C'est pratique si vous savez avec certitude que vous ne pouvez avoir qu'un seul ordre ouvert en principe et que vous pouvez éviter le dépassement. Les ordres ne sont pas échangés, mais déplacés vers le plus petit lorsque le premier est fermé.

Raison: