Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
DBL_MAX estará allí.
¿Por qué no vuelve el nandl para discapacitados, aunque se haya eliminado la discapacidad?
La primera impresión es 10, la segunda es verdadera, la tercera es 10 otra vez. Poner un resbalón por minuto - todavía 10.
Creo que debería ser -1(INVALID_HANDLE). ¿Estoy pensando mal?
¿Por qué no vuelve el nandl para discapacitados, aunque se haya eliminado la discapacidad?
La primera impresión es 10, la segunda es verdadera, la tercera es 10 otra vez. Poner un resbalón por minuto - todavía 10.
Creo que debería ser -1(INVALID_HANDLE). ¿Estoy pensando mal?
Los indicadores borrados no se eliminan físicamente de forma inmediata, sino después de una pausa (quizás unos minutos), por si el mismo u otro programa los vuelve a abrir (opción de caché).
En la mayoría de los casos, esto es conveniente. El problema se producirá sólo si el ciclo lee búferes de un gran conjunto de indicadores (tan grandes que no todos ellos pueden caber en la memoria a la vez).
// Sólo en este caso tiene sentido liberar indicadores en el programa en absoluto.
// Todas las demás variantes de uso de la función IndicatorRelease() son "racialmente incorrectas", porque los indicadores se liberan al final del trabajo de todos modos.
De ahí la paradoja: la función es inútil porque el almacenamiento en caché mata por completo todos los casos de uso kosher.
En este caso, Renat prometió una vez hacer una variante de "liberación instantánea", pero al parecer sigue muy ocupado. ;)
--
Esa es más o menos la primera parte de la respuesta (sin la cual la segunda sería incomprensible).
Y ahora sobre INVALID_HANDLE. Por lo que veo, las funciones de liberación de objetos dinámicos, así como el operador de borrado, no asignan el valor INVALID_HANDLE al puntero per se; sólo eliminan los objetos a los que apunta el handle. Sólo las funciones de asignación de memoria (también el operador new) asignan forzosamente valores INVALID_HANDLE a los punteros en caso de fallo, por lo que la forma correcta de comprobar la validez del puntero es la función CheckPointer(), que literalmente busca en la tabla de handles del sistema en busca de un objeto y devuelve el tipo de handle si se encuentra el objeto o 0 si no.
Esperemos que la lógica de trabajar con punteros (handles) esté ahora un poco más clara. Así como los resultados de su ejemplo. Todo es correcto ahí : el indicador es un objeto de acceso grupal, no se elimina físicamente en el primer pitido (por lo que incluso CheckPointer() devolverá un valor distinto de cero), por no mencionar el fallo de esperar obtener el valor INVALID_HANDLE en la variable del puntero después de pasarlo a IndicatorRelease() por valor.
El artículo Órdenes, posiciones y operaciones en MetaTrader 5 da el ejemplo de que"Cada operación se basa en una orden particular, perouna orden puede generar múltiples operaciones. Por ejemplo, una orden de compra de 10 lotes puede ejecutarse mediante varias operaciones sucesivas en ejecución parcial". Entiendo que si quiero abrir una posición de, por ejemplo, 10 lotes, pueden aparecer varias operaciones en el historial. En mi estrategia, la posición 1 y 2 en la misma dirección, mi Asesor Experto (MT4) abre con 1.0 lote, y luego el tercero y luego 2.0 lote. En MT5 puede ocurrir que al abrir la primera posición en el historial aparezcan, por ejemplo, 2 o más operaciones. Pueden aparecer 2 o más operaciones en el historial. Cuando desee abrir una segunda posición, el Asesor Experto se desplazará por el historial y encontrará que será la tercera posición. Y abrirá el lote equivocado. Esto es un poco molesto.
Tal vez alguien sabe cómo resolver este problema o me da un enlace.
Gracias, justo lo que necesitas.
// nelp by nelp for dummies - eso es lo que se necesita en los artículos.
Estoy intentando crear un indicador que utilice dos marcos temporales diferentes, por ejemplo M5 (el actual en la pantalla) y H1. ¿Cómo sincronizar los precios entre estos diferentes marcos temporales? Por ejemplo, al calcular el último valor del indicador en M5, quiero bombear automáticamente los precios de H1 de la misma hora (es decir, la barra cero en ambos marcos temporales después de ArraySetAsSeries corresponde a la última hora actual, como en OnTick, pero no a la última barra en la pantalla). Si no existe tal posibilidad y debemos comprobar las horas de las barras manualmente, deberíamos añadir una función de sincronización, como OnTick, para los indicadores.
He intentado probarlo en el probador - es algo bueno. ¿Por qué el último valor calculado no se guarda en la pantalla?
Estoy intentando crear un indicador que utilice dos marcos temporales diferentes, por ejemplo M5 (el actual en la pantalla) y H1. ¿Cómo sincronizar los precios entre estos diferentes marcos temporales? Por ejemplo, al calcular el último valor del indicador en M5, quiero bombear automáticamente los precios de H1 de la misma hora (es decir, la barra cero en ambos marcos temporales después de ArraySetAsSeries corresponde a la última hora actual, como en OnTick, pero no a la última barra en la pantalla). Si no existe tal posibilidad y debemos comprobar las horas de las barras manualmente, deberíamos añadir una función de sincronización, como OnTick, para los indicadores.
He intentado probarlo en el probador - es algo bueno. ¿Por qué no se guardan en el indicador los valores calculados previamente?
Utilice una de las sobrecargas de la función CopyXXXX()
Al depurar, compruebe en qué dirección se copian los datos (si se copian más de 1).
Utilice una de las sobrecargas de CopyXXXX()
Al depurar, compruebe en qué dirección se copian los datos (si se copian más de 1).
¡Hola!
¿Podría decirme el código de un indicador que dibuje el máximo y el mínimo en los gráficos de los minutos actuales del día anterior?
¡SPS!
Mucho tiempo sin verte =).
Digamos. Hay un punto en el tiempo. Por ejemplo D'03.07.2005 13:48:12'.
¿Cómo puedo averiguar la hora de la barra (de un periodo determinado) que incluye este periodo de tiempo?
Estaría bien que hubiera una función como:
datetime УзнатьВремяБараПоВремениПользователя (datetime времяПользователя, ENUM_TIMEFRAMES периодБаров)
... Y que devolvería un valor negativo si no hubiera comercio en ese momento.
Bueno, escúpelo, ¿existe esa función?