Questions des débutants MQL5 MT5 MetaTrader 5 - page 572

 
Boris.45:
Bonjour, je suis en train d'écrire un EA pour MT5. J'ai écrit un EA dans MT5 que j'ai voulu utiliser pour rechercher automatiquement les modèles nécessaires et ouvrir des positions manuellement. C'est-à-dire qu'il n'y a pas de fonctions de trading dans l'EA. Mon problème est que je ne peux pas installer cet EA sur un graphique. Il n'y a pas d'appels d'indicateurs dans l'EA. Tous les indicateurs sont écrits dans le programme. Je l'ai compilé et l'ai exécuté dans le testeur de stratégie. Il n'y a eu aucun problème. Je viens de placer l'EA sur le graphique et de l'autoriser à négocier sur l'écran, dans les paramètres et dans la fenêtre de l'EA qui s'affiche. Au lieu du visage souriant sur le graphique, l'icône du conseiller expert apparaît sur le graphique des prix et un cercle vert avec un triangle blanc à l'intérieur. J'ai essayé cette procédure plusieurs fois et j'obtiens toujours les mêmes résultats. J'ai changé de période sur le graphique des prix, le message de OnDeinit() apparaît sur le moniteur, c'est-à-dire qu'une bougie est traitée dans le programme et le travail s'arrête.

J'ai jeté un coup d'oeil au journal de bord :

- L'une des tentatives d'installation d'une EA a donné lieu à un message de changement de profil ;

- Dans toutes les autres tentatives, l'EA est chargé sans aucun problème.

J'avais l'habitude de travailler avec des profils : j'augmentais le nombre de profils, je définissais des graphiques différents sur chaque profil. S'il y avait un problème, malheureusement, je ne le connais pas. Je ne sais pas ce qui doit être cassé pour que le programme donne un message sur le changement de profil. Bien qu'il soit possible que l'échec soit dû à une autre raison. Ce n'est pas clair pour moi.

Pour des raisons de test, j'ai créé un nouvel EA (modèle) aujourd'hui et je n'ai rien écrit dans les fonctions OnInit(), OnDeinit(const int reason), OnTick() et j'ai essayé de mettre cet EA sur le graphique et de permettre le trading.

J'ai la même situation que précédemment.

Veuillez m'aider à faire face à cette situation. Merci ! !!!!!.

Examinons-les un par un. Voici le modèle :

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Trade function                                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
//---
   
  }
//+------------------------------------------------------------------+

Joignez-y le graphique et une capture d'écran du graphique dans le studio, ainsi que les entrées des onglets "Journal" et "Conseillers" (si elles y apparaissent).

Dossiers :
Test.mq5  2 kb
 
Je suppose qu'il n'y a pas de professionnels ici non plus. pity......
 
Mihail Marchukajtes:
Je suppose qu'il n'y a pas de professionnels ici non plus. pity......
Réimprimez donc les valeurs de Momentum du tableau de quelqu'un d'autre dans le testeur.
 
Artyom Trishkin:
Réimprimez donc les valeurs de Momentum du tableau de quelqu'un d'autre dans le testeur.
L'impression montre ce que le tampon dessine. Il n'y a pas d'information. Quelqu'un peut-il donner une réponse sensée ? ? ??? Spéculation pas inintelligible....
 
Mihail Marchukajtes:
L'impression montre ce que le tampon dessine. Il n'y a pas d'information. Quelqu'un peut-il donner une réponse sensée ? ? ??? Pas une obscure spéculation....
Donc vous ne donnez aucune information. Où est votre code ? Ou tout le monde ici est un médium ou quelque chose comme ça ? Alors vous devriez aller sur le forum des magiciens au dixième degré...
 

Chers collègues, pouvez-vous me dire comment comparer les paramètres des bougies dans une fourchette donnée ?

Comment calculer la valeur maximale ou minimale, je comprends.

Voici le code :

void OnTick()

{

double H = 0 ;

for ( shift = Search_Period ; shift >0 ; shift--)

{

si (High[shift] > H)

{ H = High[shift] ; }

Alerte (H) ;

}

}

Mais le problème est que cela écrase la valeur de la variable.

Mon objectif est de trouver, par exemple, deux chandeliers ou plus avec la même valeur de prix de High. En d'autres termes, dans l'idée, après chaque itération, il faut créer une variable qui stockera la valeur, puis une autre, et ainsi de suite, jusqu'à ce que tout l'intervalle soit vérifié. Et ensuite, ils pourront être comparés plus avant.

Mais je n'ai aucune idée de la façon de le faire ((.

 
Andrey Koldorkin:

Chers collègues, pouvez-vous me dire comment comparer les paramètres des bougies dans une fourchette donnée ?

Comment calculer la valeur maximale ou minimale, je comprends.

Voici le code :

...............


Mais le problème est que cela écrase la valeur de la variable.

Et mon but, est de trouver, par exemple, deux ou plusieurs chandeliers avec la même valeur de prix de High. C'est-à-dire que dans l'idée, après chaque itération, il faut créer une variable qui stockera la valeur, puis une autre, et ainsi de suite, jusqu'à ce que tout l'intervalle soit vérifié. Et ensuite, ils pourront être comparés plus avant.

Mais je n'ai aucune idée de la façon de le faire ((

Ça ressemble à ça :

//+------------------------------------------------------------------+
//|                                                     TestCopy.mq4 |
//|              Copyright 2016, Artem A. Trishkin, Skype artmedia70 |
//|                       https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Artem A. Trishkin, Skype artmedia70"
#property link      "https://login.mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int Search_Period=100;  // Количество копируемых High
int searchPeriod=(Search_Period<1)?1:Search_Period;
double mass_high[][2];        // массив значений High и их времени
MqlRates array[];             // Массив для копирования Open, High, Low, Close, Time
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int copy_bars=(int)fmin(Search_Period,Bars(Symbol(),Period()));
   if(CopyRates(Symbol(),PERIOD_CURRENT,1,copy_bars,array)>0) {
      double H=0;
      int size_h=0;
      for(int i=0; i<copy_bars; i++) {
         if(array[i].high>H) {
            H=array[i].high;
            size_h++;
            ArrayResize(mass_high,size_h);
            mass_high[size_h-1][0]=H;
            mass_high[size_h-1][1]=(int)array[i].time;
            }
         }
      }
   for(int i=0; i<ArrayRange(mass_high,0); i++) {
      printf("Время: %s, High: %.5f",TimeToString((int)mass_high[i][1],TIME_DATE|TIME_MINUTES),mass_high[i][0]);
      }
  }
//+------------------------------------------------------------------+
 
comment écrire deux conseillers différents en un seul ?
 
Сергей Зырянов:
comment mettre deux EA différents en un seul ?
Qu'est-ce qui vous intéresse ? Vous copiez le code d'un EA à un autre, mais vous devez le copier correctement. Si vous ne comprenez pas comment faire, commandez-le à des indépendants.
 
Artyom Trishkin:

Ça donne quelque chose comme ça :

Je vais essayer de trouver une solution. Merci.