Preguntas de un "tonto" - página 66

 
Yedelkin:

Todo depende de la lógica del indicador personalizado. En principio, puede recalcular sus valores una vez al día, saltándose todos los demás ticks. Según la voluntad del autor, por así decirlo.

Básicamente, algunas personas tratan de utilizar este enfoque monstruoso: crear una copia del indicador a través de iCustom, copiar los datos necesarios, eliminar la copia del indicador. El procedimiento se repite según sea necesario.

También existe la función OnTimer(). No he trabajado con ella, pero quizás puedas adaptarla a tu tarea.

Gracias. Me lo imaginaba. El OnTimer no es adecuado.

Hay una situación en la que el indicador está en M5 pero se llama una vez por hora, por ejemplo. Resulta que el indicador se calculará en el Asesor Experto en vacío cada 5 minutos por el hecho de llamarlo una vez por hora. Por eso me pregunto si existe la posibilidad de pausar el recálculo del indicador.

 
masharov:

Hay una situación en la que el indicador está en M5, pero se llama una vez por hora, por ejemplo. Resulta que el indicador se calculará en el Asesor Experto ociosamente cada 5 minutos por el hecho de llamarlo una vez por hora.

¿Y no se puede reescribir el indicador para que se llame por hora?
 
Yedelkin:
¿No es posible reescribir el indicador para que calcule por horas?
El comercio está en M5. No se sabe cuándo se llamará el indicador. Puede ser una vez cada dos horas o tres veces por hora. El indicador se utiliza para confirmar la decisión de realizar una operación.
Способы вызова индикаторов в MQL5
Способы вызова индикаторов в MQL5
  • 2010.03.09
  • KlimMalgin
  • www.mql5.com
C появлением новой версии языка MQL, не только изменился подход к работе с индикаторами, но и появились новые способы создания индикаторов. Кроме того, появилась дополнительная гибкость при работе с индикаторными буферами - теперь вы можете самостоятельно указать нужное направление индексации и получать ровно столько значений индикатора, сколько вам требуется. В этой статье рассмотрены базовые методы вызова индикаторов и получения данных из индикаторных буферов.
 
masharov:
el comercio va en M5. No se sabe cuándo se convocará el indicador. Puede ser una vez cada dos horas, o puede ser tres veces en una hora. El indicador se utiliza para confirmar la decisión de operar.
La lógica es clara. En estos casos, lo hice de forma inteligente y sencilla: transferí el bloque de cálculos del indicador directamente al Asesor Experto. Es decir, en lugar de la fuente de datos externa (indicador), el Asesor Experto utilizaba una de sus funciones, la que reproducía el algoritmo de cálculo del indicador. En este caso, esta función se llamaba cuando era necesario, con un recálculo completo de los valores requeridos.
 

Hola, podría decirme por favor,

1)¿Qué hacer con errores comoTRADE_RETCODE_LOCKED,TRADE_RETCODE_FROZENy en qué caso se bloquea la solicitud o se congela la posición/orden?

2)También me pregunto qué hacer conTRADE_RETCODE_INVALID_FILLy en qué caso se produce.

 
PunkBASSter:

Hola, ¿podría decirme por favor,

1)¿Qué hacer con errores comoTRADE_RETCODE_LOCKED,TRADE_RETCODE_FROZENy en qué caso se bloquea la solicitud o se congela la posición/orden?

2)También me pregunto qué hacer con TRADE_RETCODE_INVALID_FILLy en qué caso se produce.

1) Comprueba la búsqueda en el foro. Se habló de ello hace un año.

2) Busque en la referencia ENUM_ORDER_TYPE_FILLING . Probablemente una falta de coincidencia en la solicitud de negociación para el "tipo de orden de ejecución" especificado con el modo de ejecución y dará lugar al código de retorno especificado.

Por ejemplo ORDER_FILLING_FOK y SYMBOL_TRADE_EXECUTION_MARKET.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Yedelkin, muchas gracias)
 
masharov:

Tengo la sospecha de que si el indicador se activa a través de iCustom, se calcula en cada tick. Y no depende de las llamadas a él a través del CopyBuffer. ¿Es correcto?

Si es correcto, ¿es posible desactivar el cálculo del indicador y activarlo sólo antes de llamar al CopyBuffer?

Si te he entendido bien, entonces puedes intentar limitar los cálculos en los siguientes ticks según el ejemplo de la ayuda de iFractals (ver las condiciones múltiples en OnCalculate).

Tal vez, también se puede marcar en OnCalculate la ejecución inicial de los cálculos del indicador para todas las barras necesarias y comprobar la hora del servidor del terminal, y después de que suceda, para restablecer la bandera a falso, permitiendo así el recálculo, y establecerlo a verdadero de nuevo... y así sucesivamente.

O incluso así: escribir una función externa con cálculos, llamarla en OnInit, donde se ejecutará una vez en el primer inicio del indicador (así como cuando se cambien los TFs y etc., que se produce a iniciativa del usuario), y luego llamar a la misma función en OnCalculate de la segunda manera (en el momento especificado en el servidor y marcando).

Pero el primer método es bueno, no sólo no carga el procesador con recálculos completos (a menudo conduciendo a ningún resultado nuevo) en cada tick, sino que ni siquiera hará recálculos completos en un intervalo de tiempo dado, y sólo calculará las barras más nuevas (si en cada tick, entonces una nueva, y si una vez t, entonces varias acumuladas durante este tiempo)... Aunque esta versión es mejor para comprobar personalmente, puedo estar equivocado... Además, todo depende de la finalidad específica del indicador. Si depende de una gran cantidad o incluso de todo el historial del mercado, entonces no puede librarse de los recálculos de todo el historial.

 

No entendí el humor del chiste (escribir un indicador, aunque no hace ninguna diferencia):

struct TBuffer
{
  double buffer[];
};

TBuffer BuffArray[4];

Compila sin errores ni advertencias.

int elements=4;

struct TBuffer
{
  double buffer[];
};

TBuffer BuffArray[elements];

Compilado con1 error(es), 0 advertencia(s): 'elementos' - valor de índice no válido.

¿Qué puede haber más allá del obvio sentido común aquí?

 
x100intraday:


¿Qué puede haber más allá del obvio sentido común aquí?

el número de elementos de la matriz se especifica mediante una constante

Si el número de elementos no se conoce de antemano, utilice ArrayResize para establecer el tamaño utilizando variables.

Esto es lo básico de c++.

Así que, o bien

#define  elements 4
Razón de la queja: