Questions des débutants MQL4 MT4 MetaTrader 4 - page 120

 
Ihor Herasko:

Oui, je peux voir ça. Et je vois la réponse à la question dans le message ci-dessoushttps://www.mql5.com/ru/forum/160587/page115#comment_6521492. En d'autres termes, le problème est que la fonctionnalité n'est pas divisée en sous-tâches logiques. Vous avez regroupé : l'analyse des ordres, la décision d'une action commerciale et l'exécution d'une transaction.

Une telle tâche peut être résolue exactement en trois étapes :

  1. Collecte d'informations sur les commandes à surveiller par le programme. C'est exactement la boucle que vous avez déjà. Le résultat de ce cycle doit être le tableau des commandes.
  2. Calcul des signaux de trading. Le résultat du calcul est une commande d'ouverture et/ou de fermeture des ordres. Cela dépend de la stratégie de trading. Auparavant, lorsqu'il n'y avait pas d'énumération, j'utilisais les codes suivants : 0 - pas de signal, 1 - achat ouvert, -1 - vente ouverte, 2 - achat fermé, -2 - vente fermée.
  3. Exécution d'une opération commerciale. S'il existe un signal de transaction et que l'un des ordres (point 1) lui convient, une opération de transaction est effectuée. Ensuite, l'algorithme entier est relancé à partir du point 1. Dans certains cas, nous quittons même OnTick afin de continuer avec le tick suivant.

Eh bien, merci. Au moins, ce qu'il faut faire est clair. Je vais essayer de trouver "comment" le faire moi-même. Bien que je ne sois pas encore familier avec les tableaux. Merci quand même.

 

Dites-moi comment m'en sortir ! !!


for(int i=OrdersTotal()-1 ; i>=0 ; i--)

{

OrderSelect(i,SELECT_BY_POS) ;

if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)

pause ;

L'avertissement est le suivant : la valeur de retour de 'OrderSelect' doit être vérifiée.

Commentvérifier autrementcette valeur"OrderSelect"?

si je fais ceci : j=OrderSelect() ; Est-ce correct ?


 
Rewerpool:

Dites-moi comment m'en sortir ! !!


for(int i=OrdersTotal()-1 ; i>=0 ; i--)

{

OrderSelect(i,SELECT_BY_POS) ;

if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)

pause ;

L'avertissement est le suivant : la valeur de retour de 'OrderSelect' doit être vérifiée.

Commentvérifier autrementcette valeur"OrderSelect"?

si je fais ceci : j=OrderSelect() ; Est-ce correct ?


 if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
 
Alekseu Fedotov:

Ça n'a pas marché !

((((

 
J'ai écrit dans le fichier, tout va bien, mais maintenant comment puis-je sauvegarder des données telles que "eurusd" "1.2242". données temporaires, etc.
 
Mickey Moose: Je l'ai écrit dans un fichier, tout va bien, mais maintenant comment puis-je espacer les données, par exemple "eurusd" "1.2242". données temporaires, etc.

string s=FileReadString(F1) ; // Lire la ligne suivante du fichier texte
StringSplit(s, "," , a) ; // Séparer les éléments séparés par des virgules dans un tableau
datetime T1=StrToTime(a[4]) ; // La transformation se poursuit ...
int ord=StrToInteger(a[8]) ;
double Price=StrToDouble(a[12]) ;

 
novichok2018:

Eh bien, merci. Au moins, ce qu'il faut faire est plus clair. Je vais essayer de trouver le "comment" moi-même. Je ne suis pas encore familier avec les tableaux, cependant. Quoi qu'il en soit, merci encore.

Écrivez au moins un bloc et montrez-moi. Ils vous en diront plus dans ce cas.

 
Rewerpool:

Ça n'a pas aidé !


Lisez-le attentivement, encore une fois.

 if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

Tout le code ressemblera à ceci

   for(int i=OrdersTotal()-1; i>=0; i--) 
     {
     if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
        {
       if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)
          {
         break;
          }
        }
      }
 
Rewerpool:

Ça n'a pas marché !


Donc vous n'avez rien fait. Vous l'avez écrit plus haut :

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

Et vous l'avez écrit sans vérifier. Bien que ce soit plus lisible de cette façon :

for (int i = OrdersTotal() - 1; i >= 0; --i)
{
   if (!OrderSelect(i, SELECT_BY_POS))
      continue;
   ....
}
 

@Ihor Herasko @Alekseu Fedotov

MERCI ! !! ÇA A MARCHÉ COMME ÇA !

Raison: