Errores, fallos, preguntas - página 2958

 
¿De qué estás hablando?
 
Vladimir Karputov:
¿Qué quieres decir?

La búsqueda no funciona correctamente, quería filtrar sus indicadores en CodeBase por fecha de publicación

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

El más cercano al deseado.

 

Estos dos enlaces funcionan. Probablemente el viejo formato de los enlaces fue o las bases del sitio fueron actualizadas.

 
Vladimir Karputov:

Estos dos enlaces funcionan. Tal vez se trate de un formato de enlace antiguo o haya habido una actualización de las bases de datos del sitio.

Por supuesto que funcionan, pero en mi opinión, no hacen lo que espero.

Pensé que vería la primera por la fecha https://www.mql5.com/ru/code/33553.

y el segundo tenía otros autores.

Es algo menor, por supuesto.

 

Me gustaría que fuera sencillo. Cuando un nuevo símbolo de Market Watch se dibuja en el gráfico (es decir, cuando el símbolo cambia), necesito reconocerlo y realizar una acción.

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

Pongo EURUSD en 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.

Al mismo tiempo en el gráfico el par, por supuesto, cambia a EURUSD. Cuando quito el indicador del gráfico dice(que es demasiado tarde):

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

Se espera que A sea inmediatamente:

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é estoy haciendo mal?

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

Me gustaría que fuera sencillo. Cuando un nuevo símbolo de Market Watch se dibuja en el gráfico (es decir, cuando el símbolo cambia), necesito reconocerlo y realizar una acción.

Pongo EURUSD en USDCHF, dice:

Al mismo tiempo en el gráfico el par, por supuesto, cambia a EURUSD. Cuando quito el indicador del gráfico dice(que es demasiado tarde):

Se espera que la A:

¿Qué estoy haciendo mal?

Lo que en

OnDeinit(

Pon más en OnInit y todo se aclara.

 
x572intraday:

Me gustaría que fuera sencillo. Cuando se lanza un nuevo símbolo desde Market Watch al gráfico (es decir, cuando un símbolo cambia), es necesario reconocerlo y realizar una acción.

En el indicador tenemos que guardar el símbolo en OnDeinit (por ejemplo, en global). En OnInit esperar a OnDeinit del indicador anterior y leer el símbolo guardado.
#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);
}
Este ejemplo crea uno global con (cadena)ChartID()-nombre. Si hay más de un indicador en el gráfico, la lógica debe ser un poco más compleja.
 
fxsaber:
En el indicador hay que guardar el símbolo en OnDeinit (por ejemplo, en global). En OnInit esperar la ejecución de OnDeinit del indicador anterior y leer el símbolo guardado. Este ejemplo crea una global con (cadena)ChartID()-nombre. Si hay más de un indicador en el gráfico, la lógica debe ser un poco más compleja.

TypeToBytes.mqh y crc64.mqh compilaron con éxito, pero Init_Sync.mqh produjo una montaña de errores. Es decir, el asunto ni siquiera llegó a la compilación del ejemplo. Y pienso con horror que una tarea tan insignificante requiere varias librerías gordas, algunas de las cuales tampoco quieren compilar. Es que nunca he enchufado nada externo, salvo mi propio indicador personalizado.

 
x572intraday:

TypeToBytes.mqh y crc64.mqh se compilaron con éxito, pero Init_Sync.mqh produjo una montaña de errores al compilar.

Se está compilando ahora.

Archivos adjuntos:
 
fxsaber:

Se está compilando para mí.

Ajá, así es como funcionó.