[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 52

 
FAQ:

Complètement indépendant de cela. Peut-être que ça dépend d'autre chose, mais pas des tiques - j'ai vérifié. En général, la nouvelle construction a complètement changé le fonctionnement du terminal en ce qui concerne le flux d'EE. Maintenant, l'EA bouclée remplit clairement toutes les itérations de la boucle indépendamment de l'opération terminale, dans les anciennes versions, il y avait des retards dans le chargement du fil principal. Par ailleurs, la quantité de ressources CPU consommées par l'EA en boucle a été considérablement réduite.
J'ai également eu un problème similaire avec le terminal - il n'y avait pas de choses en boucle - il semblait que le terminal était occupé à traiter quelque chose... Lorsque j'ai essayé à plusieurs reprises d'appeler la fenêtre Propriétés avec ma souris - après 5-8 tentatives - elle s'est ouverte avec succès...
 
Roman.:
J'ai également eu un problème similaire avec le terminal - il n'y avait pas de boucle - il semblait que le terminal était occupé à traiter quelque chose... lorsque j'ai essayé à plusieurs reprises d'appeler la fenêtre des propriétés avec ma souris - après 5-8 tentatives - elle s'est ouverte avec succès...

C'est possible, mais ça n'a rien à voir avec les tiques.
 
FAQ:

Peut-être, mais ça n'a rien à voir avec les tics.

Je vois.
 

J'espère que je suis sur le bon sujet ; )

C'est plutôt une question nubienne, mais ça fait un moment que je suis bloqué dessus.

int total=OrdersTotal() ;

int Q,W ;
si (total == Q + W)

et ensuite j'ouvre plusieurs commandes différentes. Certains sont sous Q, d'autres sous W. Comment changer un ordre (par exemple, s'il se ferme) en Q, il rouvrira Q... S'ils sont tous deux fermés - Q et W, ils ne rouvriront que s'ils sont tous deux fermés.

 
Keda:

J'espère que je suis sur le bon sujet ; )

C'est plutôt une question nubienne, mais ça fait un moment que je suis bloqué dessus.

int total=OrdersTotal() ;

int Q,W ;
si (total == Q + W)

et ensuite j'ouvre plusieurs commandes différentes. Certains sont sous Q, d'autres sous W. Comment changer un ordre (par exemple, s'il se ferme) en Q, il rouvrira Q... Sinon, ils ne sont rouverts que si Q et W sont tous deux fermés.


Pour autant que vous le sachiez, les variables Q et W sont des entiers.

Ensuite, les ordres de certains entiers sont ouverts (comment voulez-vous dire ?) et vous demandez comment faire, si un ordre (d'un certain entier) est fermé, afin de rouvrir un autre entier. Maintenant ils s'ouvrent si deux entiers se ferment (lesquels quoi ?).

La question est super. Vous avez dit à juste titre : "La question est plutôt nubile". Exactement : un point essentiel pour poser des questions. Ne soyez pas naïf pour poser des questions, entraînez-vous à les poser de manière à être compris.

En attendant, vous devriez aller ici.

 

Je peux dire, d'après la question, que la personne qui la pose est totalement novice en matière de mql4. Merci pour la réponse, je comprends maintenant quel est le problème.

J'ai essayé de le comprendre et je me suis encore plus embrouillé. J'utilise 2 lots seulement. 2 lots différents s'ouvrent. Ils devraient travailler ensemble. Lorsque l'un d'entre eux se ferme, comment faire pour que celui qui était fermé s'ouvre à nouveau ? Lorsqu'un lot est fermé, l'autre travaille ensemble. Ce n'est que lorsque les deux lots sont fermés que deux lots sont ouverts. Je vous serais reconnaissant de me conseiller.

 
yosuf:
L'internet tombe souvent en panne, n'y a-t-il pas moyen de l'automatiser de manière programmatique pour le remettre en marche ? Ou ce qui est connu dans ce sens ? Existe-t-il un moyen d'alimenter deux ou plusieurs FAI en même temps, c'est-à-dire en parallèle ? Merci d'avance.
Il est plus facile et plus sûr pour votre argent d'utiliser le service VPS.
 
Keda:

Je peux dire, d'après la question, que la personne qui la pose est totalement novice en matière de mql4. Merci pour la réponse, je comprends maintenant quel est le problème.

J'ai essayé de le comprendre et je me suis encore plus embrouillé. J'utilise 2 lots seulement. 2 lots différents s'ouvrent. Ils devraient travailler ensemble. Lorsque l'un d'entre eux se ferme, comment faire pour que celui qui était fermé s'ouvre à nouveau ? Lorsqu'un lot est fermé, l'autre travaille ensemble. Ce n'est que lorsque les deux lots sont fermés que deux lots sont ouverts. Je vous serais reconnaissant de me conseiller.


Maintenant je comprends. Voici une estimation approximative :

int    Magic=123;

double Lot_Q=0.01;
double Lot_W=0.05;

bool   Flag_Q=False;
bool   Flag_W=False;


//Просматриваем все открытые ордера

for(int i = OrdersTotal() - 1; i >= 0; i--) 
  {
   OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
   if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)//Если это ордер данного символа и магика (т.е. открыт данным советником)
     {
      if(OrderLots()==Lot_Q) Flag_Q=True;//Если ордер с объемом Q есть среди открытых, присваиваем флагу Q истину.
      if(OrderLots()==Lot_W) Flag_W=True;//Если ордер с объемом W есть среди открытых, присваиваем флагу W истину.
     }
   }


//Проверяем условия нужности открытия - индикаторы, другие сигналы, и что там у Вас еще. И если есть сигнал

if(Flag_Q==False)//Только если ордер Q не открыт в настоящий момент
  {
   //Открытие ордера Q
  }

if(Flag_W==False)//Только если ордер W не открыт в настоящий момент
  {
   //Открытие ордера W
  }
 
Oh super, ça y est. Merci.
 

Bonjour à nouveau) Bonjour ! Pouvez-vous me dire comment écrire ceci d'une manière plus compacte ?

        for (i=4; i<7; i++){
        sum+=GetPrcD1(symb[i]);
        Content[5][1]=DoubleToStr(sum/3,3);
        }
        
        for (i=7; i<10; i++){
        sum+=GetPrcD1(symb[i]);
        Content[6][1]=DoubleToStr(sum/3,3);
        }

        for (i=10; i<13; i++){
        sum+=GetPrcD1(symb[i]);
        Content[7][1]=DoubleToStr(sum/3,3);
        }

        for (i=13; i<16; i++){
        sum+=GetPrcD1(symb[i]);
        Content[8][1]=DoubleToStr(sum/3,3);
        }

        for (i=16; i<19; i++){
        sum+=GetPrcD1(symb[i]);
        Content[9][1]=DoubleToStr(sum/3,3);
        }