Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 1331
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
Ayuda a arreglar el indicador, no se muestra en la terminal MT5, da errores durante la compilación.
Ayuda para arreglar el indicador, no se muestra en la terminal MT5, da errores al compilar.
La forma más fácil es establecer ArraySetAsSeries(Open,true) ; ArraySetAsSeries(Close,true) ; y así sucesivamente en OnCalculate al principio de todas las matrices.
esta es la sorpresa tradicional a primera vista: en 5 las direcciones de indexación por defecto son diferentes que en 4.
El indicador no utiliza buffers, sólo construye objetos gráficos - después de iniciar presione Ctrl+B y vea donde los pone
Escarbando en la documentación y en el foro...
Cómo hacer globales las variables de tipo puntero [en el ejemplo var], si se crean en OnInit() por cadena:
CObj* var=new CObj(p1,p2,p3);
y el número de objetos y los parámetros del constructor no se conocen de antemano y se calculan en OnInit() ?
Escarbando en la documentación y en el foro...
Cómo hacer globales las variables de tipo puntero, si se crean en OnInit():
y el número de objetos y los parámetros del constructor no se conocen de antemano y se calculan en OnInit() ?
No entiendo nada, pero pasa un array de punteros CArrayObj a los objetos creados en OnInit()
No se entiende nada, pero pasa un array de punteros CArrayObj a los objetos creados en OnInit()
Artem, gracias por su respuesta.
Me disculpo por la pregunta poco clara)
Hay tres variables globales de tipo puntero a un objeto en Expert Advisor: var1, var2, var3.
Antes de ejecutar OnInit(), se desconoce si todas estas variables serán necesarias (esto está relacionado con los plazos), también se desconocen los parámetros para los constructores, que inicializarán los objetos.
¿Cómo crear esas variables en OnInit() para que sean globales?
Artem, gracias por su respuesta.
Me disculpo por la pregunta poco clara)
En EA se pueden utilizar tres variables globales de tipo puntero: var1, var2, var3.
Antes de ejecutar OnInit(), se desconoce si todas estas variables serán necesarias (esto está relacionado con los plazos), también se desconocen los parámetros de los constructores que inicializarán los objetos.
¿Cómo crear dichas variables en OnInit(), para que sean globales?
No sé qué constructor mágico tienes ahí, que sólo contiene incógnitas :)
No es necesario declarar los objetos como instancias de antemano.
Es necesario declarar un array CArrayObj. Sus objetos deben ser descendientes de CObject.
Crea tu objeto mediante new y añade un puntero a él a la lista.
Crea el siguiente objeto y lo añade a la lista, y así sucesivamente.
Esta lista - un puntero a ella (y la lista se declara globalmente) - se pasa a sus constructores.
Pero así es como ibas a hacer constructores con argumentos desconocidos de antemano - no lo entiendo ni un poco. Intenta aclararlo
Pero así es como vas a hacer constructores con argumentos desconocidos de antemano - estoy un poco confundido aquí. Intenta explicarlo
Creación de objetos de tipo CIsNewBar para cada marco temporal utilizado para cada símbolo.
HH.Había un problema con la claseCArrayObj: al acceder a elementos de tipoCArrayObj* ArrayObj. At(0), los miembros de la clase del objeto que es At(0) son inaccesibles, aunque estos miembros de la clase son exactamente públicos, es decir, una construcción de tipo ArrayObj.At(0).method(parameter) no funciona.Los caracteres se especifican en una línea con separadores en el parámetro de entrada, por lo que no se pueden crear todos los objetos de antemano antes de OnInit().
Es decir, el primer parámetro desconocido del constructor es un símbolo.
El segundo parámetro desconocido del constructor es un marco temporal, ya que cada símbolo tendrá su propio conjunto de marcos temporales, pasados igualmente por una cadena con delimitadores en el parámetro de entrada.
Y también me da miedo usar estas librerías, quizás algo cambie en ellas al actualizar el terminal, y mi Expert Advisor deje de funcionar de repente...
Crear objetos de tipo CIsNewBar para cada marco temporal utilizado para cada símbolo.
P.D.Había un problema con la claseCArrayObj: al acceder a elementos de tipoCArrayObj* ArrayObj. At(0), los miembros de la clase objeto que At(0) no está disponible, aunque estos miembros de la clase son exactamente públicos, es decir, una construcción de tipo ArrayObj.At(0).method(parameter) no funciona.Los caracteres se especifican en una línea con delimitadores en el parámetro de entrada, por lo que es imposible crear todos los objetos antes de OnInit() por adelantado.
Es decir, el primer parámetro desconocido del constructor es un símbolo.
El segundo parámetro desconocido del constructor es un marco temporal, ya que cada símbolo tendrá su propio conjunto de marcos temporales, pasados igualmente por una cadena con delimitadores en el parámetro de entrada.
Y también me da miedo usar estas librerías, quizás algo cambie en ellas al actualizar el terminal, y mi Expert Advisor deje de funcionar de repente...
Todo está mal de alguna manera...
Escribe con palabras sencillas lo que quieres hacer. Sin ninguna referencia a sus intentos de codificar todo.
Simplemente no se siente bien...
Escribe con palabras sencillas lo que quieres hacer. Sin ninguna mención a sus intentos de codificar todo.
Asesor experto multidivisa.
La lista de símbolos se especifica mediante el parámetro de entrada, la cadena con el delimitador "AUDUSD,EURUSD,GBPUSD...", el número de símbolos no está predefinido.
Para cada símbolo, hay dos marcos temporales, en los que funciona su "propio" sistema de negociación.
En consecuencia, hay dos parámetros de entrada, cadenas delimitadas por : un plazo corto para un símbolo respectivo "M1,M30,M5..."
un marco temporal largo para el símbolo respectivo "H1,D1,H4.."
Es decir, para el AUDUSD los plazos son M1 y H1, para el EURUSD M30 y D1, etc.
En OnTick(), para cada símbolo, es necesario seguir la aparición de una nueva barra en ambos plazos (corto y largo) para tomar decisiones de negociación.
He intentado escribirlo de la forma más sencilla posible)
Asesor experto multidivisa.
La lista de símbolos se establece mediante el parámetro de entrada, una cadena con el separador "AUDUSD,EURUSD,GBPUSD...", el número de símbolos no está predefinido.
Para cada símbolo, hay dos marcos temporales, en los que funciona su "propio" sistema de negociación.
En consecuencia, hay dos parámetros de entrada, cadenas delimitadas por : un plazo corto para un símbolo respectivo "M1,M30,M5..."
un marco temporal largo para el símbolo respectivo "H1,D1,H4.."
Es decir, para el AUDUSD los plazos son M1 y H1, para el EURUSD M30 y D1, etc.
En OnTick(), para cada símbolo, es necesario seguir la aparición de una nueva barra en ambos plazos (corto y largo) para tomar decisiones de negociación.
He intentado escribirlo de la forma más sencilla posible).
¿Ya tiene una clase para un nuevo bar?
¿Y cómo son exactamente los parámetros de entrada?