Erros, bugs, perguntas - página 2958

 
Do que está a falar?
 
Vladimir Karputov:
O que quer dizer?

A pesquisa não está a funcionar correctamente, queria filtrar os vossos indicadores em CodeBase por data de publicação

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

A que mais se aproxima da desejada.

 
Mikhail Mishanin:

A pesquisa não está a funcionar correctamente, queria filtrar os vossos indicadores em CodeBase por data de publicação

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

a que mais se aproxima da desejada.

Estes dois links funcionam. Provavelmente o formato antigo do link foi ou as bases do site foram actualizadas.

 
Vladimir Karputov:

Estes dois links funcionam. Talvez fosse um formato antigo de ligação ou houve uma actualização das bases de dados do sítio.

Claro que funcionam, mas na minha opinião, não fazem o que eu espero.

Pensei em ver o primeiro por data https://www.mql5.com/ru/code/33553.

e o segundo tinha nele outros autores.

É uma coisa menor, é claro.

 

Gostaria de o manter simples. Quando um novo símbolo do Market Watch é desenhado no gráfico (isto é, quando o símbolo muda), preciso de o reconhecer e tomar uma acção.

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

Coloco o EURUSD no USDCHF, diz:

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.

Ao mesmo tempo, no gráfico o par, claro, muda para EURUSD. Quando retiro o indicador do gráfico diz(que é demasiado tarde):

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

A é esperado imediatamente:

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.

O que é que estou a fazer mal?

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

Gostaria de o manter simples. Quando um novo símbolo do Market Watch é desenhado no gráfico (isto é, quando o símbolo muda), preciso de o reconhecer e tomar uma acção.

Coloco o EURUSD no USDCHF, diz:

Ao mesmo tempo, no gráfico o par, claro, muda para EURUSD. Quando retiro o indicador do gráfico diz(que é demasiado tarde):

A é esperado:

O que é que estou a fazer mal?

O que em

OnDeinit(

Coloque mais no OnInit e tudo se torna claro.

 
x572intraday:

Gostaria de o manter simples. Quando um novo símbolo do Market Watch é lançado no gráfico (ou seja, quando um símbolo muda), é necessário reconhecer isto e tomar uma acção.

No indicador precisamos de guardar o símbolo no OnDeinit (por exemplo, no global). No OnInit aguarde pelo OnDeinit do indicador anterior e leia o 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 exemplo cria um exemplo global com (string)ChartID()-nome. Se houver mais do que um indicador no gráfico, a lógica deve ser um pouco mais complexa.
 
fxsaber:
No indicador é necessário guardar o símbolo no OnDeinit (por exemplo, no global). No OnInit aguardar a execução do OnDeinit do indicador anterior e ler o símbolo guardado. Este exemplo cria um exemplo global com (string)ChartID()-nome. Se houver mais do que um indicador no gráfico, a lógica deve ser um pouco mais complexa.

TypeTotes.mqh e crc64.mqh compilados com sucesso, mas Init_Sync.mqh produziu uma montanha de erros. Ou seja, o assunto nem sequer chegou à compilação do exemplo. E estou a pensar com terror que tal tarefa trivial requer várias bibliotecas atarracadas, algumas das quais também não querem compilar. Nunca tinha ligado nada externo, excepto o meu próprio indicador personalizado.

 
x572intraday:

TypeTotes.mqh e crc64.mqh compilados com sucesso, mas Init_Sync.mqh produziu uma montanha de erros ao compilar.

Está a compilar agora.

Arquivos anexados:
 
fxsaber:

Está a compilar para mim.

Uh-huh, foi assim que funcionou.