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

 
Andrey Sokolov:

Salutations. Vous pouvez me dire quelque chose ?

Est-il possible d'obtenir le nom d'une variable au lieu de sa valeur ? Par exemple, imprimer un nom de variable.

#define PRINTVAR(x) Print(" " ##x); Print(x)
void OnStart()
  {
      long anyvar=(long)TimeLocal();
      PRINTVAR(anyvar);
  
  }

résultat :

2020.08.24 14:46:05.394    test (USDCHF,H1)     anyvar
2020.08.24 14:46:05.394    test (USDCHF,H1)    1598280365

Eventuellement une fonctionnalité de l'inédit :-) similaire à "C", mais pas encore utilisable

 
Andrey Sokolov:

Vous devez obtenir le nom de la variable elle-même.

Sans connaître le nom, et sans aucun signe distinctif, cela ne peut se faire. Vous pouvez, par exemple, obtenir les noms de toutes les variables égales à 5 et imprimer leurs noms, trouvé, imprimé. Ou les noms de toutes les variables de type chaîne. Mais dans tous les cas, il s'agit d'une énumération de variables.

 
 
Andrey Sokolov:
Maxim Kuznetsov Merci


Oui, il s'agit aussi de sélectionner une variable par son nom.

Par exemple, il existe des variables a1, a2, a3, a4, a5, etc. Vous devez également chercher parmi ces variables, choisir celle qui a "a" et 5, et l'utiliser.

alors il n'y a pratiquement aucun moyen. Les noms de variables ne sont accessibles qu'à partir du préprocesseur (#macros).

Nous devons modifier la logique interne, par exemple en utilisant un tableau de hachage d'objets contenant des noms au lieu de variables. La clé et la valeur sont alors disponibles en même temps. Ou utilisez SQLite en cas de stockage à long terme. Ou les combiner :-)

Mais c'est ainsi, sans connaissance de l'algorithme, les conseils sont vains.

 
Andrey Sokolov:

Oui, il s'agit aussi de sélectionner une variable par son nom.

Par exemple, il existe des variables a1, a2, a3, a4, a5, etc. Nous devons aussi énumérer ces variables, choisir celle qui a "a" et 5, et l'utiliser.

Écrivez les noms dans un tableau et parcourez le tableau.

 

Bonjour à tous, ma question concerne le testeur MT4, le langage mql4
. Veuillez me dire quelle est mon erreur lors de l'initialisation d'un tableau. J'ai créé un tableau unidimensionnel de 750 éléments. J'ai initialisé les 750 éléments avec la valeur 50.0.

Cela signifie qu'au premier tic et aux suivants, le premier élément du tableau avec l'index 0 doit avoir la valeur 50.0 et le dernier élément du tableau avec l'index 749 doit avoir la valeur 50.0.

En fait, il s'avère que le dernier élément du tableau a la valeur 0. Et le premier, comme il se doit, est 50.0.

La question. Comment faire en sorte que toutes les valeurs d'un tableau (y compris la dernière) aient la valeur 50.0 après l'initialisation ?

Voici mon code

double S_L[750]={50.0} ;

void OnTick()
{
if (Day()==4&&Month()==1&&Year()==2010&&Hour()==0&&Minute()==0)

Print("=========================749======= ",S_L[749]," =0= ",S_L[0]) ;

}

Au bas de la valeur Print() du journal

2020.08.24 17:43:55.427 GBPUSD,M1 : 52255 événements tick (1440 barres, 53256 états de barre) traités en 0:00:00.047 (temps total 0:00:02.422)

2020.08.24 17:43:55.407 2010.01.04 00:00:53 TESTEUR(B.ORG) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:52 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:50 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:47 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:45 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:43 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:41 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:40 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:37 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:35 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:32 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:30 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:28 TESTER(B.ORDERS) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:26 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:25 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:22 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:20 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:17 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:15 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:13 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:11 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:10 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:07 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00:05 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:02 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.407 2010.01.04 00:00 TESTER(B.ORD) GBPUSD,M1 : =========================749======= 0 = 0= 50

2020.08.24 17:43:55.385 2010.01.01 00:00:00 Testeur(B.ORD.) test commencé


Merci pour votre aide


Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Переменные должны быть объявлены перед их использованием. Для идентификации переменных используются уникальные имена. Описания переменных используются для их определения и объявления типов. Описание не является оператором. Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов массива...
 
ANDREY:

Voici le mien.

Où ?))

 
Alexey Viktorov:

Où ?)))

En haut de mon message édité. Merci pour la réponse.

 

ANDREY:

Question. Comment puis-je faire en sorte que toutes les valeurs de mon tableau (y compris la dernière) aient une valeur de 50.0 après l'initialisation?

int OnInit()
{
   ArrayInitialize(S_L, 50.0);
}
 
Igor Makanu:

Merci pour le conseil. Au fait, je voulais clarifier..... Dans le tutoriel de Kovalev il est dit que le tableau peut être initialisé en même temps que sa déclaration (comme je l'ai fait), sans aucune fonction spéciale. Je sais que le tutoriel de Kovalev est quelque peu dépassé. Q. Ai-je bien compris que maintenant, dans mql4, les tableaux doivent être initialisés uniquement à l'aide d'une fonction ?

ArrayInitialize(S_L, 50.0)

Merci.

Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Функция ArrayResize() позволяет задать для массива размер с некоторым запасом для его будущего увеличения без физического перераспределения памяти. Это сделано для улучшения быстродействия, так как операции по распределению памяти...