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

 
Oleg Remizov:

Et selon mes observations, les utilisateurs apprécient que l'Expert Advisor affiche diverses informations à l'écran : il dessine des flèches, des lignes, des canaux et d'autres choses pour montrer l'activité vigoureuse de l'"intelligence artificielle").

Selon les indicateurs, le conseiller expert fournit un suivi. Je veux visualiser ce processus pour qu'un utilisateur puisse voir la ligne en pointillés avec StopLoss.

Utilisez une ligne de tendance, le premier point d'ancrage est la barre actuelle et le second est 1 barre dans l'historique, mettez l'épaisseur de 2-3

 
Vitaly Muzichenko:

Utilisez une ligne de tendance, le premier point d'ancrage est la barre actuelle et le second une barre dans l'histoire, mettez l'épaisseur à 2-3.

Excellente idée ! Merci beaucoup, c'est parfait.

tendance

 
ANDREY:

Voici ce que dit le manuel de Kovalev sur l'initialisation d'un tableau en même temps qu'il est déclaré

8.4.4 Initialisation du tableau

Un tableau ne peut être initialisé qu'avec des constantes du type approprié. Les tableaux unidimensionnels et multidimensionnels sont initialisés avec une séquence unidimensionnelle de constantes séparées par des virgules. La séquence est entourée d'accolades :

int Mas_i[3][4] = { 0, 1, 2, 3, 10, 11, 12, 13, 20, 21, 22, 23 }

double Mas_d[2][3] = { 0,1, 0,2, -0,3, -10,2, 1,5, 7,0 } ;

bool Mas_b[5] = { false, true, false, true, true }

Une ou plusieurs constantes peuvent être sautées dans la séquence d'initialisation.

Il me semble, d'après le manuel, que lorsqu'un tableau est déclaré, le tableau complet est initialisé avec toutes les données, et pas seulement le premier élément du tableau.
Si j'ai mal compris le manuel, je vous serais reconnaissant de m'indiquer ce que j'ai mal compris.

Je n'ai pas la moindre envie de discuter de votre manuel, je ne l'ai pas lu.

et a écrit ici sur le forum que le manuel est dépassé et non pertinent.

un tableau à deux dimensions peut être initialisé de cette façon :

int arr[2][5] = {{1, 2, 3, 4, 5,}, {6, 7, 8, 9, 10}};
 
Igor Makanu:

pas la moindre envie de discuter de votre manuel, je ne l'ai pas lu.

et ont écrit ici sur le forum que le manuel est dépassé et non pertinent.

Un tableau à deux dimensions peut être initialisé de cette façon :

Merci beaucoup pour votre aide. Vous avez directement deviné mes pensées. Je me demande comment initialiser un tableau à deux dimensions.....mais uniquement au moyen de la fonctionArrayInitialize() ;
Le manuel de cette fonction ne donne des informations sur l'initialisation que d'un tableau à une dimension, comme il me semblait.
Je vous serai très reconnaissant, si vous me le dites.

 
ANDREY:

Merci beaucoup pour votre aide. Vous avez directement deviné mes pensées. Je me demande comment initialiser un tableau à deux dimensions.....mais seulement au moyen de la fonction ArrayInitialize ();
Dans la référence sur cette fonction, les informations sur l'initialisation d'un tableau à une dimension seulement sont données, comme il me semblait.
Je vous serai très reconnaissant, si vous me le dites.

ArrayFill() permet de remplir tous les éléments d'un tableau avec la valeur souhaitée et peut être utilisé pour un tableau à deux dimensions. Regardez l'exemple dans l'aide pour cette fonction.

Au fait, j'ai vérifiéArrayInitialize() appliqué à un tableau à deux dimensions, cela fonctionne aussi. Mais dans les deux cas, vous ne pouvez initialiser que tous les éléments avec une valeur particulière.

Si vous souhaitez définir une valeur différente pour chaque élément, ces fonctions ne fonctionneront pas.

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

ArrayFill() permet de remplir tous les éléments d'un tableau avec la valeur souhaitée et peut être utilisée pour un tableau à deux dimensions. Voir l'exemple dans l'aide pour cette fonction.

Au fait, j'ai vérifiéArrayInitialize() appliqué à un tableau à deux dimensions, cela fonctionne aussi. Mais dans les deux cas, vous ne pouvez initialiser que tous les éléments avec une valeur particulière.

Si vous devez définir une valeur différente pour chaque élément, ces fonctions ne fonctionneront pas.

Merci beaucoup pour votre aide.

 
Oleg Remizov:

Malheureusement, le modèle ne fonctionne pas pour moi. La fonction d'affichage de l'indicateur doit être activée/désactivée dans les réglages, et le dessin doit être effectué directement à partir de l'EA. Le conseiller expert doit pouvoir être transféré dans un seul fichier.

Au lieu de la flèche, dessinez une ligne de tendance, dont les deux points ont le même prix et la même heure. Utilisez l'épaisseur de la ligne pour ajuster la taille du point résultant.

 
Bonjour, je suis un nouvel arrivant et j'aimerais savoir comment retirer de l'argent de mon compte et ensuite quand le transférer.
 

Salutations.

Il y a une chose comme ça dans MT4 :

#import "user32.dll"
   int SendMessageA(int hWnd, int Msg, int wParam, char &lParam[]);
   int RegisterWindowMessageA(uchar &lParam[]);
#import

string IndiName="TestBot";

void OnStart()
  {
   char buf[];
   StringToCharArray("MetaTrader4_Internal_Message", buf);
   int MT4InternalMsg=RegisterWindowMessageA(buf);
   StringToCharArray(IndiName, buf);
   long handle=ChartGetInteger(0, CHART_WINDOW_HANDLE);
   Print(MT4InternalMsg);
   bool res=SendMessageA((int)handle, MT4InternalMsg, 14, buf);
   Print("Функция SendMessageA завершила работу с результатом: ",res);
  }

Ce code envoie une commande à la fenêtre du terminal pour exécuter un EA spécifique.

Existe-t-il une fonctionnalité similaire pour MT5 ?

J'ai essayé comme ça :

#import "user32.dll"
   int SendMessageA(long hWnd, long Msg, uint wParam, uchar &lParam[]);
   int RegisterWindowMessageA(uchar &lParam[]);
#import

string IndiName="TestBot";

void OnStart()
  {
   uchar buf[];
   StringToCharArray("MetaTrader5_Internal_Message", buf);
   long MT5InternalMsg=RegisterWindowMessageA(buf);
   StringToCharArray(IndiName, buf);
   long handle=ChartGetInteger(0, CHART_WINDOW_HANDLE);
   Print("Window handle: ", handle);
   Print("Message: ",MT5InternalMsg);
   for(int i = 0; i<100; i++){
      bool res=SendMessageA(handle, MT5InternalMsg, i , buf);
      printf("Функция SendMessageA завершила работу с результатом: %d, номер: %d ",res, i);
   }
  }

Ça ne marche pas.

J'ai essayé de rechercher les spy++, mais il n'y a pas de messages dans MT5 contrairement à MT4.

J'ai exactement besoin d'appeler la fenêtre des paramètres du conseiller expert.

 
50211108:
Bonjour, je suis un novice et je voudrais savoir comment retirer de l'argent du compte et quand le déposer.

Vous ne pouvez retirer que ce que vous avez gagné grâce à cette ressource, qui est la vente de logiciels, de signaux et de puissance informatique. Ce qui est inscrit ne peut être dépensé que pour cette ressource.