Errores, fallos, preguntas - página 279

 
Rosh:
No.
por eso no se puede organizar el acceso simultáneo:(((
 
Olegts:
por eso no se puede organizar el acceso simultáneo:(((.

Sí, el archivo abierto en MT5 con la bandera de compartir también estará disponible para cualquier otro programa, incluyendo MT4.

Vea cómo se hace aquí.

Es decir, si el archivo ya está abierto en MT4, la bandera Shaare permitirá que sea abierto por MT5 sin problemas. Resulta que MT4 funciona como de costumbre, mientras que MT5 puede permitir que otros programas utilicen un archivo ya abierto por él, o abrir un archivo abierto por otra persona sin la bandera de shahre.

 
Urain:

Sí, el archivo abierto en MT5 con la bandera de compartir también estará disponible para cualquier otro programa, incluyendo MT4.

Vea cómo se hace aquí.

Gracias, voy a echar un vistazo ahora...
 
Olegts:
Gracias, voy a echar un vistazo ahora...
He mirado, MT5 escribe y MT4 lee, funciona, pero si MT4 escribe, MT5 no puede leer porque el archivo está bloqueado, al menos a mí no me ha funcionado...
 
La sección de ayuda en la descripción del tipo de datos dice:
<br / translate="no">

Por ello, se desaconseja categóricamente comparar dos números reales entre sí para que sean iguales, ya que dicha comparación no es correcta.

Y se sugiere un método de comparación especial.

Si todavía necesitas comparar dos números reales para la igualdad, puedes...

Pero entonces se desprende la conclusión lógica de que no es recomendable comparar números reales ni siquiera mediante operaciones de mayor/menor, porque tal operación, en el sentido de lo anterior, es correcta sólo cuando un método especial establece primero correctamente que los valores comprobados no son iguales en términos de máquina cero.

Es decir, resulta que los operadores > y < para los números reales tampoco se pueden utilizar de forma pura. ¿He acertado, y si es así, por qué no añado el comentario correspondiente a la ayuda?


Pero, si el operador, por ejemplo, >, sólo puede utilizarse después de una comprobación correcta de la desigualdad, ¿cómo podemos organizar la comprobación de >=? ¿Es necesario complicar aún más el algoritmo, es decir, comprobar primero la igualdad con una función especial, y luego con una función especial para la desigualdad (antes de utilizar >)?


¿Quizás alguien haya desarrollado ya una biblioteca para todos los casos de comparación tanto para los tipos double como float? He esbozado algo para el tipo doble - no sé si es correcto:

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Функция проверки на равенство двух вещественных чисел типа double
bool EqualDoubles(const double d1, const double d2)
   {  
      const double epsilon=2.2204460492503131 e-016;//DBL_EPSILON
      if(d1-d2>epsilon) return false;
      if(d1-d2<-epsilon) return false;
      return true;
   }
// Конец функции проверки на равенство двух вещественных чисел типа double
//+++++++++++++++++++++++++++++++++++++++++++++++++
// Функция проверки на неравенство двух вещественных чисел типа double
bool NotEqualDoubles(const double d1, const double d2)
   {      
      return !EqualDoubles(d1, d2);
   }
// Конец функции проверки на неравенство двух вещественных чисел типа double
//+++++++++++++++++++++++++++++++++++++++++++++++++
// Функция проверки на меньшинство первого из двух вещественных чисел типа double
bool LessDoubles(const double d1, const double d2)
   {  
      if (NotEqualDoubles(d1, d2)&&(d1<d2))
      {
         return true;
      }
      return false;
   }
// Конец функции проверки на меньшинство первого из двух вещественных чисел типа double
//+++++++++++++++++++++++++++++++++++++++++++++++++
// Функция проверки на большинство первого из двух вещественных чисел типа double
bool GreaterDoubles(const double d1, const double d2)
   {  
      if (NotEqualDoubles(d1, d2)&&(d1>d2))
      {
         return true;
      }
      return false;
   }
// Конец функции проверки на большинство первого из двух вещественных чисел типа double
//+++++++++++++++++++++++++++++++++++++++++++++++++
// Функция проверки на меньшинство первого или равенство двух вещественных чисел типа double
bool LessEqualDoubles(const double d1, const double d2)
   {  
      if (LessDoubles(d1, d2)||EqualDoubles(d1, d2))
      {
         return true;
      }
      return false;
   }
// Конец функции проверки на меньшинство первого или равенство двух вещественных чисел типа double
//+++++++++++++++++++++++++++++++++++++++++++++++++
// Функция проверки на большинство первого или равенство двух вещественных чисел типа double
bool GreaterEqualDoubles(const double d1, const double d2)
   {  
      if (GreaterDoubles(d1, d2)||EqualDoubles(d1,d2))
      {
         return true;
      }
      return false;
   }
// Конец функции проверки на большинство первого или равенство двух вещественных чисел типа double

P.D. Si prevcalculado==0 vuelve a funcionar como siempre. ¿Bicho flotante?

 

¡Buenas tardes!

Necesito utilizar un indicador personalizado en el módulo de señales de trading.

Para ello, por lo que entiendo, necesito añadir un puntero a este objeto indicador en la "colección de indicadores(timeseries?)" como se hace en el ejemplo:

indicators.Add(GetPointer(m_MA)))

donde m_MA es un objeto de la clase CiMA.

Las funciones iCustom e IndicatorCreate devuelven el valor entero de un handle del indicador creado, pero yo necesito un objeto de este indicador, según entiendo.

Por favor, aconséjeme cómo salir de esta situación.

Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 
lVlaxim:

¡Buenas tardes!

Necesito utilizar un indicador personalizado en el módulo de señales de trading.

Para ello, por lo que entiendo, necesito añadir un puntero a este objeto indicador en la "colección de indicadores(timeseries?)" como se hace en el ejemplo:

donde m_MA es un objeto de la clase CiMA.

Las funciones iCustom e IndicatorCreate devuelven el valor entero de un handle del indicador creado, pero yo necesito un objeto de este indicador, según entiendo.

Por favor, aconséjeme cómo salir de esta situación.

Por lo que entiendo, debo escribir mi propio objeto indicador basado en CiCustom (de forma similar a como está escrito CiMA).

No puedo aconsejar en detalles, porque no he trabajado con índices, pero creo que entenderás o la gente te dirá la realización correcta.

PS

Por cierto, desarrolladores, por favor, añadid ejemplos a la sección de CiCustom...

 
-Alexey-:

Y se sugiere un método de comparación especial.

Pero entonces se deduce lógicamente que no es recomendable comparar números reales ni siquiera mediante operaciones de mayor/menor, porque tal operación, en el sentido de lo anterior, sólo es correcta si se establece correctamente de antemano, mediante un método especial, que los valores que se comprueban no son iguales en el sentido de la máquina cero.

Quizás no he entendido bien el punto, pero si se están comparando dos números reales, digamos, con la ayuda de la operación "<" y los números reales que se están comprobando son "iguales en el sentido de la máquina cero", la operación "<" simplemente devolverá falso. Lo que significa que "el primer número real no es menor que el segundo número real".
 
lVlaxim:

¡Buenas tardes!

Necesito utilizar un indicador personalizado en el módulo de señales de trading.

Para ello, por lo que entiendo, necesito añadir un puntero a este objeto indicador en la "colección de indicadores(timeseries?)" como se hace en el ejemplo:

donde m_MA es un objeto de la clase CiMA.

Las funciones iCustom e IndicatorCreate devuelven el valor entero de un handle del indicador creado, pero yo necesito un objeto de este indicador, según entiendo.

Por favor, aconséjeme cómo salir de esta situación.

Por ahora, tome este archivo como ejemplo.

La clase CSignalCustomMACD es absolutamente idéntica a CSignalMACD, excepto por el hecho de que se basa en la versión "personalizada" del indicador de la entrega estándar.

No olvides añadir una línea en el código fuente del Asesor Experto:

#property tester_indicator "Examples\MACD.ex5"

de lo contrario, no funcionará en el probador.

Si no hay un archivo MACD.ex5 en la carpeta Indicators\Examples, el indicador debe ser compilado.

Próximamente se añadirá un ejemplo en la ayuda.

Archivos adjuntos:
 
Yedelkin:
Tal vez no entiendo bien el problema, pero si se comparan dos números reales usando, digamos, la operación "<", y los números reales que se comprueban son "iguales en el sentido de la máquina cero", entonces la operación "<" simplemente devolverá falso, y ya está. Lo que significaría que "el primer número real no es menor que el segundo número real".
Esto sería lógico, pero ahora la operación ">" ("<" no lo comprobó) puede devolver verdadero para tales números "iguales en el sentido de la máquina cero". El efecto se detectó porque el resultado del cálculo numérico era mayor de lo teóricamente posible como consecuencia de este efecto, pero después de utilizar las funciones especiales anteriores se hizo realidad. Por eso propongo un complemento a la ayuda.