Erros, bugs, perguntas - página 2931

 

Em 10, o consumo de memória do Terminal mostra-se elevado. No Windows Server é muito menos.

Aparentemente, o cálculo do consumo de memória depende do sistema operativo.

 
fxsaber:

Este é o tipo de característica que, mesmo que o soubesse, teria de trazer de novo à tona toda a camada da sua cabeça.

Aqui estava eu a fazer uma determinação de presença auto-relatada. Parecia funcionar quando se mudava de TF.

Na verdade, não entrei no assunto, mas a julgar por estas linhas:

    const int Total = ::IndicatorParameters(handle, Type, Params);
    ::IndicatorRelease(handle);

    uchar Bytes[];

    for (int i = 1; i < Total; i++)
    {
      ::ArrayCopy(Bytes, _R(Params[i].double_value).Bytes, ::ArraySize(Bytes));
      ::ArrayCopy(Bytes, _R(Params[i].integer_value).Bytes, ::ArraySize(Bytes));
      ::ArrayCopy(Bytes, _R(Params[i].string_value).Bytes, ::ArraySize(Bytes));
    }

nome indicador (no parâmetro 0) não é utilizado na criação da assinatura, o que é bastante estranho.

 
fxsaber:

Em 10, o consumo de memória do Terminal mostra-se elevado. No Windows Server é muito menos.

Aparentemente, o cálculo do consumo de memória depende do sistema operativo.

Em vez disso, a reserva de memória nos eixos do servidor é mais óptima.
 
Stanislav Korotky:

Na verdade, não entrei no assunto, mas a julgar por estas linhas:

o nome do indicador (no parâmetro 0) não é utilizado na criação da assinatura, o que é bastante estranho.

return("::" + (string)::ChartID() + (string)INIT_SYNC::crc64(Bytes) + ::MQLInfoString(MQL_PROGRAM_NAME));
 
fxsaber:

Sim, já o encontrei. Validar inicia o primeiro passe, os seguintes não. O botão Start não arranca.

Depurado - funciona. Fez a depuração no lançamento, tudo está supostamente bem, mas não funciona.


Agora lanço especialmente a versão debug. Pressiona o botão Start sem qualquer problema.

Não foi possível descobrir a razão do insecto.

Heh viu recentemente esta resposta.

Como entendo que são os meus agentes locais que não começam, porque não descobrir. Parece começar melhor nas últimas versões do terminal.

 
fxsaber:

Em 10, o consumo de memória do Terminal mostra-se elevado. No Windows Server é muito menos.

Aparentemente, o cálculo do consumo de memória depende do sistema operativo.

Tenho a sensação de que o servidor não está totalmente correcto no Windows Server.

Ou, mais precisamente, as configurações gráficas estão constantemente a ser redefinidas e depende da falta de memória. Ao mesmo tempo, tudo parece ser normal no expedidor. Ou o vpc é limitado ou o mt5 é mais voraz.

 
Print(PERIOD_H4);

dá um resultado de 16388. Como posso fazer o procedimento inverso: substituir o valor 16388 e obter uma cadeia com o nome do períodoPERÍODO_H4? Existe uma função incorporada ou devo escrever o meu próprio conversor? Se não houver uma função incorporada, como seria uma função personalizada? Seria necessário escrever algo como uma correspondência de valor chave?

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

dá um resultado de 16388. Como posso fazer o procedimento inverso: substituir o valor 16388 e obter uma cadeia com o nome do períodoPERÍODO_H4? Existe uma função incorporada ou devo escrever o meu próprio conversor? Se não houver uma função incorporada, como seria uma função personalizada? Seria necessário escrever algo como uma correspondência de valor chave?

Print(EnumToString((ENUM_TIMEFRAMES)16388));
 
fxsaber
Print(EnumToString((ENUM_TIMEFRAMES)16388));

Acontece que existe. Isso é um alívio. Obrigado.

 

Estou a tentar permitir que o utilizador seleccione tanto os prazos como o seu número a partir do menu da janela de configuração do indicador:

enum PERIOD
  {
   NO_PERIOD=0,      // NOT USED
   P1=PERIOD_H1,     // H1 
   P2=PERIOD_H2,     // H2 
   P3=PERIOD_H4,     // H4 
  };

input PERIOD TIMEFRAME_1=P1;
input PERIOD TIMEFRAME_2=P2;
input PERIOD TIMEFRAME_3=P3;

ENUM_TIMEFRAMES PArray[3]={P1,P2,P3};

e quero que os períodos seleccionados vão directamente para PArray. Mas a partir do exemplo acima, acontece que atribuo à matriz os valores pré-definidos no programa e não os valores introduzidos por um utilizador. Além disso, o compilador gera avisos:

implicit conversion from 'enum PERIOD' to 'enum ENUM_TIMEFRAMES'        test.mq5        23      28
   'ENUM_TIMEFRAMES::PERIOD_H1' will be used instead of 'PERIOD::P1'    test.mq5        23      28
implicit conversion from 'enum PERIOD' to 'enum ENUM_TIMEFRAMES'        test.mq5        23      31
   'ENUM_TIMEFRAMES::PERIOD_H2' will be used instead of 'PERIOD::P2'    test.mq5        23      31
implicit conversion from 'enum PERIOD' to 'enum ENUM_TIMEFRAMES'        test.mq5        23      34
   'ENUM_TIMEFRAMES::PERIOD_H4' will be used instead of 'PERIOD::P3'    test.mq5        23      34

Quando tento substituir a última linha por:

ENUM_TIMEFRAMES PArray[3]={TIMEFRAME_1,TIMEFRAME_2,TIMEFRAME_3};

o compilador gera um erro no seu conjunto:

'TIMEFRAME_1' - constant expression required    test.mq5        23      28
'TIMEFRAME_2' - constant expression required    test.mq5        23      40
'TIMEFRAME_3' - constant expression required    test.mq5        23      52

Além disso, NO_PERIOD=0 significaPERIOD_CURRENT, e eu não preciso disso, preciso de algo como falso ou VAZIO_VALOR, mas eles não cabem de todo.

Como repará-lo?

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