Errori, bug, domande - pagina 750

 
Su indicatori di grafici live multi-timeframe, il tester ovviamente impazzisce... Tutto è sempre più stretto.
 
x100intraday:
Su indicatori di grafici live multi-timeframe, il tester ovviamente impazzisce... Tutto è affusolato.
Posso fare un esempio? Mi chiedo che aspetto abbia, perché nulla è chiaro dalla spiegazione.
 
tol64:
Posso fare un esempio? Mi chiedo come sia, perché dalla spiegazione nulla è chiaro.

Certo che si può. Appena l'avrò finito, lo renderò disponibile gratuitamente... ma nel frattempo...

Il fatto è che secondo i miei sospetti il tester non ha mai pensato di lavorare in modo impeccabile su tutti i timeframe preimpostati, traccia adeguatamente solo il timeframe selezionato per il test. Ma questa è solo una sensazione, non ho idea di come funzioni nella realtà.

A proposito, dovrò passare molto tempo a sistemarlo senza un'esecuzione adeguata nel tester perché dovrò testare tutto in tempo reale senza alcuna accelerazione.

 

Agli sviluppatori

Non capisco la logica di ChartIndicatorDelete. Qual è il trucco per lavorare con nomi brevi?

Aggiungere per maniglia e cancellare per nome breve, è logico?

Immagino che dovrei cambiare il parametro da name a handle, o aggiungere un duplicato della funzione con handle.

 

Agli sviluppatori di

Qualcuno può spiegare perché questo codice funziona nel terminale senza errori, ma nel tester con errori?

  if((FirstStart)&&(Handle_JRSX==INVALID_HANDLE))
  {
  Handle_JRSX = iCustom(NULL,PERIOD_D1,"3c_JRSX_H",20,240);
  
    if(Handle_JRSX==INVALID_HANDLE)ChartIndicatorAdd(0,1,Handle_JRSX);
  
  }

Nel testerChartIndicatorAdd restituisce false e viene visualizzato l'errore 4014.

Allostesso tempo la modalità visiva nel tester mostra che l'indicatore è sul grafico ed è reso normalmente.

 
victorg:

Per favore, aiutatemi a capire!

Nel processo dei miei calcoli ottengo dei numeri il cui significato non mi è chiaro.

Assegno tale numero alla variabile a e lo stampo:

Risultato:

Ma secondo la documentazione, il tipo doppio non può avere potenze inferiori a -308. Chi sa che tipo di numeri sono?

È una foresta oscura...

Sto cercando di impostarlo su una potenza

     double x,z;
     int y;
     x=-7.56414503782948460000;
     y=MathPow(
     10,         // основание 
     321      // показатель степени
     );
     z=x*y;
     Print("z = ",z);

Ricevo

2012.06.11 09:55:30     dbl (EURUSD,M4) z = 16243877779.83916

ma

     double a=-7.56414503782948460000 e-321;
     int b=a;
     Print("b = ",b);

sembra giusto, traboccare e

2012.06.11 09:55:30     dbl (EURUSD,M4) b = 0

unendo la domanda.

 

C'è qualche funzionalità che permette di impostare/modificare l 'altezza del grafico?

Se non c'è questa funzionalità, vorrei ottenerla.

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

Foresta oscura...

Per quanto ho capito lo standard IEEE 754, il più piccolo valore di numero positivo per il doppio è circa 2,3-10-308. Ma questo valore corrisponde ai numeri normalizzati, cioè i numeri che hanno mantissa almeno uguale a uno. Tuttavia, ci sono anche numeri non normalizzati, numeri il cui valore di mantissa è inferiore a uno. Per questi numeri il più piccolo numero positivo per il doppio è circa 5,0-10-324. Il supporto di numeri non normalizzati solleva sempre molte domande. Sembra che MQL5 supporti operazioni con numerinon normalizzati, anche se il manuale non dice nulla al riguardo. Quindi la domanda sorge spontanea: come dovrebbe reagire la funzione MathIsValidNumber() a tali numeri?

Possiamo assicurarci che MQL5 non consideri i numeri non normalizzati uguali a zero

double a=-7.56414503782948460000 e-321;
PrintFormat("a = %.18e",a);
if(a==0.0)Print("a == 0.0");
else Print("a != 0.0");

ottenere

  a != 0.0
  a = -7.564145037829484600 e-321
Per quanto riguarda iltuo esempio

     double a=-7.56414503782948460000 e-321;
     int b=a;
     Print("b = ",b);

Il numero a è molto più piccolo di uno in valore assoluto, quindi anche l'intero b è uguale a zero. Probabilmente è corretto.

 
Interesting:

Agli sviluppatori

Non capisco la logica di ChartIndicatorDelete. Qual è il trucco per lavorare con nomi brevi?

Aggiungere per maniglia e cancellare per nome breve, è logico?

Immagino che dovrei cambiare il parametro da name a handle, o aggiungere un duplicato della funzione con handle.

Tutte le funzionalità necessarie sono già presenti, vedi esempio per IndicatorParameters()
 
Interesting:

C'è qualche funzionalità che permette di impostare/modificare l 'altezza del grafico?

Se non c'è questa funzionalità, mi piacerebbe ottenerla.

Vedere EA_OBJPROP_CHART_ID
Motivazione: