Errori, bug, domande - pagina 2958

 
Di cosa stai parlando?
 
Vladimir Karputov:
Cosa vuoi dire?

La ricerca non funziona correttamente, volevo filtrare i vostri indicatori in CodeBase per data di pubblicazione

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

Quello più vicino a quello desiderato.

 
Mikhail Mishanin:

La ricerca non funziona correttamente, volevo filtrare i vostri indicatori in CodeBase per data di pubblicazione

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

quello più vicino a quello desiderato.

Questi due link funzionano. Probabilmente il vecchio formato dei link era o le basi del sito sono state aggiornate.

 
Vladimir Karputov:

Questi due link funzionano. Forse era un vecchio formato di link o c'era un aggiornamento dei database del sito.

Certo che funzionano, ma secondo me non fanno quello che mi aspetto.

Ho pensato di vedere il primo per data https://www.mql5.com/ru/code/33553.

e nel secondo c'erano altri autori.

È una cosa minore, ovviamente.

 

Vorrei mantenerlo semplice. Quando un nuovo simbolo di Market Watch viene disegnato sul grafico (cioè quando il simbolo cambia), devo riconoscerlo e fare un'azione.

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

Ho messo EURUSD su USDCHF, dice:

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.

Allo stesso tempo sul grafico la coppia, ovviamente, cambia in EURUSD. Quando rimuovo l'indicatore dal grafico dice(che è troppo tardi):

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

A è atteso immediatamente:

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.

Cosa sto facendo di sbagliato?

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

Vorrei mantenerlo semplice. Quando un nuovo simbolo di Market Watch viene disegnato sul grafico (cioè quando il simbolo cambia), devo riconoscerlo e fare un'azione.

Ho messo EURUSD su USDCHF, dice:

Allo stesso tempo sul grafico la coppia, ovviamente, cambia in EURUSD. Quando rimuovo l'indicatore dal grafico dice(che è troppo tardi):

A è previsto:

Cosa sto facendo di sbagliato?

Cosa in

OnDeinit(

Mettetene di più in OnInit e tutto diventa chiaro.

 
x572intraday:

Vorrei mantenerlo semplice. Quando un nuovo simbolo da Market Watch viene lanciato sul grafico (cioè quando il simbolo cambia), è necessario riconoscerlo e intraprendere un'azione.

Nell'indicatore dobbiamo salvare il simbolo in OnDeinit (per esempio in globale). In OnInit aspetta OnDeinit dell'indicatore precedente e legge il simbolo salvato.
#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);
}
Questo esempio ne crea uno globale con (string)ChartID()-name. Se c'è più di un indicatore sul grafico, la logica dovrebbe essere un po' più complessa.
 
fxsaber:
In indicatore è necessario salvare il simbolo in OnDeinit (per esempio in globale). In OnInit aspetta l'esecuzione di OnDeinit dell'indicatore precedente e legge il simbolo salvato. Questo esempio ne crea uno globale con (string)ChartID()-name. Se c'è più di un indicatore sul grafico, la logica dovrebbe essere un po' più complessa.

TypeToBytes.mqh e crc64.mqh sono stati compilati con successo, ma Init_Sync.mqh ha prodotto una serie di errori. Cioè, la questione non è nemmeno arrivata alla compilazione dell'esempio. E sto pensando con terrore che un compito così banale richiede diverse librerie stubby, alcune delle quali non vogliono nemmeno compilare. È solo che non ho mai collegato nulla di esterno prima, tranne il mio indicatore personalizzato.

 
x572intraday:

TypeToBytes.mqh e crc64.mqh sono stati compilati con successo, ma Init_Sync.mqh ha prodotto una montagna di errori durante la compilazione.

Si sta compilando ora.

 
fxsaber:

Sta compilando per me.

Uh-huh, è così che funzionava.

Motivazione: