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

 
Mihail Matkovskij:

Mais il faudra beaucoup d'ajustements avant que ce code puisse être utilisé dans le trading réel...

Oui, je comprends. Il est peu probable que l'on en arrive à un commerce entièrement automatique. Vous devez tester minutieusement vos idées de trading sur une longue période de temps avec un grand nombre de transactions.

Sans le testeur, il est impossible de vérifier une idée de manière qualitative, ce qui est regrettable. L'optimisation des paramètres de la stratégie est également malheureuse. Le testeur rend le processus très facile.

 
Alexey Viktorov:

Je n'ai jamais pensé que je devrais vous citer sur la documentation...

... .. .l'heure de clôture de l'ordre est 0...

Merci, je ne le pensais pas non plus. Je ne l'ai pas fait souvent, mais j'ai dû échantillonner un ticket et je n'ai jamais eu de problème, apparemment parce que j'ai fait le tour de ceux du marché.

 
Igor Makanu:
Alexey Viktorov:

Merci !

 

Bonjour. Essayer de trouver des erreurs de calcul dans l'indicateur. Émet une valeur Close[0] (utilisée ci-dessous) via Alert. Produit un nombre avec 4 décimales, le courtier a cinq chiffres.

Alert(Close[0]);

Qu'est-ce que je fais de mal ? Merci.

 
Oleg Bondarev:

Bonjour. Essayer de trouver des erreurs de calcul dans l'indicateur. Émet une valeur Close[0] (utilisée ci-dessous) via Alert. Produit un nombre avec 4 décimales, le courtier a cinq chiffres.

Qu'est-ce que je fais de mal ? Merci.

Et où avez-vous trouvé Close[0] ? Il serait intéressant de jeter un coup d'oeil au code source, car vous n'êtes pas sur un forum de voyants... :)

 

Bonjour, aidez-moi à trouver une issue - problème !

#define           Pmax 1200   //размер массива по периоду
double           ExtBuffer[];

//+------------------------------------------------------------------+
//| Структура для хранения данных Фибо                               |
//+------------------------------------------------------------------+
struct PosFib
  {
   double            period[Pmax]; 
  };

int OnCalculate(const int rates_total,....)
{
   PosFib BP[Pmax];
   
   for(int p=2; p<Pmax; p++) // отбор по периодам
      for(int b=prev_calculated>Pmax?prev_calculated:Pmax; b<rates_total; b++)
        {
         BP[b].period[p]=sm.d[p-1].m[b];
        }

   return(rates_total);
}

Lors de la compilation, il y a un avertissement - la taille des variables locales est trop grande (plus de 512kb).

Quelle est l'importance de cet avertissement ?


 
Top2n:

Bonjour, aidez-moi à trouver une issue - problème !

Lors de la compilation, il y a un avertissement - la taille des variables locales est trop grande (plus de 512kb).

Veuillez me conseiller sur la manière de contourner cette situation !

int OnCalculate(const int rates_total,....)
{
   PosFib BP[];
   ArrayResize(BP, Pmax);
....

SZY : il est pratique d'utiliser les tampons des indicateurs pour les calculs (INDICATOR_CALCULATIONS), si vous avez des problèmes, utilisez-les à la place.

 
Igor Makanu:

Merci.

 

Bonne journée à vous tous !

Question sur MQL-4.
Il existe une fonction ArrayBsearch( S_L,Ask,WHOLE_ARRAY,0,MODE_ASCEND) ;. Elle recherche un élément d'un tableau pré-trié. Si le tableau est à deux dimensions, cette fonction recherche uniquement un élément dans la première dimension.

Q. Quelle fonction ou construction linguistique peut être utilisée pour trouver l'élément requis dans la deuxième dimension du tableau? J'ai un tableau à deux dimensions avec deux rangées.

10,9,8,7,6,5,4,3,2,1

10,3,8,9,2,1,1,8,8,6
Comment puis-je trouver l'élément du tableau avec la valeur que je veux dans la ligne du bas et non dans celle du haut ? Parce que ArrayBsearch( ) ne recherche que dans la ligne supérieure.
Merci pour votre aide.

 
ANDREY:

Bonne journée à vous tous !

Question sur MQL-4.
Il existe une fonction ArrayBsearch( S_L,Ask,WHOLE_ARRAY,0,MODE_ASCEND) ;. Elle recherche un élément d'un tableau pré-trié. Si le tableau est à deux dimensions, cette fonction recherche uniquement un élément dans la première dimension.

Q. Quelle fonction ou construction linguistique peut être utilisée pour trouver l'élément requis dans la deuxième dimension du tableau? J'ai un tableau à deux dimensions avec deux rangées.

10,9,8,7,6,5,4,3,2,1

10,3,8,9,2,1,1,8,8,6
Comment puis-je trouver l'élément du tableau avec la valeur que je veux dans la ligne du bas au lieu de la ligne du haut ? Parce que ArrayBsearch( ) ne recherche que dans la ligne supérieure.
Merci pour votre aide.

Dans MQL4, je n'ai que cette méthode :

//+------------------------------------------------------------------+
//|                                                  FindInArray.mq4 |
//|                                       Copyright 2020, © Cyberdev |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, © Cyberdev"
#property version   "1.00"
#property strict

#property script_show_inputs

#define  size1 2 
#define  size2 10

input double value1 = 3;
input double value2 = 8;

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() {
  double array[size1][size2] = {
    {10,9,8,7,6,5,4,3,2,1}, 
    {10,3,8,9,2,1,1,8,8,6}
  };
  
  double bufer[size2];
  
  int i;
  
  int index;
  
  string str;
  
  i = 0;
  for(; i < size2; i++) {
    bufer[i] = array[0, i];
  }
  
  ArraySort(bufer, WHOLE_ARRAY, 0, MODE_ASCEND);
  
  index = ArrayBsearch(bufer, value1, WHOLE_ARRAY, 0, MODE_ASCEND);
  
  str = "";
  
  i = 0;
  for(; i < size2; i++) {
    array[0, i] = bufer[i];
    str += (string)array[0, i] + ((i != size2 - 1) ? ", " : "");
  }
  
  Print("array[0]: {" + str + "}");
  
  Print("value1 array[0]["+(string)index+"]: ", array[0][index]);
  
  
  i = 0;
  for(; i < size2; i++) {
    bufer[i] = array[1, i];
  }
  
  ArraySort(bufer, WHOLE_ARRAY, 0, MODE_ASCEND);
  
  index = ArrayBsearch(bufer, value2, WHOLE_ARRAY, 0, MODE_ASCEND);
  
  str = "";
  
  i = 0;
  for(; i < size2; i++) {
    array[1, i] = bufer[i];
    str += (string)array[1, i] + ((i != size2 - 1) ? ", " : "");
  }
  
  Print("array[1]: {" + str + "}");
  
  Print("value2 array[1]["+(string)index+"]: ", array[1][index]);
}
//+------------------------------------------------------------------+

Résultat :

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30 : valeur2 array[1][6] : 8.0

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30 : array[1] : {1, 1, 2, 3, 6, 8, 8, 8, 9, 10}

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30 : valeur1 array[0][2] : 3.0

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30 : array[0] : {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}


Dossiers :
Raison: