Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 948

 

Por favor, indíquenos cómo quedaría aproximadamente el siguiente diseño:

1) Se genera un nuevo tick - la condición se cumple, por ejemplo, en este tick se dibujará una indicación de patrón y se dará una alerta

2) Una vez cumplida la condición anterior, es necesario detener las múltiples repeticiones de la misma acción descrita anteriormente hasta que el periodo de tiempo sea igual:

TimeCurrent() <= (time[index] + PeriodSeconds(PERIOD_CURRENT))

3) Tan pronto como la barra cambie a la siguiente, reanude la condición de nuevo hasta el siguiente período de tiempo descrito anteriormente

¿Es realista este diseño?

 
clickaider:

Por favor, indíquenos cómo quedaría aproximadamente el siguiente diseño:

1) Se genera un nuevo tick - la condición se cumple, por ejemplo, en este tick se dibujará una indicación de patrón y se dará una alerta

2) Una vez cumplida la condición anterior, es necesario detener las múltiples repeticiones de la misma acción descrita anteriormente hasta que el periodo de tiempo sea igual:

3) Tan pronto como la barra cambie a la siguiente, reanude la condición de nuevo hasta el siguiente período de tiempo descrito anteriormente

¿Es realista este diseño?

Ya has escrito tú mismo la mayor parte de la lógica...

 
Artyom Trishkin:

Ya has escrito tú mismo la mayor parte de la lógica...

La lógica puede ser correcta, pero el problema es encontrar la funcionalidad adecuada. ¿Podríais aconsejar qué funciones o construcciones de ejemplo aplicar para intentar resolver el problema, ya que estoy bastante perplejo.

 
clickaider:

La lógica puede ser correcta, pero el problema es encontrar la funcionalidad adecuada. ¿Podría aconsejar qué funciones o diseños de ejemplo para tratar de resolver el problema, ya que estoy bastante perplejo aquí.

  1. Se genera un nuevo tick - la condición se cumple, por ejemplo, la indicación del patrón se dibujará en este tick y se generará una alerta.
    1. Necesito una función que obtenga una condición y establezca la bandera de esa condición para trabajar con las siguientes dos cláusulas
    2. Necesito una función para dibujar un patrón
    3. Necesito una función para enviar alertas (no necesariamente una función - hay funciones estándar para sólo alertas, sólo correo electrónico y sólo push)
  2. Después de que se cumpla la condición anterior, tenemos que detener la ejecución de múltiples repeticiones de la misma acción de la acción anterior hasta un período de tiempo igual a...
    1. Si hay un indicador de que los tres pasos del paso 1 ya están hechos, entonces no haga nada - vaya al paso 3, de lo contrario vaya al paso 1
  3. En cuanto la barra cambie a la siguiente, reinicia la condición hasta el siguiente periodo de tiempo descrito anteriormente
    1. Necesitamos una función para definir una nueva barra. En cuanto se haya definido una nueva barra, se pasa al paso 1. En caso contrario, se pasa al paso 2.
 

Por favor, ayuda.

Tengo una lista de enum.

enum ENUM_Target_NAME 
  {
   arr_Buy,
   arr_Sell,
   arr_Svod,
   arr_Regr,
   arr_200,
   arr_100,
   Target_25_iD,
   Target_50_iD,
  };
input ENUM_Target_NAME Target=ENUM_Target_NAME(5);

Necesito que los valores se conviertan en una cadena, es decir, que se conviertan en un texto, este enfoque no funciona

(string)Target

Recibo simplemente el número de un valor variable de la lista, y necesito el texto - el nombre real de la lista, por ejemplo, "arr_100".

¿Cómo hacerlo?

 
Aleksey Vyazmikin:

Por favor, ayuda.

Tengo una lista de enum.

Necesito que los valores se conviertan en una cadena, es decir, que se conviertan en un texto, este enfoque no funciona

Recibo simplemente el número de un valor variable de la lista, y necesito el texto - el nombre real de la lista, por ejemplo, "arr_100".

¿Cómo hacerlo?

EnumToString()

 
Artyom Trishkin:

EnumToString()

Gracias.

 
Nauris Zukas:

¿Puedes darme un enlace a la documentación de lo que significan estos símbolos <>?

Este es un método de plantilla. El tipo del parámetro que contiene se corresponderá con el tipo pasado entre estos paréntesis. El tipo se determina estáticamente en la fase de compilación del programa. Puede leer más sobre ello en "plantillas de funciones y clases":https://www.mql5.com/ru/docs/basis/oop/templates.

Документация по MQL5: Основы языка / Объектно-ориентированное программирование / Шаблоны функций
Документация по MQL5: Основы языка / Объектно-ориентированное программирование / Шаблоны функций
  • www.mql5.com
Перегруженные функции обычно используются для выполнения похожих операций над различными типами данных. Простой пример такой функции в MQL5 - ArraySize(), которая возвращает размер массива любого типа. На самом деле эта системная функция является перегруженной, и вся реализация такой перегрузки спрятана от разработчика программ на MQL5: То есть...
 
Nauris Zukas:

Buenas tardes! He hecho .mqh para el procesamiento y almacenamiento de datos en el recurso. Todo funciona, pero hay un matiz, si compilo el indicador, el .mqh se reinicia y vuelve a hacer el proceso de peso para el almacenamiento. Objetivo: mientras haya datos en el recurso no se restablece. ¿Dónde está el error, cómo solucionarlo?

Los recursos están diseñados para contener datos estáticos (permanentes) e inmutables. Su tarea es descargar un archivo con datos y cambiar los datos en la memoria del indicador y guardar los nuevos datos en el archivo, por lo que después del reinicio y la recompilación del indicador descargará nuevos datos. Los recursos no ayudarán a hacerlo.

 
Vasiliy Sokolov:

Los recursos están diseñados para mantener datos estáticos (constantes) e inmutables. Para su tarea necesita cargar un archivo con datos, cambiar estos datos en la memoria del indicador y guardar el nuevo peso de los datos en el archivo, para que después de recargar y recompilar el indicador pueda cargar nuevos datos. Los recursos no ayudarán a hacerlo.

Ya veo, ¡gracias!

Razón de la queja: