Errori, bug, domande - pagina 717

 
sergeev:
curwords = NULL
perché allora Print("next======",curwords.m_next!=NULL); non lancia un errore?
 
fellow:
perché Print("next======",curwords.m_next!=NULL); non lancia un errore?

perché

curwords.m_next!=NULL


Azzerate i riferimenti quando create gli oggetti?

Non è NULLA quando lo si crea.

Gli sviluppatori vi hanno dato la funzione CheckPointer.

 
MoneyJinn:
L'elemento con indice 0 viene cancellato, mentre l'elemento più recente dell'array dovrebbe essere cancellato, cioè con indice (n-1), dove n è la dimensione dell'array.
Aspetta. Per prima cosa, hai scritto"ArrayResize() error when array size is reduced when ArraySetAsSeries() = true". Cioè, l'elemento più "fresco" aveva un indice di 0. È corretto?
 

resettare

int OnInit()
{
firstwords.m_next=NULL; firstwords.m_prev=NULL;

il risultato è lo stesso

prova tu stesso

 
fellow:

prova tu stesso

perché dovrei provarlo :)

funziona bene per me :))

 

Le icone possono essere impostate e visualizzate come richiesto.

Il terminale scrive nella cartella User. Specifico la chiave /portable nel collegamento.

 
fellow:

resettare

int OnInit()
{
firstwords.m_next=NULL; firstwords.m_prev=NULL;

il risultato è lo stesso

Provate voi stessi.

Si prega di scrivere a servicedesk. Specificare il sistema operativo, il bit rate e la costruzione del terminale. Si prega di allegare il codice sorgente su cui il problema viene riprodotto continuamente - occupiamocene.

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
Yedelkin:

OK. Allora mi prendo il coraggio. Così, la descrizione della funzione Print() dice che "i dati di tipo doppio sono stampati con la precisione di 16 cifre decimali dopo il punto". In effetti, si scopre che la funzione Print() produce dei dati un po' arrotondati:

ND 0 victorg2 (EURUSD,M1) 11:04:42 Print(b)=200.0
MP 0 victorg2 (EURUSD,M1) 11:04:42 Print(DoubleToString(b,16))=199.999999999999999716

Grazie per aver sollevato l'argomento, un nuovo esempio più completo per la funzione Print è stato aggiunto all'aiuto:

Esempio:

void OnStart()
  {
//--- выведем DBL_MAX с помощью Print(), это равносильно PrintFormat(%%.16G,DBL_MAX)
   Print("---- как выглядит DBL_MAX -----");
   Print("Print(DBL_MAX)=",DBL_MAX);
//--- теперь выведем число DBL_MAX с помощью PrintFormat()
   PrintFormat("PrintFormat(%%.16G,DBL_MAX)=%.16G",DBL_MAX);
//--- Вывод в журнал "Эксперты"
// Print(DBL_MAX)=1.797693134862316e+308
// PrintFormat(%.16G,DBL_MAX)=1.797693134862316E+308
 
//--- посмотрим как выводится тип float
   float c=(float)M_PI; // нужно явно приводить к целевому типу
   Print("c=",c, "    Pi=",M_PI, "    (float)M_PI=",(float)M_PI);
// c=3.14159    Pi=3.141592653589793    (float)M_PI=3.14159
   
//--- покажем, что может произойти при арифметических операциях над вещественными типами
   double a=7,b=200;
   Print("---- перед арифметическими операциями");
   Print("a=",a,"   b=",b);
   Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- разделим a на b (7/200)
   a=a/b;
//--- теперь как будто восстановим значение в переменной b
   b=7.0/a; // ожидается, что b=7.0/(7.0/200.0)=>7.0/7.0*200.0=200 - но это не так
//--- выведем вновь вычисленное значение b
   Print("----- после арифметических операций");
   Print("Print(b)=",b);
   Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- вывод в журнал "Эксперты"
// Print(b)=200.0
// Print(DoubleToString(b,16))=199.9999999999999716 (видим, что на самом деле b уже не равно 200.0)   
 
//--- создадим очень маленькое значение epsilon=1E-013
   double epsilon=1 e-13;
   Print("---- создадим очень маленькое число");
   Print("epsilon=",epsilon); // получим   epsilon=1E-013
//--- теперь вычтем эпсилон из числа b и выведем снова значение в журнал "Эксперты"
   b=b-epsilon;
//--- выводим двумя способами
   Print("---- после вычитания epsilon из переменной b");
   Print("Print(b)=",b);
   Print("Print(DoubleToString(b,16))=",DoubleToString(b,16));
//--- вывод в журнал "Эксперты"
// Print(b)=199.9999999999999  (теперь значение b после вычитания эпсилон не может округлиться до 200)
// Print(DoubleToString(b,16))=199.9999999999998578
//    (теперь значение b после вычитания эпсилон не может округлиться до 200)
  }
 

come faccio a sapere il punto per due valute?

per lo strumento corrente:

double P1=Point();

diciamo per le valute Symbol1, Symbol2?

 

Ladimensione dell'elemento può essere ottenuta con SymbolInfoDouble(symbol_name, property).

ENUM_SYMBOL_INFO_DOUBLE

Identificatore

Descrizione

Tipo di proprietà

SIMBOLO_BID

Offerta - migliore offerta per la vendita

doppio

SYMBOL_ASK

Chiedi - migliore offerta

doppio

SIMBOLO_INDIETRO

Prezzo al quale è stato eseguito l'ultimo scambio

doppio

PUNTO SIMBOLO

Valore di un pip

doppio