Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1948

 
Vitaly Muzichenko #:

Vous devez prendre en compte le coût de l'article.

Je peux vous donner le code, mais il faudra beaucoup de temps pour le comprendre, il est gros, il prend aussi en compte le lot maximum possible sur la marge

Si je ne peux pas le faire, je poserai des questions))) Bien sûr, il faut tenir compte de la valeur du point et la formule n'est pas une formule en deux étapes. J'ai du mal à ne pas comprendre entièrement les termes, et vérifier l'exactitude des hypothèses prend du temps))). La valeur du contrat = la valeur d'un lot en jour d'argent calculé))))

 

Bonjour, veuillez m'indiquer comment retourner une valeur à partir d'une liste de constantes sous forme de texte.

Par exemple, la fonction HistoryDealGetInteger renvoie la valeur int de la listeENUM_DEAL_TYPE lors de la demande de l'événement. Comment pouvons-nous obtenir l'information du numéro retourné qu'il s'agit de "DEAL_TYPE_CREDIT - credit accrual". Après le débogage, cette valeur ne sera bien sûr pas nécessaire, int sera suffisant pour traiter l'événement, mais pendant le débogage, on ne sait pas du tout ce que signifient les nombres 3 ou 5 renvoyés par la fonction.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Свойства сделок - Торговые константы - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Кирилл Якимов #:

Bonjour, veuillez m'indiquer comment retourner une valeur à partir d'une liste de constantes sous forme de texte.

Par exemple, la fonction HistoryDealGetInteger renvoie la valeur int de la listeENUM_DEAL_TYPE lors de la demande de l'événement. Comment pouvons-nous obtenir l'information du numéro retourné qu'il s'agit de "DEAL_TYPE_CREDIT - credit accrual". Après le débogage, cette valeur ne sera bien sûr pas nécessaire, int sera suffisant pour traiter l'événement, mais pendant le débogage, on ne sait pas du tout ce que signifient les nombres 3 ou 5 renvoyés par la fonction.

string s = EnumToString((ENUM_DEAL_TYPE) x)

 
Maxim Kuznetsov #:

string s = EnumToString((ENUM_DEAL_TYPE) x)

Merci beaucoup, ça m'a aidé.
 

Pouvez-vous me dire comment résoudre le problème :

1) Je n'ai pas chargé l'historique, dans la fenêtre du graphique, pendant le processus en ligne, j'ai eu le temps de charger 70 000 barres minutes. Je charge mon conseiller expert dans le testeur de stratégie et au cas où j'aurais écrit le nombre minimum de barres pour un certain modèle, il répond par "pas assez de barres pour l'analyse". J'imprime iBars et ça dit 1200 barres. J'ai chargé l'historique (8 000 000 de barres). Redémarré, les paramètres montrent des barres "9999999999" dans la fenêtre et l'historique. Nova écrit "pas assez d'histoire". Imprimer les iBars, encore 1200. Qu'est-ce que c'est et comment le résoudre ?

2) Dans l'analyse multidevises, comment puis-je forcer l'indicateur à ne pas manquer les nouveaux ticks entrants sur d'autres paires de devises, si les cotations sont soudainement gelées sur le graphique actuel et que OnTick n'appelle pas la vérification ? J'ai essayé OnTimer mais cela ne fonctionne pas dans le testeur.

 
Dans ce script, j'expérimente le redimensionnement de tableaux dynamiques qui ont des directions d'indexation différentes - afin de comprendre de quel côté les nouvelles cellules apparaissent après avoir augmenté la taille du tableau
.
void OnStart()
  {
   
   int a[], b[], size = 5, new_size = size + 5;
   
   if( ArraySize( a ) != size )
     ArrayResize( a, size, 0 );
   
   if( ArraySize( b ) != size )
     ArrayResize( b, size, 0 );
   
   if( ArrayGetAsSeries( a ) )
     ArraySetAsSeries( a, false );
   
   if( !ArrayGetAsSeries( b ) )
     ArraySetAsSeries( b, true );
   
   for( int i = 0; i < size; i++ )
     {
      a[i] = i;
      b[i] = i;
     };
   
   ArrayResize( a, new_size, 0 );
   ArrayResize( b, new_size, 0 );
   
   for( int i = 0; i < new_size; i++ )
     {
      Alert( "a", i, " ", a[i] );
      Alert( "b", i, " ", b[i] );
      Alert(" ");
     };
   
  }

Et voici le résultat


Il s'avère que le tableau b[] (qui a une indexation inverse) duplique en quelque sorte ses valeurs après avoir augmenté la taille

. Pourquoi ? Est-ce que j'ai manqué quelque chose ou est-ce que j'ai fait une erreur ?
 
Alexandr Sokolov directions d'indexation différentes - afin de comprendre de quel côté les nouvelles cellules apparaissent après avoir augmenté la taille du tableau

Et voici le résultat


Il s'avère que le tableau b[] (qui a une indexation inverse) a en quelque sorte des valeurs dupliquées après avoir augmenté la taille

Pourquoi ? Est-ce que j'ai manqué quelque chose ou est-ce que j'ai fait une erreur ?

Dans tous les cas, nous ne pouvons pas compter sur les valeurs des nouvelles cellules du tableau - ce sont des variables non initialisées qui peuvent contenir n'importe quoi.

 
Alexandr Sokolov directions d'indexation différentes - afin de comprendre de quel côté les nouvelles cellules apparaissent après avoir augmenté la taille du tableau

Et voici le résultat


Il s'avère que le tableau b[] (qui a une indexation inverse) a en quelque sorte des valeurs dupliquées après avoir augmenté la taille

Pourquoi ? Est-ce que j'ai manqué quelque chose ou est-ce que j'ai fait une erreur ?

Vous devez retourner le tableau après qu'il ait été rempli.

 
JRandomTrader #:

De toute façon, nous ne pouvons pas compter sur les valeurs des nouvelles cellules du tableau - ce sont des variables non initialisées qui peuvent contenir n'importe quoi.

C'est vrai, mais il y a 2 buts
1) La mise en miroir est observée pour toute autre taille, pas seulement, comme dans mon exemple - 5
2) Si un tableau a une indexation inverse, alors les nouvelles cellules devraient apparaître au début du tableau - ce qui n'est pas le cas.

 
Alexey Viktorov #:

Vous devez retourner le tableau après l'avoir rempli.

J'ai également pensé à cela - en tout cas, je ne vois pas d'autre solution pour le moment.

Raison: