Erreurs, bugs, questions - page 2964

 
fxsaber:

Il n'est pas transféré.

Avez-vous pensé à importer la fonction dans l'Expert Advisor ?
J'ai mis à jour l'exemple pour la structure, il n'y avait pas grand chose à redire.
En général, si vous travaillez avec une structure, pensez à comment déclarer un objet de structure, globalement ou localement.
Et pour une variable, tout cela n'est pas nécessaire, il suffit de retourner la variable et c'est tout.

Документация по MQL5: Основы языка / Препроцессор / Импорт функций (#import)
Документация по MQL5: Основы языка / Препроцессор / Импорт функций (#import)
  • www.mql5.com
Импорт функций (#import) - Препроцессор - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Roman:

Avez-vous pensé à importer la fonction dans l'EA ?

Pouvez-vous fournir le code source de l'indicateur et de l'EA pour votre idée ou non ?

 
fxsaber:

Pouvez-vous fournir le code source de l'indicateur et de l'EA pour votre idée ou non ?

Oui, c'est étrange. L'exportation des fonctions dans mql4 ne veut pas fonctionner pour une raison quelconque.
Je n'obtiens aucun résultat de la bibliothèque ou de l'indicateur. Cependant, j'ai vu des fonctions dans les dépendances.
Un exemple pour la bibliothèque

#property library
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

double value = 0.0;

//+------------------------------------------------------------------+
//| My function                                                      |
//+------------------------------------------------------------------+
double SetValue(double v) export
{
   value = v;    
   return(value);
}

//+------------------------------------------------------------------+
double GetValue(void) export
{
   return(value);
}
//+------------------------------------------------------------------+

Un indicateur qui fixe une valeur

#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_separate_window

#import "Lib.ex4"
   double SetValue(double v);
   double GetValue(void);
#import

MqlTick tick;


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{

   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason)
{
   Comment("");
}
  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   
   SymbolInfoTick(NULL, tick);
   SetValue(tick.bid);
   
   //Comment((string)GetValue());   
   
   return(rates_total);
}
//+------------------------------------------------------------------+

Un conseiller expert qui devrait obtenir une valeur par le biais d'une fonction, mais cela ne fonctionne pas.

#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

#import "Lib.ex4"
   double GetValue(void);
#import

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   EventSetMillisecondTimer(10);
   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   Comment("");
   EventKillTimer();
}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
}

//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
{
   double bid = GetValue();
   
   Comment("\r\nЭксперт получил значение из индикатора = "+(string)bid);
   //ChartRedraw();

}
//+------------------------------------------------------------------+
 
fxsaber:

J'envoie les ticks de l'indicateur via ceci : sparam contient MqlTick, lparam - numéro de tick.

Le conseiller expert capte ces ticks dans OnChartEvent. Et il doit comprendre si le tick actuel est le plus actuel ou non ? C'est-à-dire, y a-t-il une file d'attente de ticks ou est-elle vide ?

Pour cela, il lit le numéro (la tâche est de lire ce numéro) du dernier tick envoyé par l'indicateur. Si le tick a le même numéro - la file d'attente est vide, et il est possible de commencer à travailler avec les ticks.


Et pendant l'opération de OnTick, après OrderSend il est nécessaire de vérifier si l'indicateur a envoyé plus de ticks. Pour cela, nous devons à nouveau lire le nombre à partir de l'indicateur. Et il peut y avoir plus d'une centaine de ces contrôles au cours d'un OnTick. C'est pourquoi nous devons le lire rapidement.

Si le conseiller expert prend les ticks par le biais de CopyTicks, pourquoi a-t-il besoin de savoir que la file d'attente est vide ?

Laissez-le travailler sur chacun des événements, et sautez les événements qui ont moins de temps que ceux déjà traités.

 
Andrey Khatimlianskii:

Si mon conseiller expert prend toujours des ticks via CopyTicks, pourquoi a-t-il besoin de savoir que la file d'attente est vide ?

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Bugs, bugs, questions

fxsaber, 2021.02.17 21:26

Veuillez me faire part de vos réflexions sur ce sujet(MT4) :

L'indicateur doit écrire int-numéro quelque part. Et EA doit le lire.

 
fxsaber:

Est-ce que quelque chose comme ça pourrait aider ?

https://www.mql5.com/ru/code/818

File Mapping без DLL
File Mapping без DLL
  • www.mql5.com
Класс MQL5, который работает напрямую с маппингом, без использования самописной DLL.
 
Mikhail Mishanin:

Est-ce que quelque chose comme ça pourrait aider ?

https://www.mql5.com/ru/code/818

Une option WinAPI rapide a été suggérée ci-dessus.

 
fxsaber:

Une variante rapide de WinAPI a été suggérée ci-dessus.

cette option est plus dangereuse et difficile à mettre en œuvre

 
Andrei Trukhanovich:

cette option est plus dangereuse et difficile à mettre en œuvre

J'attends celui-ci.

 
fxsaber:

J'attends celui-ci.

Oui, intéressant aussi, si ce n'est pas les fichiers bien sûr, si oui, la cartographie suggérée ci-dessus est meilleure.