Erreurs, bugs, questions - page 2958

 
Vladimir Karputov:
Qu'est-ce que tu veux dire ?

La recherche ne fonctionne pas correctement, je voulais filtrer vos indicateurs dans CodeBase par date de publication.

https://www.mql5.com/ru/search#!keyword=Vladimir%20Karputov&module=mql5_module_codebase&method=2

https://www.mql5.com/ru/search#!keyword=%D0%B8%D0%BD%D0%B4%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80&module=mql5_module_codebase&method=2&author=Vladimir%20Karputov

Celle qui est la plus proche de celle désirée.

 
Mikhail Mishanin:

La recherche ne fonctionne pas correctement, je voulais filtrer vos indicateurs dans CodeBase par date de publication.

https://www.mql5.com/ru/search#!keyword=Vladimir%20Karputov&module=mql5_module_codebase&method=2

https://www.mql5.com/ru/search#!keyword=%D0%B8%D0%BD%D0%B4%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80&module=mql5_module_codebase&method=2&author=Vladimir%20Karputov

celui qui est le plus proche de celui souhaité.

Ces deux liens fonctionnent. Probablement que l'ancien format de lien a été ou que les bases du site ont été mises à jour.

 
Vladimir Karputov:

Ces deux liens fonctionnent. Il s'agissait peut-être d'un ancien format de lien ou d'une mise à jour des bases de données du site.

Bien sûr, ils fonctionnent, mais à mon avis, ils ne font pas ce que j'attends.

Je pensais voir le premier par la date https://www.mql5.com/ru/code/33553.

et le second contenait d'autres auteurs.

C'est une chose mineure, bien sûr.

 

Je voudrais que cela reste simple. Quand un nouveau symbole de Market Watch est dessiné sur le graphique (c'est-à-dire quand le symbole change), je dois le reconnaître et prendre une action.

#property indicator_chart_window

int OnInit()
  {
   return(INIT_SUCCEEDED);
  }

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[])
  {
   return(rates_total);
  }

void OnDeinit(const int reason)
  {
   string old_symbol=_Symbol;
   string new_symbol;

   Print("The current symbol is ",old_symbol,".");

   if(_UninitReason==REASON_CHARTCHANGE)
   {
      new_symbol=_Symbol;
      Print("Was: ",old_symbol,", now: ",new_symbol,".");
   }

   return;
  }

J'ai mis EURUSD sur USDCHF, ça dit :

2021.02.14 17:56:26.700 test (USDCHF,M20)       The current symbol is USDCHF.
2021.02.14 17:56:26.700 test (USDCHF,M20)       Was: USDCHF, now: USDCHF.

Au même moment, sur le graphique, la paire devient bien sûr EURUSD. Lorsque je supprime l'indicateur du graphique, il indique(qu'il est trop tard):

2021.02.14 18:02:54.006 test (EURUSD,M20)       The current symbol is EURUSD.

A est attendu immédiatement :

2021.02.14 18:00:44.660 test (USDCHF,M20)       The current symbol is USDCHF.
2021.02.14 18:00:44.660 test (USDCHF,M20)       Was: USDCHF, now: EURUSD.

Qu'est-ce que je fais de mal ?

EURUSD - Euro vs US Dollar - Курс валют сегодня — Форекс курсы валют
EURUSD - Euro vs US Dollar - Курс валют сегодня — Форекс курсы валют
  • www.mql5.com
EURUSD - Euro vs US Dollar - Графики с курсом по самым популярным валютным парам. Используйте фильтр снизу, чтобы отбирать нужные вам курсы валют. Внутри каждого графика показываются цены спроса и предложения, а также прирост за день.
 
x572intraday:

Je voudrais que cela reste simple. Quand un nouveau symbole de Market Watch est dessiné sur le graphique (c'est-à-dire quand le symbole change), je dois le reconnaître et prendre une action.

J'ai mis EURUSD sur USDCHF, ça dit :

Au même moment, sur le graphique, la paire devient bien sûr EURUSD. Lorsque je supprime l'indicateur du graphique, il indique(qu'il est trop tard):

A est attendu :

Qu'est-ce que je fais de mal ?

Quoi en

OnDeinit(

Mettez-en plus dans OnInit et tout devient clair.

 
x572intraday:

Je voudrais que cela reste simple. Lorsqu'un nouveau symbole provenant de Market Watch est projeté sur le graphique (c'est-à-dire lorsque le symbole change), vous devez le reconnaître et prendre une mesure.

Dans l'indicateur, nous devons sauvegarder le symbole dans OnDeinit (par exemple dans global). Dans OnInit, attendez OnDeinit de l'indicateur précédent et lisez le symbole sauvegardé.
#property indicator_chart_window
#property indicator_plots   0

#include <Init_Sync.mqh> // https://www.mql5.com/ru/code/18138

int OnInit()
{  
  // https://www.mql5.com/ru/forum/189649#comment_4854618
  if (GlobalVariableCheck((string)ChartID()))
  {
    const string PrevSymb = _GlobalVariableGet<string>((string)ChartID());
    
    if (PrevSymb != _Symbol)
      Alert(PrevSymb + " -> " + _Symbol);
    
    _GlobalVariableDel((string)ChartID());  
  }
    
  return(INIT_SUCCEEDED);
}

void OnDeinit( const int Reason )
{
  if (Reason == REASON_CHARTCHANGE)
    _GlobalVariableSet((string)ChartID(), _Symbol + "");
}

void OnChartEvent( const int id,
                   const long& lparam,
                   const double& dparam,
                   const string& sparam )
{
}

void OnTimer()
{
}

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[] )
{
  return(rates_total);
}
Cet exemple en crée un global avec (string)ChartID()-name. S'il y a plus d'un indicateur sur le graphique, la logique doit être un peu plus complexe.
 
fxsaber:
Dans l'indicateur, vous devez sauvegarder le symbole dans OnDeinit (par exemple dans global). Dans OnInit, attendez l'exécution de OnDeinit de l'indicateur précédent et lisez le symbole sauvegardé. Cet exemple en crée un global avec (string)ChartID()-name. S'il y a plus d'un indicateur sur le graphique, la logique doit être un peu plus complexe.

TypeToBytes.mqh et crc64.mqh ont compilé avec succès, mais Init_Sync.mqh a produit un tas d'erreurs. C'est-à-dire que l'affaire n'est même pas arrivée à la compilation de l'exemple. Et je pense avec effroi qu'une tâche aussi triviale nécessite plusieurs bibliothèques stubby dont certaines ne veulent pas non plus compiler. C'est juste que je n'ai jamais branché quelque chose d'externe avant, sauf mon propre indicateur personnalisé.

 
x572intraday:

TypeToBytes.mqh et crc64.mqh ont compilé avec succès, mais Init_Sync.mqh a produit une montagne d'erreurs lors de la compilation.

C'est en train de se compiler.

Dossiers :
 
fxsaber:

C'est en train de se compiler pour moi.

Uh-huh, c'est comme ça que ça a marché.

 
fxsaber:

Il compile pour moi.


RAISON_CHARTCHANGE

3

Le symbole ou la période du graphique a été modifié

Je ne suis pas satisfait du fait que cette constante couvre deux événements à la fois : un changement de symbole ou de période, et je n'ai besoin de suivre qu'un changement de symbole. Et ça ne me donnerait pas de mal de tête.

Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Причины деинициализации
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Причины деинициализации
  • www.mql5.com
Причины деинициализации - Именованные константы - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Raison: