Errori, bug, domande - pagina 1178

 
svds75:
No, devo impostarlo manualmente e controllarlo programmaticamente.
Poi devo leggere il flag di visibilità e fare un & logico con la costante.
 

Come questo:

   long cf=ObjectGetInteger(0,"name",OBJPROP_TIMEFRAMES);
   Alert(((cf&OBJ_PERIOD_H1)==OBJ_PERIOD_H1) || cf==0);
Se il flag di visibilità su H1 è impostato, sarà vero.
 
Integer:
Poi devi leggere il flag di visibilità e fare un & logico con la costante.

Se intendi:

ObjectGetInteger(0,"line",OBJPROP_TIMEFRAMES,OBJ_PERIOD_W1&OBJ_PERIOD_MN1,res);

Oppure

ObjectGetInteger(0,"line",OBJPROP_TIMEFRAMES,OBJ_PERIOD_W1&&OBJ_PERIOD_MN1,res);
La stessa cosa.
 
svds75:

Se intendi:

Oppure

La stessa cosa.
No. Non c'è bisogno di fare get con l'enumerazione. Basta ottenere, e poi controllare se il flag di tempo richiesto è impostato. Qui sopra c'è un esempio.
 
svds75:

Se intendi:

Oppure

La stessa cosa.

Il tuo errore qui è bool(res), poiché res è sempre maggiore di 1 in qualsiasi mappatura, vedi cosa viene restituito in res, quindi bool(res) restituirà solo 0 o falso quando res=0

State usando la conversione dei tipi e il confronto in modo disattento

OBJ_NO_PERIODS

0

L'oggetto non viene mostrato in nessun momento

OBJ_PERIOD_M1

0x00000001

L'oggetto è tracciato su grafici a 1 minuto

OBJ_PERIOD_M2

0x00000002

L'oggetto è tracciato su grafici a 2 minuti

OBJ_PERIOD_M3

0x00000004

L'oggetto è tracciato su grafici a 3 minuti

OBJ_PERIOD_M4

0x00000008

L'oggetto è tracciato su grafici a 4 minuti

OBJ_PERIOD_M5

0x00000010

L'oggetto è tracciato su grafici a 5 minuti

OBJ_PERIOD_M6

0x00000020

L'oggetto è tracciato su grafici a 6 minuti

OBJ_PERIOD_M10

0x00000040

L'oggetto è tracciato su grafici a 10 minuti

OBJ_PERIOD_M12

0x00000080

L'oggetto è tracciato su grafici a 12 minuti

OBJ_PERIOD_M15

0x00000100

L'oggetto è tracciato su grafici a 15 minuti

OBJ_PERIOD_M20

0x00000200

L'oggetto è tracciato su grafici a 20 minuti

OBJ_PERIOD_M30

0x00000400

L'oggetto è tracciato su grafici a 30 minuti

OBJ_PERIOD_H1

0x00000800

L'oggetto è tracciato su grafici a 1 ora

OBJ_PERIOD_H2

0x00001000

L'oggetto è tracciato su grafici a 2 ore

OBJ_PERIOD_H3

0x00002000

L'oggetto è tracciato su grafici a 3 ore

OBJ_PERIOD_H4

0x00004000

L'oggetto è tracciato su grafici a 4 ore

OBJ_PERIOD_H6

0x00008000

L'oggetto è tracciato su grafici a 6 ore

OBJ_PERIOD_H8

0x00010000

L'oggetto è tracciato su grafici a 8 ore

OBJ_PERIOD_H12

0x00020000

L'oggetto è tracciato su grafici a 12 ore

OBJ_PERIOD_D1

0x00040000

L'oggetto è tracciato su grafici giornalieri

OBJ_PERIOD_W1

0x00080000

L'oggetto è tracciato su grafici settimanali

OBJ_PERIOD_MN1

0x00100000

L'oggetto è tracciato su grafici mensili

OBJ_ALL_PERIODI

0x001fffff

L'oggetto è tracciato su tutti i timeframe

 
Integer:

Ecco fatto:

Se il flag di visibilità su H1 è impostato, sarà vero.
Funziona, grazie.
 
meat:

Come continuazione del mio post precedente, sono riuscito a trovare l'area problematica che causa il bug usando il metodo scientifico.

Abbiamo una tale libreria con la funzione:

Ecco il file principale:

L'Expert Advisor risultante non funziona e visualizza nel log: "EX5 loading failed".

Grazie per il post, è stato corretto.
 

Ciao. Ho bloccato l'EA nella funzione OnInit e deve essere la ragione per cui il terminale si blocca quando spengo l'EA e cambio timeframe (il timeframe non cambia dopo i freni). Quindi la mia domanda è: è causato dagli hangs? Se è così, è corretto se sposto l'algoritmo a OnTick? Se no, cosa potrebbe aiutare?

PS: il ciclo ha una funzione Sleep, in modo che il terminale non sia sovraccaricato. I campi di input vengono letti nel ciclo.

 
king20:

Ciao. Ho bloccato l'EA nella funzione OnInit e deve essere la ragione per cui il terminale si blocca quando spengo l'EA e cambio timeframe (il timeframe non cambia dopo i freni). Quindi la mia domanda è: è causato dagli hangs? Se è così, è corretto se sposto l'algoritmo a OnTick? Se no, cosa potrebbe aiutare?

PS: il ciclo ha una funzione Sleep, in modo che il terminale non sia sovraccaricato. I campi di input vengono letti nel ciclo.

Formattare il disco rigido.
 
king20:

Ciao. Ho bloccato l'EA nella funzione OnInit e probabilmente a causa di questo il terminale si blocca quando spengo l'EA e cambio timeframe (il timeframe non cambia dopo i freni). Quindi la mia domanda è: è causato dagli hangs? Se è così, è corretto se sposto l'algoritmo a OnTick? Se no, cosa potrebbe aiutare?

PS: il ciclo ha una funzione Sleep, in modo che il terminale non sia sovraccaricato. I campi di input vengono letti nel ciclo.

OnInit - serve solo per l'inizializzazione. Tutti i calcoli devono essere fatti ulteriormente - OnTick, OnTimer ecc.

Se avete bisogno di conoscere il cambiamento nel campo di input, c'è una libreria standard per questo: https://www.mql5.com/ru/docs/standardlibrary/controls/cedit

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