Errori, bug, domande - pagina 2931

 

Su 10, il consumo di memoria del terminale è mostrato come elevato. Su Windows Server è molto meno.

Apparentemente il calcolo del consumo di memoria dipende dal sistema operativo.

 
fxsaber:

Questo è il tipo di caratteristica che, anche se la conoscete, dovete riportare tutto il livello nella vostra testa da capo.

Qui stavo facendo un'autodichiarazione di presenza. Sembrava funzionare quando si cambiavano i TF.

Non ci ho capito molto, ma a giudicare da queste righe:

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

il nome dell'indicatore (nel parametro 0) non viene utilizzato nella creazione della firma, il che è abbastanza strano.

 
fxsaber:

Il 10, il consumo di memoria del terminale è mostrato come alto. Su Windows Server è molto meno.

Apparentemente il calcolo del consumo di memoria dipende dal sistema operativo.

Piuttosto, la riserva di memoria sugli assi del server è più ottimale.
 
Stanislav Korotky:

Non ci ho capito molto, ma a giudicare da queste righe:

il nome dell'indicatore (nel parametro 0) non viene utilizzato nella creazione della firma, il che è abbastanza strano.

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

Sì, l'ho incontrato. Validate inizia il primo passaggio, i successivi no. Il pulsante di avvio non parte.

Debuggato - funziona. Ho fatto il debug nella release, tutto è presumibilmente a posto, ma non funziona.


Ora lancio appositamente la versione di debug. Preme il pulsante Start senza problemi.

Non sono riuscito a capire la ragione del bug.

Heh recentemente ha visto questa risposta.

Da quanto ho capito sono i miei agenti locali che non partono, perché non si è capito. Sembra iniziare meglio nelle ultime versioni del terminale.

 
fxsaber:

Il 10, il consumo di memoria del terminale è mostrato come alto. Su Windows Server è molto meno.

Apparentemente, il calcolo del consumo di memoria dipende dal sistema operativo.

Ho la sensazione che il server non sia del tutto corretto su Windows Server.

O, più precisamente, le impostazioni grafiche vengono costantemente reimpostate e dipende dalla carenza di memoria. Allo stesso tempo tutto sembra essere normale in dispatcher. O vpc è limitato o mt5 è più vorace.

 
Print(PERIOD_H4);

dà un risultato di 16388. Come posso fare la procedura inversa: sostituire il valore 16388 e ottenere una stringa con il nome del periodoPERIOD_H4? C'è una funzione integrata o devo scrivere il mio convertitore? Se non c'è una funzione integrata, come sarebbe una funzione personalizzata? Sarebbe necessario scrivere qualcosa come una corrispondenza chiave-valore?

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

dà un risultato di 16388. Come posso fare la procedura inversa: sostituire il valore 16388 e ottenere una stringa con il nome del periodoPERIOD_H4? C'è una funzione integrata o devo scrivere il mio convertitore? Se non c'è una funzione integrata, come sarebbe una funzione personalizzata? Sarebbe necessario scrivere qualcosa come una corrispondenza chiave-valore?

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

Si è scoperto che c'è. Questo è un sollievo. Grazie.

 

Sto cercando di permettere all'utente di selezionare entrambi i timeframe e il loro numero dal menu della finestra di configurazione dell'indicatore:

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 voglio che i periodi selezionati vadano direttamente in PArray. Ma dall'esempio precedente risulta che assegno all'array i valori preimpostati nel programma e non i valori inseriti da un utente. Inoltre, il compilatore genera degli avvertimenti:

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 provo a sostituire l'ultima riga con

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

il compilatore genera un errore in tutto e per tutto:

'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

Inoltre, NO_PERIOD=0 significaPERIOD_CURRENT, e non ne ho bisogno, ho bisogno di qualcosa come false o EMPTY_VALUE, ma non si adattano affatto.

Come risolvere il problema?

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