Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1121

 
Roman:

Porque hay muchas incoherencias con la realidad actual.
Y tú tratas de excusar esas incoherencias.
Por el contrario, ¡escribí que una garrapata no equivale a un punto!
Es tu propio punto interno, inventado.
En vista de que Point solía corresponder exactamente a un punto, cuando sólo había un cuatro dígitos.
Pero después de la introducción del quinto dígito, empezaste a inventar nombres con tus excusas.

No, no lo es. Ha sugerido que la distancia no se muestre en puntos, sino en tamaños de garrapatas.

Eso es una tontería. La distancia es la distancia. Y el tamaño del tick es el paso por el que el precio se mueve mínimamente en un momento dado.

Por eso no se pide la distancia del punto A al punto B, sino el número de pasos que se necesitan para recorrer esa distancia.

Te digo que está todo mezclado...

Su realidad es un poco despiadada. No contiene ni la mitad de los conceptos aceptados. Hay algo de tu cabeza.

 
Roman:

Probablemente porque hay que devolver el valor de retorno de la función.

Gracias por la respuesta, pero todavía no hay solución al problema... Necesito que el parámetro de la función "str" devuelva a MQL su estado modificado

extern "C" __declspec(dllexport) wchar_t* __stdcall ToString(wchar_t* &str)
{
        str = L"-- Я изменил параметр str :) --"; // Вот это я хочу получить!
        return L"--- Привет! ---";
}

En MQL4 en este momento:

#import  "Win32Project1.dll"
   string ToString(string &str);
#import

Bueno y la propia llamada a la función:

string str = "";
Print("-> Метод: " + ToString( str ));
Print("-> Параметр: " + str);

El resultado es este:

Es decir, el valor se pasa como parámetro, pero no es correcto... ¿Cómo puedo resolver este problema? :)

 
Vadim Lin:

Gracias por la respuesta, pero todavía no hay solución al problema... Necesito que el parámetro de la función "str" devuelva a MQL su estado modificado

En MQL4 en este momento:

Bueno y la propia llamada a la función:

El resultado es este:

Es decir, el valor se pasa como parámetro, pero no es correcto... ¿Cómo puedo resolver este problema? :)

El caballero descansa durante 24 horas para la pesca de arrastre.
 
Artyom Trishkin:

Si el terminal se bloquea, habrá que reiniciarlo. El indicador tendrá que ser colocado en el gráfico de nuevo, o ejecutar el Asesor Experto, que utiliza los datos de este indicador (entonces el Asesor Experto cargará este indicador por sí mismo al acceder a él). En este caso (e incluso en el reinicio normal del terminal con una carga automática de los programas instalados en el gráfico), el indicador dibujará todas sus líneas de nuevo - no hay necesidad de guardar nada. Estas líneas se pueden releer más tarde. Además, hay que leerlos de todos modos.

Para que el EA controle sólo las líneas creadas por el indicador, basta con mirar los nombres de las líneas creadas por el indicador y tratar de encontrar la subcadena que se repite en los nombres - lo mismo para todas las líneas. Busque las líneas necesarias por estas subcadenas.

Es sencillo: basta con mirar la lista de objetos cuando el indicador está en marcha.

Nos estamos desviando del tema. Cuanto más se discute, más se sale del tema. :)

El hombre sólo necesitaba conseguir el EVENTO, cuando el precio cruza la línea...

A continuación, empecé a especular por qué mi ejemplo era "problemático"... Aunque en realidad resuelve el problema, que en principio estaba planteado. A continuación - la imaginación del autor, ayudé todo lo que pude))


Si es off-topic... y sobrecargar la terminal, las líneas no irán a ninguna parte, y existe la posibilidad de que se queden en su sitio. Si se cambian de nombre, o se etiquetan - se puede utilizar la lógica convencional para averiguar que estas líneas ya han sido activadas en algún momento, y deben ser ignoradas. Pero esa no es la tarea que nos ocupa)) Además, supongamos que el indicador vuelve a trazar las líneas, ¿y qué? ¿Cómo va a determinar que algunos de ellos ya se han disparado)?

Si no hay nada en el gráfico, excepto las líneas que hay que controlar (como dice el autor), entonces ni siquiera es necesario filtrarlas por nombre.

Pero, por supuesto, la idea es no trazar ninguna línea, sino guardar todos los niveles en un archivo y comprobar cuáles han funcionado ya. Y sobrecarga el terminal, los recordará sin nombres de objetos)).

 
Roman:

Dónde está la lógica de los chicos.
Por esta razón es un grave error, y si se hace intencionadamente, es una distracción))

Petya: ¿Y qué es la lógica, Vasily Ivanovich?

V.I.: Bueno, es simple, mira, ¿tienes fósforos?

Petya: ¡Sí!

V.I.: Así que fumas, y si fumas, bebes, y si bebes, sales con chicas, ¿entiendes?

Petya: ¡Sí, es sencillo!

Petyka a un hombre del Ejército Rojo que pasaba por allí: ¿tienes cerillas?

Hombre del Ejército Rojo: No.

Petya: Así que eres un "maricón".



La LÓGICA, bueno, es tan extraña, y bajo la LÓGICA, no tienes que ajustar tus expectativas

Si un desarrollador ha incorporado un nuevo tipo de datos ENUM_TIMEFRAMES, lo utilizará en otras partes del programa, esa es la lógica.


SZS: Por supuesto, se podría argumentar que MT4 fue diseñado por personas que sabían lo que era necesario para el comercio, mientras que el "otro terminal" fue escrito por un grupo de extraterrestres ..... Pero vamos a ir más allá del formato de comunicación de este foro, por eso no debemos hablar de subversiones - usamos lo que nos dieron, lo que nos falta - lo escribimos nosotros mismos, gracias a que la productividad de la terminal de comercio es muy alta

Así

 
Igor Makanu:


La LÓGICA, bueno es tan rara, y bajo la LÓGICA, no tienes que ajustar tus expectativas

Si el desarrollador incorporó un nuevo tipo de datos ENUM_TIMEFRAMES, significa que incorporó el uso posterior de este tipo en otras partes del programa - esta es la lógica


SZS: Por supuesto, se podría argumentar que MT4 fue diseñado por personas que sabían lo que era necesario para el comercio, mientras que el "otro terminal" fue escrito por un grupo de extraterrestres ..... Pero vamos a ir más allá del formato de comunicación de este foro, por eso no debemos hablar de sabotaje - usamos lo que nos dieron, lo que nos falta - lo escribimos nosotros, gracias al rendimiento del terminal es más que suficiente

así

menos mal que no buscan la lógica en la sintaxis tan a menudo)))) La lógica en la velocidad se ve en el caso de los plazos pero puedo estar equivocado)

 
Igor Makanu:

Petya: ¿Y qué es la lógica, Vasily Ivanovich?

He escuchado otra versión:

¿Anka come arenques? Luego bebe agua...

La conclusión lógica es que ella... puede.

 
Vadim Lin:



PERO, ¿qué pasa si la oferta por alguna razón cruzó la línea, y no fue igual al precio de la línea, entonces qué...? Proporcionar entonces al menos una variable, en la que se almacena la garrapata anterior, y si había una nueva garrapata que cruza su línea - a continuación, hacer alguna acción ... Pero en este caso no se olvide de proporcionar el cruce "permisible", porque si el mercado abre con un gran Gap, o hay un gran salto en el precio, usted abrirá en muchas líneas de una sola vez y probablemente no en el lugar que desea. Si el cruce es más que aceptable, sólo recibirá un mensaje...

Gracias por la ayuda, la acción se produce cuando se establecen las líneas manualmente y se cruzan estas líneas, pero por alguna razón el EA no ve las líneas del indicador y no realiza la acción que he especificado. Todas las líneas del indicador tienen la siguiente frase en el nombre @Línea (además de la numeración "semana-4" que cambia) - ¿se puede utilizar esto de alguna manera?

//+------------------------------------------------------------------+
void OnTick()
  {
//---
        iCustom(Symbol(), 0, "ITS-Level Gun", 0, 0);  
 
        for(int i = ObjectsTotal() - 1; i >=0; i--) {

// все что не горизонтальные линии - игнорируем

        if(ObjectType(ObjectName(i)) != OBJ_HLINE) continue; 

        double PriceLine = NormalizeDouble(ObjectGet(ObjectName(i), OBJPROP_PRICE1), Digits());
        
// измените условие Bid == PriceLine
        
             if(Bid == PriceLine)
             {
  {OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);}
        } 
  
  }
  }
//+------------------------------------------------------------------+
Archivos adjuntos:
 
Escrito erróneamente: el nombre de las líneas en sí no cambia, pero todas tienen la frase común@Línea en su nombre
 
Fib0 RU:
Escrito erróneamente: el nombre de las líneas en sí no cambia, pero todas tienen la frase común@Línea en su nombre
if(Bid == PriceLine)

No va a desaparecer.

leer

Особенности работы с числами типа double в MQL4
Особенности работы с числами типа double в MQL4
  • www.mql5.com
При программировании на языке MQL4 у новичков порой возникают ситуации, когда результаты некоторых математических вычислений отличаются от ожидаемых. При этом программа компилируется и работает, но не так, как нужно. Они начинают разбираться в программе, находят новые "ошибки" в языке, реализации функций и т.п. В большинстве случаев последующий...
Razón de la queja: