Fehler, Irrtümer, Fragen - Seite 2958

 
Was soll das heißen?
 
Vladimir Karputov:
Wie meinen Sie das?

Die Suche funktioniert nicht richtig, ich wollte Ihre Indikatoren in CodeBase nach dem Veröffentlichungsdatum filtern

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

Diejenige, die der gewünschten am nächsten kommt.

 
Mikhail Mishanin:

Die Suche funktioniert nicht richtig, ich wollte Ihre Indikatoren in CodeBase nach dem Veröffentlichungsdatum filtern

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

diejenige, die der gewünschten am nächsten liegt.

Diese beiden Links funktionieren. Wahrscheinlich wurde das alte Linkformat oder die Website-Basis aktualisiert.

 
Vladimir Karputov:

Diese beiden Links funktionieren. Vielleicht handelte es sich um ein altes Linkformat oder es gab eine Aktualisierung der Datenbanken der Website.

Natürlich funktionieren sie, aber meiner Meinung nach tun sie nicht das, was ich erwarte.

Ich dachte, ich würde die erste bis zum Datum https://www.mql5.com/ru/code/33553 sehen .

und in der zweiten waren einige andere Autoren vertreten.

Das ist natürlich eine Kleinigkeit.

 

Ich würde es gerne einfach halten. Wenn ein neues Symbol von Market Watch auf dem Chart gezeichnet wird (d.h. wenn sich das Symbol ändert), muss ich es erkennen und eine Aktion ausführen.

#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;
  }

Ich setze EURUSD auf USDCHF, es heißt:

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.

Gleichzeitig wechselt das Paar im Chart natürlich zu EURUSD. Wenn ich den Indikator aus dem Chart entferne, sagt er(dass es zu spät ist):

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

A wird sofort erwartet:

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.

Was mache ich falsch?

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

Ich würde es gerne einfach halten. Wenn ein neues Symbol von Market Watch auf dem Chart gezeichnet wird (d.h. wenn sich das Symbol ändert), muss ich es erkennen und eine Aktion ausführen.

Ich setze EURUSD auf USDCHF, es heißt:

Gleichzeitig wechselt das Paar im Chart natürlich zu EURUSD. Wenn ich den Indikator aus dem Chart entferne, sagt er(dass es zu spät ist):

A wird erwartet:

Was mache ich falsch?

Was in

OnDeinit(

Geben Sie mehr in OnInit ein und alles wird klar.

 
x572intraday:

Ich würde es gerne einfach halten. Wenn ein neues Symbol von Market Watch auf den Chart geworfen wird (d.h. wenn sich das Symbol ändert), müssen Sie dies erkennen und eine Aktion durchführen.

Im Indikator müssen wir das Symbol in OnDeinit (zum Beispiel in global) speichern. In OnInit warten Sie auf OnDeinit des vorherigen Indikators und lesen das gespeicherte Symbol.
#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);
}
In diesem Beispiel wird eine globale Karte mit (string)ChartID()-Name erstellt. Wenn mehr als ein Indikator im Diagramm vorhanden ist, sollte die Logik etwas komplexer sein.
 
fxsaber:
Im Indikator müssen Sie das Symbol in OnDeinit speichern (z.B. in global). In OnInit warten Sie auf die Ausführung von OnDeinit des vorherigen Indikators und lesen das gespeicherte Symbol. In diesem Beispiel wird eine globale Karte mit (string)ChartID()-Name erstellt. Wenn mehr als ein Indikator im Diagramm vorhanden ist, sollte die Logik etwas komplexer sein.

TypeToBytes.mqh und crc64.mqh wurden erfolgreich kompiliert, aber Init_Sync.mqh produzierte einen Berg von Fehlern. Das heißt, dass die Angelegenheit nicht einmal bis zur Zusammenstellung des Beispiels gekommen ist. Und ich denke mit Schrecken, dass diese triviale Aufgabe mehrere Stubby-Bibliotheken erfordert, von denen einige auch nicht kompilieren wollen. Ich habe nur noch nie etwas Externes angeschlossen, außer meinem eigenen benutzerdefinierten Indikator.

 
x572intraday:

TypeToBytes.mqh und crc64.mqh wurden erfolgreich kompiliert, aber Init_Sync.mqh produzierte beim Kompilieren einen Berg von Fehlern.

Es wird gerade kompiliert.

Dateien:
 
fxsaber:

Es wird für mich kompiliert.

Aha, so hat es also funktioniert.