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

 
bablusut:

Merci pour la réponse ... Ainsi, pour rechercher des ordres dans l'historique des transactions, nous utilisons la fonctionOrdersHistoryTotal, qui, après avoir éliminé tout ce dont nous n'avons pas besoin, ressemble à ceci

for(int i=OrdersHistoryTotal()-1; i>=0; i--) // - la question ici est de savoir ce que signifie "accTotal" dans le modèle de fonction que nous avons écarté, et pourquoi vous avez pris "i--" et non "i++" comme dans le modèle ?
- la seconde fonctionOrderComment renvoie le commentaire de la commande sélectionnée si elle est sélectionnée par la fonction précédenteOrdersHistoryTotal, prend la forme de

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) //- où "i", c'est "i>=0" de la fonction précédente, et "SELECT_BY_TICKET" a été remplacé par "SELECT_BY_POS" et "MODE_HISTORY" a été ajouté- pourquoi ?

- La troisième ligne est une définition, nous n'avons pas réellement besoin de vérifier l'ordre nécessaire puisque nous n'avons que des ordres de marché fermés par TP et SL dans cet historique (nous pourrions avoir un ordre en attente fermé, mais ce sera rare), tous les autres paramètres d'ordre ne sont pas importants pour nous. La seule chose importante est que la quantité de commandes fermées dans l'historique va constamment augmenter, est-il possible de faire en sorte que notre recalcul prenne une certaine quantité des dernières commandes, par exemple, 5-10, et pas toutes ?

- Les quatre dernières lignes sont assez claires, la seule question concerne la fonction PlaySound, dont le code doit être inséré après chaque ligne"Print("..." comme ceci



OrderComment renvoie le commentaire de l'ordre sélectionné, s'il a été sélectionné par la fonction précédenteOrdersHistoryTotal - cette fonction ne sélectionne rien - elle renvoie le nombre total d'ordres fermés et supprimés(Le nombre d'ordres fermés et supprimés dans l'historique du compte courant, chargé dans le terminal du client. La taille de la liste de l'historique dépend des paramètres actuels de l'onglet "Historique du compte" du terminal. Citation du tutoriel).


accTotal dans l'exemple du tutoriel :

int i,accTotal=OrdersHistoryTotal(); - Il s'agit d'une variable int - prenant la valeur OrdersHistoryTotal
for(i=0;i<accTotal;i++)// La façon de boucler la liste d'historique n'a pas d'importance de la première à la dernière commande ou vice versa, elle passe toujours par toute la liste en séquence.

Mais dans le cas précédent, nous avons une variable de moins, mais la requête OrdersHistoryTotalest traitée à chaque cycle.

SELECT_BY_POS - le paramètre d'indexation contient le numéro d'index de l'ordre dans la liste, la liste elle-même est le deuxième opérateur - MODE_HISTORY est la liste des dossiers fermés, MODE_TRADES - ouverts ou en attente. SELECT_BY_TICKET - le numéro du billet est transmis dans le paramètre index. Qui devrait être prise quelque part avant que la commande soit sélectionnée.


-

Les quatre dernières lignes sont généralement claires, la seule question concerne la fonction PlaySound, dont le code doit être inséré après chaque ligne "Print("..."

sous la

forme suivante:

bool PlaySound(

string payment // nom du fichier

)

; .

..

Ou est-il également converti d'une manière ou d'une autre ?

Déclarez

bool PlaySound( dans l'en-tête du programme - vous aurez la possibilité d'activer et de désactiver le son dans le fichier défini extern bool Play = TRUE ;

alors que va imprimer Print ? Et à quelle condition ?

Quel est le but de cette action ? Pour jouer un son lorsque l'ordre est fermé et pour écrire le commentaire (par TP ou SL) ?






 
bablusut:
Mercià Vitalie Postolache pour l'aide, merci pour les conseils, et les informations sur ces manuels est probablement un peu tard pour moi d'étudier dans ma sixième décennie, je ne peux probablement pas faire autant, je devrais avoir plus tôt, mais il n'y avait pas de temps. Je vous ennuie vraiment ici, désolé si c'est le cas, je ne vais pas continuer, je m'en vais.
Je préfère avoir un sujet séparé, je veux que ça fonctionne comme ça. Je serai intéressé, par exemple, de voir différentes options et aussi de comprendre laquelle est la plus correcte du point de vue de la logique.
 

Au fait, j'ai aussi une question.

J'ai besoin de faire un chèque en bois.

J'ai utilisé une simple demande de sa valeur et l'interdiction d'ouvrir un ordre si l'écart dépasse la valeur spécifiée.

Mais ce qui s'est passé, c'est que lorsque le spread diminue, l'EA ouvre un ordre et ce spread augmente.

Je n'arrive pas à trouver la bonne façon de le prendre en compte : si nous ajoutons l'écart au tableau à chaque tick, quelle sera la taille du tableau ? Et puis, combien de temps cela va-t-il durer ?

Bien sûr, nous pouvons ne pas utiliser des valeurs similaires ou utiliser uniquement des valeurs plus petites et plus grandes, mais dans ce cas, nous devons le remettre à zéro d'une manière ou d'une autre.

Et surtout, je n'arrive pas à comprendre si je dois prendre en compte le spread minimum et maximum ou une indication de ses sauts.
 
struct MqlRates
  {
   datetime time;         // время начала периода
   double   open;         // цена открытия
   double   high;         // наивысшая цена за период
   double   low;          // наименьшая цена за период
   double   close;        // цена закрытия
   long     tick_volume;  // тиковый объем
   int      spread;       // спред
   long     real_volume;  // биржевой объем
  };
Pouvez-vous me dire quelle est la valeur de l'écart qui sera sauvegardé ? L'état au début de l'ouverture du bar ?
 
A1exPit:
struct MqlRates
  {
   datetime time;         // время начала периода
   double   open;         // цена открытия
   double   high;         // наивысшая цена за период
   double   low;          // наименьшая цена за период
   double   close;        // цена закрытия
   long     tick_volume;  // тиковый объем
   int      spread;       // спред
   long     real_volume;  // биржевой объем
  };
Pouvez-vous me dire quelle valeur de Spread sera sauvée ? Est-ce l'état au début de l'ouverture du bar ?

int spread ;// spread

c'est-à-dire pas de

 
A1exPit:
struct MqlRates
  {
   datetime time;         // время начала периода
   double   open;         // цена открытия
   double   high;         // наивысшая цена за период
   double   low;          // наименьшая цена за период
   double   close;        // цена закрытия
   long     tick_volume;  // тиковый объем
   int      spread;       // спред
   long     real_volume;  // биржевой объем
  };
Pouvez-vous me dire quelle est la valeur de l'écart qui sera sauvegardé ? Est-ce l'état au début de l'ouverture du bar ?
Si vous demandez la barre actuelle, alors le spread actuel, si à partir de l'historique, alors au moment de la fermeture.
 
Vitalie Postolache:
Si vous demandez la barre actuelle, alors le spread actuel, si à partir de l'historique, alors au moment de la fermeture.
Merci.
 

Je comprends bien que pour écrire des données dans le tableau, vous devez attribuer à chaque cellule une valeur différente array1[i] = x ; indiquant un numéro de cellule spécifique.

ou le tableau peut-il être rempli séquentiellement à partir de i=0 ?

 
A1exPit:

Je comprends bien que pour écrire des données dans le tableau, vous devez attribuer à chaque cellule une valeur différente array1[i] = x ; indiquant un numéro de cellule spécifique.

ou le tableau peut-il être rempli séquentiellement à partir de i=0 ?

quelle est la différence ? il me semble que ce sont juste deux façons différentes
 
Renat Akhtyamov:
Quelle est la différence ? Je pense que c'est juste deux chemins différents.
Je voulais dire que lorsque vous passez des données à un tableau, celui-ci se remplira séquentiellement, c'est-à-dire array1[] = x ; dans quelle cellule la valeur de x sera-t-elle écrite si le numéro de la cellule n'est pas explicitement spécifié ?
Raison: