Errores, fallos, preguntas - página 717

 
sergeev:
curwords = NULL
¿por qué entonces Print("next======",curwords.m_next!=NULL); no arroja un error?
 
fellow:
¿por qué Print("next======",curwords.m_next!=NULL); no arroja un error?

porque

curwords.m_next!=NULL


¿Cero referencias al crear objetos?

No es NULO al crearlo.

Los desarrolladores le han dado la función CheckPointer.

 
MoneyJinn:
El elemento con índice 0 se borra, mientras que el elemento más reciente de la matriz debe borrarse, es decir, con índice (n-1), donde n es el tamaño de la matriz.
Espera. En primer lugar, has escrito"ArrayResize() error cuando el tamaño del array se reduce cuando ArraySetAsSeries() = true". Es decir, que el elemento más "fresco" tenía un índice de 0. ¿Es esto correcto?
 

restablecer

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

el resultado es el mismo

pruébelo usted mismo

 
fellow:

pruébelo usted mismo

por qué debería probarlo :)

a mí me funciona bien :))

 

Los iconos pueden configurarse y mostrarse según las necesidades.

El terminal escribe en la carpeta de usuario. Especifico la tecla /portable en el acceso directo.

 
fellow:

restablecer

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

el resultado es el mismo

pruébalo tú mismo.

Escriba a servicedesk. Especifique el sistema operativo, la tasa de bits y la construcción del terminal. Por favor, adjunte el código fuente en el que se reproduce el problema de forma continua - nos ocuparemos de ello.

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

BIEN. Entonces, me atreveré. Así, la descripción de la función Print() dice que "los datos del tipo double se imprimen con la precisión de 16 dígitos decimales después del punto". De hecho, resulta que la función Print() produce datos algo redondeados:

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.999999999716

Gracias por sacar el tema, se ha añadido a la ayuda un nuevo ejemplo más completo para la función Imprimir:

Ejemplo:

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

¿Cómo puedo saber el punto para dos monedas?

para el instrumento actual:

double P1=Point();

digamos para las divisas Símbolo1, Símbolo2?

 

El tamaño del elemento se puede obtener con SymbolInfoDouble(nombre_de_símbolo, propiedad).

ENUM_SYMBOL_INFO_DOUBLE

Identificador

Descripción

Tipo de propiedad

SYMBOLO_BID

Oferta - mejor oferta de venta

doble

SYMBOL_ASK

Pedir - mejor oferta

doble

SÍMBOLO_ÚLTIMO

Precio al que se ejecutó la última operación

doble

PUNTO_SIMBOLO

Valor de un pip

doble

Razón de la queja: