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

 
Alexey Kozitsyn:
Disons-le comme ça. Vous montrez le code qui passe les commandes avec une explication de la façon dont il devrait le faire et seulement alors nous pourrons dire ce qui est bien et ce qui est mal. Le simple nom des fonctions ne vous aidera pas à vous rapprocher du résultat.

Bonjour ... merci d'avoir accepté de m'aider ... Il semblait qu'une petite entreprise, pour sonner la fermeture des commandes, pourrait être faite simplement en ajoutant l'événement requis au dossier approprié - il s'est avéré ne pas être si facile .... Voici un exemple de code que j'ai pris dansMQL4 ReferenceTrading Functions:

intOrdersHistoryTotal() ;

// récupération d'informations dans l'historique des échanges
int i,accTotal=OrdersHistoryTotal() ;
for(i=0;i<accTotal;i++)
{
//---- vérifier le résultat de la sélection
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Erreur d'accès à la base de données de l'historique (",GetLastError(),"));
pause;
}
// travailler avec un ordre ...

}

... La fonction renvoiele montant des ordres fermés et supprimés dans l'historique du compte courant chargé dans le terminal client. La taille de la liste de l'historique dépend des paramètres actuels de l'onglet "Historique du compte" du terminal.

Je ne comprends pas comment il va les rechercher et pourquoi il est nécessaire... Peut-être faut-il les mémoriser et les écarter, pour qu'elles ne soient pas un obstacle ?

Nous sommes censés faire retentir les commandes nouvellement fermées au moment où elles sont fermées par un bref signal sonore. Tous les ordres à fermer dans mon terminal client sont de deux types seulement : parmoyenneTrailStopLoss etTakeProfit. Lors de la clôture d'un ordre (ou d'un groupe d'ordres), quelle que soit la direction (vente ou achat), ils doivent être séparés uniquement par unStopLossou unTakeProfit etenvoyés à la fonctionPlaySoundcorrespondante.

Справочник MQL4
Справочник MQL4
  • docs.mql4.com
Справочник MQL4
 
bablusut:

Bonjour ... merci d'avoir accepté de m'aider ... Il semblait qu'une petite entreprise, pour sonner la fermeture des commandes, pourrait être faite simplement en ajoutant l'événement requis au dossier approprié - il s'est avéré ne pas être si facile .... Voici un exemple de code que j'ai pris dansMQL4 ReferenceTrading Functions:

intOrdersHistoryTotal() ;

// récupération d'informations dans l'historique des échanges
int i,accTotal=OrdersHistoryTotal() ;
for(i=0;i<accTotal;i++)
{
//---- vérifier le résultat de la sélection
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Erreur d'accès à la base de données de l'historique (",GetLastError(),"));
pause;
}
// travailler avec un ordre ...

}

... La fonction renvoiele montant des ordres fermés et supprimés dans l'historique du compte courant chargé dans le terminal client. La taille de la liste de l'historique dépend des paramètres actuels de l'onglet "Historique du compte" du terminal.

Je ne comprends pas comment il va les rechercher et pourquoi il est nécessaire... Peut-être est-il nécessaire de les mémoriser et de les écarter, afin qu'elles ne soient pas un obstacle ?

Nous sommes censés faire retentir les commandes nouvellement fermées au moment où elles sont fermées par un bref signal sonore. Tous les ordres à fermer dans mon terminal client sont de deux types seulement : parmoyenneTrailStopLoss etTakeProfit. Lors de la clôture d'un ordre (ou d'un groupe d'ordres), quelle que soit la direction (vente ou achat), ils doivent être séparés uniquement par la commande de clôtureStopLossouTakeProfitet envoyés à la fonctionPlaySoundcorrespondante.

La recherche doit être effectuée dans l'ordre inverse, puisque 0 est le tout premier. accTotal-1 est le dernier. Dans ce code, après "// travailler avec l'ordre", mémorisez le commentaire et vérifiez s'il y a un commentaire de clôture sur le SL ou le TP.
 
Alexey Kozitsyn:
Les ordres doivent être recherchés dans l'ordre inverse puisque 0 est le tout premier. accTotal-1 est le dernier. Dans ce code, après "// travailler avec l'ordre" se souvenir du commentaire et vérifier s'il y a un commentaire de clôture pour le SL ou le TP.

intOrdersHistoryTotal() ;

// récupération d'informations dans l'historique des échanges
int i,accTotal=OrdersHistoryTotal() ;
for(i=0;i<accTotal;i++)
{
//---- vérifier le résultat de la sélection
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Erreur d'accès à la base de données de l'historique (",GetLastError(),"));
pause;
}
// travailler avec un ordre ...

}

stringOrderComment() ;

commentaire de la chaîne;
si(OrderSelect(10,SELECT_BY_TICKET)==false)
{
Print("OrderSelect() a retourné une erreur ",GetLastError()) ;
retour(0) ;
}
commentaire=OrderComment() ;

// ...

Merci pour la réponse ... Après avoir ajouté le code de la fonctionOrderComment,(MQL4Trading FunctionsReference) qui renvoie le commentaire d'un ordre sélectionné à l'aide de la fonction OrdersHistoryTotal, le code ressemble à ceci ... Et n'avons-nous pas une fonction qui suit les nouvelles commandes fermées dans l'historique du terminal ?"0 - tout premier. accTotal-1 - dernier" - nous voulons dire "premier fermé" et "dernier fermé" dans l'historique du terminal, est-ce par temps ... ? Est-ce que j'ai bien compris ?


Справочник MQL4
Справочник MQL4
  • docs.mql4.com
Справочник MQL4
 
bablusut:

mais n'avons-nous pas une fonction pour suivre les nouveaux ordres fermés dans l'historique du terminal ?

Il n'y en a pas de standard.

  int i,accTotal=OrdersHistoryTotal();
  string comment;
  for(i=accTotal-1;i>=0;i++)
    {
     //---- check selection result
     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
       {
        Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
        break;
       }
     // работа с ордером ...
     comment = OrderComment();
     // Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
    }
Pour déterminer la présence d'une ligne dans une autre - utilisez les fonctions de travail avec les lignes.
 
Alexey Kozitsyn:

Il n'y en a pas de standard.

  int i,accTotal=OrdersHistoryTotal();
  string comment;
  for(i=accTotal-1;i>=0;i++)
    {
     //---- check selection result
     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
       {
        Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
        break;
       }
     // работа с ордером ...
     comment = OrderComment();
     // Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
    }
Pour déterminer si une chaîne est présente dans l'autre - utilisez les fonctions de chaîne.

Merci... Vous voulez dire la fonction StringFind = Rechercher une sous-chaîne dans une chaîne de caractères.

int StringFind(
string string_value, //la chaîne de caractères que nous recherchons
string match_substring, //ce que nous recherchons
int start_pos=0 //où commencer la recherche

) ;

Paramètres
valeur_chaîne
[in] Chaîne à rechercher.
correspondance_sous-chaîne
[in] Sous-chaîne de correspondance à rechercher.
start_pos=0
[in] Position dans la chaîne de caractères où la recherche doit être lancée.
Valeur retournée

Renvoie le numéro de position dans la chaîne où commence la sous-chaîne à rechercher, ou -1 si aucune sous-chaîne n'est trouvée.

... ou la fonctionStringCompare-Comparaison de deux chaînes de caractères?...


StringCompare - Строковые функции - Справочник MQL4
StringCompare - Строковые функции - Справочник MQL4
  • docs.mql4.com
StringCompare - Строковые функции - Справочник MQL4
 
bablusut:

Merci... Vous voulez dire la fonction StringFind = Rechercher une sous-chaîne dans une chaîne de caractères.

int StringFind(
string string_value, // la chaîne de caractères que nous recherchons
string match_substring, //ce que nous recherchons
int start_pos=0 //où commencer la recherche

) ;

Paramètres
valeur_chaîne
[in] Chaîne à rechercher.
correspondance_sous-chaîne
[in] Sous-chaîne de correspondance à rechercher.
start_pos=0
[in] Position dans la chaîne de caractères où la recherche doit être lancée.
Valeur retournée

Renvoie le numéro de position dans la chaîne où commence la sous-chaîne à rechercher, ou -1 si aucune sous-chaîne n'est trouvée.

...


C'est vrai.
 
Alexey Kozitsyn:
Correct.

Merci... le code sera alors le suivant :

 int i,accTotal=OrdersHistoryTotal();
  string comment;
  for(i=accTotal-1;i>=0;i++)
    {
     //---- check selection result
     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
       {
        Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
        break;
       }
     // работа с ордером ...
     comment = OrderComment();
     // Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
    }

int  StringFind(
   string  string_value,        // строка, в которой ищем
   string  match_substring,     // что ищем
   int     start_pos=0          // с какой позиции начинать поиск

   ); 



 

 
bablusut:

Merci... le code prendra alors la forme de :

 int i,accTotal=OrdersHistoryTotal();
  string comment;
  for(i=accTotal-1;i>=0;i++)
    {
     //---- check selection result
     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
       {
        Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
        break;
       }
     // работа с ордером ...
     comment = OrderComment();
     // Проверяем, есть ли в комментарии признак закрытия ордера по ТП или СЛ
    }

int  StringFind(
   string  string_value,        // строка, в которой ищем
   string  match_substring,     // что ищем
   int     start_pos=0          // с какой позиции начинать поиск

   ); 



 

Non. Essayez de comprendre ce que vous faites. Ce que vous avez écrit n'est qu'un prototype de fonction (c'est-à-dire une simple description de ce qu'elle fait). Donc tu as juste arraché une partie de la documentation. Vous devez l'utiliser. Vous devez donc substituer vos propres valeurs aux arguments. Et la fonction renverra le résultat. Ensuite, ce résultat doit être traité.
 

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Questions des débutants

A1exPit, 2016.11.30 22:14

Pouvez-vous me dire par OrderSelect by SELECT_BY_POS quelle commande 0 est la dernière placée ou la première ? J'essaye dans les deux sens et vice versa, mais l'erreur modifier #0 s'envole.

 
Vladimir Karputov:

regardons le code.
Raison: