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

 
Youri Lazurenko:

Gracias. En mql5 no se construyeron tales laberintos. En lugar de ir directamente a la meta, hay que dar algunos rodeos, pasar por muchos callejones sin salida y obstáculos. Un idioma por un idioma.

En MQL4 también se establece un magik para una posición.

Aquí ha decidido utilizar un objeto comercial de SB. Esto significa que durante su creación e inicialización es necesario establecer sus parámetros. Y luego sólo lo usas para funciones comerciales. Puede haber muchos objetos de este tipo, y se establecerán diferentes parámetros para cada uno de ellos. Y luego - aplicar al objeto necesario para la gestión de las órdenes comerciales en aquellos símbolos y signos mágicos que se han establecido para cada objeto en particular, y que se necesitan en diferentes momentos en función de la ST.

Es tan sencillo como eso.

 
¡Hola Artyom Trishkin! 2020.09.14_01:14 GMT+3. Tomé el EA de media móvil estándar y cambié las dos condiciones para abrir una operación y para cerrarla. He visto en el probador de estrategias que el Asesor Experto ha cumplido sólo la segunda condición para abrir y cerrar una posición. La primera condición es ignorada. El Asesor Experto es simple como es, pero ¿cómo escriben los EAs complejos que hacen que todo funcione? ¿Cómo hacer que funcionen al menos dos condiciones de apertura y cierre de operaciones? Y puede haber más condiciones para abrir operaciones. ¿Sabe la respuesta a estas preguntas? Por favor, aconséjeme. Adjunto un archivo de mi Asesor Experto. 01:26 GMT+3.
Archivos adjuntos:
 
Artyom Trishkin:

En MQL4, también se establece un magik para una posición.

Aquí ha decidido utilizar un objeto comercial de SB. Esto significa que cuando se crea e inicializa, es necesario establecer sus parámetros. Y luego sólo lo usas para funciones comerciales. Puede haber muchos objetos de este tipo, y se establecerán diferentes parámetros para cada uno de ellos. Y luego - aplicar al objeto necesario para la gestión de las órdenes comerciales en aquellos símbolos y signos mágicos que se han establecido para cada objeto en particular, y que se necesitan en diferentes momentos en función de la ST.

Es tan sencillo como eso.

Hola. Gracias por su respuesta. Voy a dar mi punto de vista. Al abrir una orden en MQL4, especificamos sus parámetros incluyendo un magik. En #include <Trade\OrderInfo.mqh>, se especifica todo excepto el magik. Por ejemplo - CTrade::BuyLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment=""). En mi opinión, esto no es un arreglo y deberíamos arreglarlo introduciendo otro parámetro de mago. O bien, #include <Trade\NHistoryOrderInfo.mqh> contiene todo excepto el beneficio (ganancia/pérdida) tomado por la orden. Esta es una información importante sobre el pedido y falta. Necesitamos encontrar el beneficio de la última orden cerrada. Esta información se mostrará en Comment(). Y ya veremos. Mientras no hay una orden (posición) abierta, el comentario muestra el beneficio de la última orden. En cuanto se abre la orden (posición), obtenemos 0 en el comentario, hasta que se cierra la orden. Es decir, la orden sigue en el mercado, pero simultáneamente en la historia, permanece en dos hipóstasis simultáneamente. Pero esto es una tontería. Por eso digo que la lengua es sólo por la lengua. En mi opinión, hay muchos detalles incompletos.

 
Youri Lazurenko:


Estás confundiendo conceptos (en particular el de "orden"). Puede haber una ORDEN REMOTA o una POSICIÓN en el mercado. Puede leer más en la ayuda:Principios generales.

La clase CTrade es autosuficiente y no tiene ningún fallo, sólo tu falta de voluntad para ver el código de implementación. Cuando se envía una orden comercial (para abrir o modificar una POSICIÓN), la instancia de la clase comercial envía un número mágico - sólo hay que inicializarlo inmediatamente al crear el objeto.

Общие принципы - Торговые операции - Справка по MetaTrader 5
Общие принципы - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция. — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит и...
 
Youri Lazurenko:

Hola. Gracias por su respuesta. Voy a dar mi opinión. Al abrir una orden en MQL4, especificamos sus parámetros incluyendo un magik. En #include <Trade\OrderInfo.mqh>, se especifica todo excepto el magik. Por ejemplo - CTrade::BuyLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment=""). En mi opinión, esto no es un arreglo y deberíamos arreglarlo introduciendo otro parámetro de mago. O bien, #include <Trade\NHistoryOrderInfo.mqh> contiene todo excepto el beneficio (ganancia/pérdida) tomado por la orden. Esta es una información importante sobre el pedido y falta. Necesitamos encontrar el beneficio de la última orden cerrada. Esta información se mostrará en Comment(). Y ya veremos. Mientras no hay una orden (posición) abierta, el comentario muestra el beneficio de la última orden. En cuanto se abre la orden (posición), obtenemos 0 en el comentario, hasta que se cierra la orden. Es decir, la orden sigue en el mercado, pero simultáneamente en la historia, permanece en dos hipóstasis simultáneamente. Pero esto es una tontería. Por eso digo que la lengua es sólo por la lengua. En mi opinión, hay muchos detalles inacabados.

Yury, no se trata de un cúmulo de detalles inacabados, sino de un cúmulo de malentendidos.

Por qué, en cada apertura de una orden o posición, escribir un mago, si basta con indicarlo una vez en OnInit().

#include <Trade\Trade.mqh>
CTrade trade;

sinput  int Magic = 1; //  Идентификатор эксперта

int OnInit()
 {
  trade.SetExpertMagicNumber(Magic);
  return(INIT_SUCCEEDED);
 }/******************************************************************/

¡¡¡Eso es todo!!! Entonces la magia de una orden, trato o posición se comprobará de la misma manera para identificar "amigo o enemigo". El problema está en tu mente.

¡Un pedido puede no tener beneficios! Una posición tiene un beneficio en el tiempo actual. Y una posición tiene una operación de cierre, o parte de una posición, pero eso está en el historial de operaciones. Una orden no es más que una orden para realizar una transacción en el mercado.

Voy a tratar de explicar en kolkhoznyy. Vienes al mercado y decides comprar un pepinillo.

Orden: dame un kilo de ellos...

trato: tú me das el dinero, tú te llevas el pescado...

posición: en su bolsa está el albaricoque...

Desde el punto de vista del vendedor:

posición: tienes el guiso de pescado en el mostrador...

orden: usted recibe una orden para pesar un kilo de pescado...

transacción: entregar los albaricoques, poner el dinero en la bolsa...

 
Youri Lazurenko:

Hola. Gracias por su respuesta. Voy a dar mi opinión. Al abrir una orden en MQL4, especificamos sus parámetros incluyendo el magik. En #include <Trade\OrderInfo.mqh>, se especifica todo excepto el magik. Por ejemplo - CTrade::BuyLimit(const double volume,const double price,const string symbol=NULL,const double sl=0.0,const double tp=0.0,const ENUM_ORDER_TYPE_TIME type_time=ORDER_TIME_GTC,const datetime expiration=0,const string comment=""). En mi opinión, esto no es un arreglo y deberíamos arreglarlo introduciendo otro parámetro de mago. O bien, #include <Trade\NHistoryOrderInfo.mqh> contiene todo excepto el beneficio (ganancia/pérdida) tomado por la orden. Esta es una información importante sobre el pedido y falta. Necesitamos encontrar el beneficio de la última orden cerrada. Esta información se mostrará en Comment(). Y ya veremos. Mientras no hay una orden (posición) abierta, el comentario muestra el beneficio de la última orden. En cuanto se abre la orden (posición), obtenemos 0 en el comentario, hasta que se cierra la orden. Es decir, la orden sigue en el mercado, pero simultáneamente en la historia, permanece en dos hipóstasis simultáneamente. Pero esto es una tontería. Por eso digo que la lengua es sólo por la lengua. En mi opinión, hay muchos detalles inacabados.

Piensas en términos de procedimientos pero intentas usar objetos OOP. Se les trata de forma diferente. Por ejemplo:

Se crea un objeto. Un mago está preparado para ello.
Se crea un segundo objeto. Un segundo mago está preparado.
Se crea un tercer objeto. Un tercer mago se entrega a él.

Ahora tiene tres objetos de comercio para tres estrategias en un EA.
Debe utilizar el primer objeto comercial para abrir una posición o colocar una orden pendiente para la primera TS.
Para abrir una posición o establecer una orden pendiente para la segunda TS, deberá referirse al segundo objeto comercial.
Para abrir una posición o colocar una orden pendiente para un tercer ST, debe referirse a un tercer objeto comercial.

Los pedidos no tienen un parámetro de beneficio. Por una sencilla razón: una orden es una orden (una orden pendiente es una orden a un corredor para que realice alguna acción cuando el precio alcance un determinado nivel, es decir, una orden para ejecutar una operación después de algún tiempo cuando se alcance el criterio especificado). Una operación (orden) puede dar lugar a una transacción (ya tiene el parámetro de beneficio DEAL_PROFIT) que lleva a la creación de una posición o a su modificación o cierre (la posición también tiene el parámetro de beneficio, pero sólo un POSITION_PROFIT actual - flotante).

Y luego está la orden de mercado (orden de mercado), que siempre aparece antes de la operación cuando se envía una orden de comercio - esta es su orden de comercio. Y es visible en la lista de pedidos existentes. Es decir, cualquier apertura de posición genera una cadena: orden --> operación --> posición. Cualquier acción sobre una posición abierta crea una cadena: posición --> orden --> operación --> ninguna posición, o una posición más pequeña, o una posición más grande (compensación), o una inversión de posición (compensación).

Estudia la referencia.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Сделка является отражением факта совершения торговой операции на основании ордера, содержащего торговый приказ. Каждая сделка описывается свойствами, позволяющими получить информацию о ней. Для чтения значений свойств используются функции вида Идентификатор позиции, в открытии, изменении или закрытии которой участвовала эта сделка. Каждая...
 
Hola! ¿Es posible hacer periodos no estándar en el código del indicador "media móvil" para la MT5? Por ejemplo, no por 1 vela, sino por 0,5? Entiendo que la plataforma sigue teniendo datos de precios y el indicador los dividirá y redondeará...
 

Gracias a todos. Especialmente Alexey Viktorov, claro y concreto. Ya lo he reprocesado y comprobado. Ahora tenemos la información sobre el beneficio de la última orden, y el EA la utiliza. Esto es demasiado enrevesado, hay un lío innecesario y superfluo sobre la posición, el orden y el comercio. Hay órdenes actuales (pendientes, comprometidas /mercado/) y órdenes que han pasado al historial, pero todas las mismas órdenes. Resulta que mientras se pesa el pedido del vendedor, el del comprador ya ha desaparecido. Es decir, hay confusión y desconcierto en el ínterin. Cuanto más sencillo, mejor.

Pero gracias a todos de todos modos, y buena suerte.

 
Youri Lazurenko:

Gracias a todos. Especialmente Alexey Viktorov, claro y concreto. Ya lo he reprocesado y comprobado. Ahora tenemos la información sobre el beneficio de la última orden, y el EA la utiliza. Esto es demasiado enrevesado, hay un lío innecesario y superfluo sobre la posición, el orden y el comercio. Hay órdenes actuales (pendientes, comprometidas /mercado/) y órdenes que han pasado al historial, pero todas las mismas órdenes. Resulta que mientras el pedido del vendedor se pesa, el del comprador aún no. Es decir, hay confusión y desconcierto en el ínterin. Cuanto más sencillo, mejor.

Pero gracias de todos modos, les deseo buena suerte.

No es un capricho de los desarrolladores del terminal. Fue una rareza encajar toda la cadena en un solo concepto de "orden" en el 4. Ahora todo se ajusta a lo que realmente sucede.

Y el tiempo de traslado de un talón de la estantería a la bolsa es el tiempo de ejecución de una orden comercial. Y así, teniendo absolutamente todos los datos de la actualidad, se puede controlar fácilmente la velocidad de ejecución de las órdenes. Y no sólo eso. Ahora tiene una amplia gama de posibilidades para la implementación de cualquier estadística en cualquiera de los servidores, y lo bien que pueden ejecutar sus órdenes.

 
Artyom Trishkin:

Esto no es un capricho de los desarrolladores del terminal. Fue una rareza encajar toda la cadena en un solo concepto de "orden" en cuádruple. Ahora está en consonancia con lo que ocurre realmente.

Y el tiempo para pasar un talón de la estantería a la bolsa es el tiempo de ejecución de una orden de negociación. Y así, teniendo absolutamente todos los datos de la actualidad, se puede controlar fácilmente la velocidad de ejecución de las órdenes. Y no sólo eso. Ahora tienes un montón de oportunidades para implementar cualquier estadística en cualquiera de los servidores, y lo bien que pueden satisfacer tus necesidades.

Sin ánimo de faltar al respeto, sólo al hilo de la discusión. Llevo mucho tiempo operando con mis EAs (no los vendo), con diferentes brokers y no me interesan losdatos absolutos de los eventos. Me interesa el resultado final: la calidad de las órdenes ejecutadas a petición de un EA. Si las órdenes se abren una sola vez (en sentido figurado), simplemente no trabajaré con este broker. Si la orden de un corredor se abre medio segundo más rápido que la del otro, no me importa (al igual que la diferencia de cotizaciones).

¿Por qué es tan fácil escribir un EA en mql4 y tan molesto con mql5? ¿Por qué las preguntas sobre mql5? He oído buenos informes sobre el probador de MT5 y he tenido que familiarizarme con mql5 para probarlo. Lo he probado y no estoy satisfecho. Es conveniente descargar las cotizaciones, es mucho más rápido, pero MT4 es más informativo. Por ejemplo, quiero saber no sólo a qué precio se cerraron las órdenes, sino también qué beneficio (pérdida) obtuvieron. La optimización hacia adelante es tan intensiva en cuanto a procesador que el ordenador se apaga. He intentado una vez (esto no es una prueba, por supuesto) para ejecutar uno y el mismo Asesor Experto en uno y el mismo corredor. Los resultados son diferentes; mt5 es mejor - más ganancias, significativamente menos drawdown, que es estresante. Tal vez sea que estoy senil, pero por ahora tengo más críticas que positivismo. Todavía no voy a operar en mt5, pero el interés por escribir un buen Asesor Experto se mantiene. Sólo por el interés.

Le deseo buena suerte.