Hmm, extraña situación, al igual que la actividad en el tema que planteé, tenía una pregunta, desde mi punto de vista específica, pero en lugar de una respuesta hasta ahora obtuve "¿por qué lo necesitas?
Quiero hacerlo con SB CTrade, aquí hay un ejemplo (compilado de 2 mis ejemplos): Abrimos cadanueva barra a 9 TF por una orden, memorizamos el ticket y determinamos la dirección de una orden cerrada por el número de ticket.
Hmm, extraña situación, al igual que la actividad en el tema que planteé, tenía una pregunta, desde mi punto de vista específica, pero en lugar de una respuesta hasta ahora obtuve "¿por qué lo necesitas?
Quiero hacerlo con SB CTrade, aquí hay un ejemplo (compilado de 2 mis ejemplos): Abrimos cada nueva barra a 9 TF por una orden, memorizamos el ticket y determinamos la dirección de una orden cerrada por el número de ticket.
En MQL4, el código para el probador se vería así
¿Cómo escribir este código en MQL5 utilizando SB CTrade?
Así, la base es elPOSITION_IDENTIFIER, pero no el ticket de posición. Es importante sólo por la red:
IDENTIFICADOR_DE_POSICIÓN
El identificador de la posición es un número único, que se asigna a cada posición recién abierta y no cambia a lo largo de su vida. Corresponde al ticket de la orden con la que se abrió la posición.
El identificador de la posición se especifica en cada orden (ORDER_POSITION_ID) y en cada operación (DEAL_POSITION_ID) que la haya abierto, modificado o cerrado. Utilice esta propiedad para buscar órdenes y operaciones relacionadas con la posición.
Cuando se invierte una posición en modo de compensación (una sola operación de entrada/salida), el identificador POSITION_IDENTIFIER de la posición no se modifica. Sin embargo, POSITION_TICKET se cambia por el ticket de la orden que dio lugar a la anulación. En el modo de cobertura no hay inversión de posiciones.
largo
Por lo tanto, hay que tener en cuenta el identificador de posición (POSITION_IDENTIFIER).
Ahora, una tarea más precisa: en la primera ejecución, abrimos una POSICIÓN DE COMPRA y la memorizamos (OJO: debemos memorizar el ID de la posición, no el ticket). Si la posición se ha cerrado, abrimos una posición opuesta: por ejemplo, antes había una posición de COMPRA, luego se cerró, lo que significa que abrimos una posición de VENTA de inmediato.
es decir, ¿CTrade no sabe detectar de forma independiente si una orden está abierta o cerrada? ¿cuál fue el tipo de la última orden cerrada?
¿Qué biblioteca debemos utilizar para ello?
Ya te lo he dicho cientos de veces, así que por favor elimina la palabra "orden" de tu vocabulario. Hasta que no lo hagas, no podrás seguir adelante. De todos modos, probablemente no podré ayudarte. Eso es lamentable.
Bueno, te lo he dicho cientos de veces: elimina la palabra "orden" de tu vocabulario. Hasta que no lo hagas, no podrás seguir adelante. De todos modos, probablemente no pueda ayudarte. Es una pena.
Bueno, dime qué quieres decir con eso:
GN 016:24:14.030 Core 12018.06.0608:00:00 Sell market. Ticket = 20
JF 016:24:14.030 Core 12018.06.0608:00:00 Sell market. Identifier = 0
FQ 016:24:14.030 Core 12018.06.1916:00:00 ======closePosition======
HG 016:24:14.030 Core 12018.06.1916:00:00 market buy 0.10 AUDUSD, close #20(0.73633 / 0.73637 / 0.73633)
PH 016:24:14.030 Core 12018.06.1916:00:00 deal #21 buy 0.10 AUDUSD at 0.73637 done (based on order #21)
KJ 016:24:14.030 Core 12018.06.1916:00:00 deal performed [#21 buy 0.10 AUDUSD at 0.73637]
IL 016:24:14.030 Core 12018.06.1916:00:00 order performed buy 0.10 at 0.73637 [#21 buy 0.10 AUDUSD at 0.73637]
RN 016:24:14.030 Core 12018.06.1916:00:00 CTrade::OrderSend: market buy 0.10 position #20 AUDUSD [done at 0.73637]
HN 016:24:14.030 Core 12018.06.1916:00:00 Позиция с магиком 2544113114312914, тикетом 20 и лотом 0.1 успешно закрыта.
LO 016:24:14.030 Core 12018.06.1916:00:00 Очистка данных произведена.
CH 016:24:14.030 Core 12018.06.1916:00:00 ======checkMargin======
OF 016:24:14.030 Core 12018.06.1916:00:00 market buy 0.10 AUDUSD (0.73633 / 0.73637 / 0.73633)
DS 016:24:14.030 Core 12018.06.1916:00:00 deal #22 buy 0.10 AUDUSD at 0.73637 done (based on order #22)
RM 016:24:14.030 Core 12018.06.1916:00:00 deal performed [#22 buy 0.10 AUDUSD at 0.73637]
DS 016:24:14.030 Core 12018.06.1916:00:00 order performed buy 0.10 at 0.73637 [#22 buy 0.10 AUDUSD at 0.73637]
FF 016:24:14.030 Core 12018.06.1916:00:00 CTrade::OrderSend: market buy 0.10 AUDUSD [done at 0.73637]
MJ 016:24:14.030 Core 12018.06.1916:00:00 magic = 2544113114312914
RR 016:24:14.030 Core 12018.06.1916:00:00 balance = 11308.94
JK 016:24:14.030 Core 12018.06.1916:00:00 lot = 0.10
HQ 016:24:14.030 Core 12018.06.1916:00:00 Buy market. Ticket = 22
CJ 016:24:14.030 Core 12018.06.1916:00:00 Buy market. Identifier = 20
HR 016:24:14.030 Core 12018.07.0408:00:00 ======closePosition======
FI 016:24:14.030 Core 12018.07.0408:00:00 market sell 0.10 AUDUSD, close #22(0.74021 / 0.74025 / 0.74021)
RF 016:24:14.030 Core 12018.07.0408:00:00 deal #23 sell 0.10 AUDUSD at 0.74021 done (based on order #23)
ID 016:24:14.030 Core 12018.07.0408:00:00 deal performed [#23 sell 0.10 AUDUSD at 0.74021]
GM 016:24:14.030 Core 12018.07.0408:00:00 order performed sell 0.10 at 0.74021 [#23 sell 0.10 AUDUSD at 0.74021]
NQ 016:24:14.030 Core 12018.07.0408:00:00 CTrade::OrderSend: market sell 0.10 position #22 AUDUSD [done at 0.74021]
PO 016:24:14.030 Core 12018.07.0408:00:00 Позиция с магиком 2544113114312914, тикетом 22 и лотом 0.1 успешно закрыта.
FO 016:24:14.030 Core 12018.07.0408:00:00 Очистка данных произведена.
CH 016:24:14.030 Core 12018.07.0408:00:00 ======checkMargin======
OI 016:24:14.030 Core 12018.07.0408:00:00 market sell 0.10 AUDUSD (0.74021 / 0.74025 / 0.74021)
JO 016:24:14.030 Core 12018.07.0408:00:00 deal #24 sell 0.10 AUDUSD at 0.74021 done (based on order #24)
LM 016:24:14.030 Core 12018.07.0408:00:00 deal performed [#24 sell 0.10 AUDUSD at 0.74021]
ND 016:24:14.030 Core 12018.07.0408:00:00 order performed sell 0.10 at 0.74021 [#24 sell 0.10 AUDUSD at 0.74021]
LI 016:24:14.030 Core 12018.07.0408:00:00 CTrade::OrderSend: market sell 0.10 AUDUSD [done at 0.74021]
OJ 016:24:14.030 Core 12018.07.0408:00:00 magic = 2544113114312914
RR 016:24:14.030 Core 12018.07.0408:00:00 balance = 11335.85
DK 016:24:14.030 Core 12018.07.0408:00:00 lot = 0.10
PN 016:24:14.030 Core 12018.07.0408:00:00 Sell market. Ticket = 24
QE 016:24:14.030 Core 12018.07.0408:00:00 Sell market. Identifier = 22
NR 016:24:14.030 Core 12018.07.1900:00:00 ======closePosition======
NF 016:24:14.030 Core 12018.07.1900:00:00 market buy 0.10 AUDUSD, close #24(0.73968 / 0.73989 / 0.73968)
JI 016:24:14.030 Core 12018.07.1900:00:00 deal #25 buy 0.10 AUDUSD at 0.73989 done (based on order #25)
QK 016:24:14.030 Core 12018.07.1900:00:00 deal performed [#25 buy 0.10 AUDUSD at 0.73989]
MM 016:24:14.030 Core 12018.07.1900:00:00 order performed buy 0.10 at 0.73989 [#25 buy 0.10 AUDUSD at 0.73989]
PN 016:24:14.030 Core 12018.07.1900:00:00 CTrade::OrderSend: market buy 0.10 position #24 AUDUSD [done at 0.73989]
DO 016:24:14.030 Core 12018.07.1900:00:00 Позиция с магиком 2544113114312914, тикетом 24 и лотом 0.1 успешно закрыта.
LP 016:24:14.030 Core 12018.07.1900:00:00 Очистка данных произведена.
KK 016:24:14.030 Core 12018.08.0816:00:00 ======checkMargin======
RI 016:24:14.030 Core 12018.08.0816:00:00 market sell 0.10 AUDUSD (0.73933 / 0.73937 / 0.73933)
GO 016:24:14.030 Core 12018.08.0816:00:00 deal #26 sell 0.10 AUDUSD at 0.73933 done (based on order #26)
OM 016:24:14.030 Core 12018.08.0816:00:00 deal performed [#26 sell 0.10 AUDUSD at 0.73933]
JD 016:24:14.030 Core 12018.08.0816:00:00 order performed sell 0.10 at 0.73933 [#26 sell 0.10 AUDUSD at 0.73933]
QI 016:24:14.030 Core 12018.08.0816:00:00 CTrade::OrderSend: market sell 0.10 AUDUSD [done at 0.73933]
HN 016:24:14.030 Core 12018.08.0816:00:00 Sell market. Ticket = 26
CF 016:24:14.030 Core 12018.08.0816:00:00 Sell market. Identifier = 0
Bueno, te lo he dicho cientos de veces: elimina la palabra "orden" de tu vocabulario. Hasta que no lo hagas, no podrás seguir adelante. De todos modos, probablemente no pueda ayudarte. Es una pena.
¿De acuerdo? Permítame reformular la pregunta:
Cómo se utiliza un ticket recordado con CTrade::ResultOrder()
para averiguarlo:
1. si la posición está cerrada
2. ¿qué tipo de trato tenía la posición cerrada?
3. necesitamos manejar simultáneamente 9 posiciones, órdenes o tickets, o ... OnAnyTerminology en una cuenta de cobertura
¿en esta formulación mi pregunta es inequívoca? (ejemplo reproducible en MQl4 publicado anteriormente)
Hm, es una situación extraña, parecía haber planteado el tema, mi pregunta era específica desde mi punto de vista, pero en lugar de una respuesta obtuve "¿por qué lo necesitas?
La razón es la incompetencia de los que responden. He tardado cinco minutos en escribirlo y un intento en comprobarlo.
No necesitas ser fuerte para escribir esto, sólo necesitas saber lo básico de MT5.
Gracias.
Sí, estaba buscando una solución si no podía escribirla en cinco líneas con SB
Pero cuanto entendí, que un SB CTrade no será capaz de resolver mi problema? Y tuve que usar CPositionInfo también? - ¿Si quiero acompañar 9 posiciones por varios TFs al mismo tiempo?
ZS: Estoy sentado en la ayuda MQL5 con la televisión inteligente - bastante bien descrito funciones comerciales, el uso de SatB está bajo una pregunta .... creo que tiene sentido usar SB para estrategias primitivas, un poco más complicadas - la funcionalidad es insuficiente o no es obvio el uso, tal vez necesito más práctica - voy a tratar de "torcer" el SB
En la lista histórica las garantías no están dispuestas en el orden en que aparecen en dicha lista. Me encontré con esto al desarrollar la biblioteca. Confié en ello. Pero resultó no ser tan sencillo. Pruebe a poner órdenes de límite y stop sucesivamente en el siguiente orden: límite -> stop -> límite -> límite -> stop y borre cada una de ellas en cualquier orden y vea cuál es la última orden registrada en la lista del historial. Se sorprenderá.
En la lista del historial, los pedidos no están dispuestos en el orden en que aparecen en la lista. Me encontré con esto al desarrollar la biblioteca. Confié en ello. Pero resultó no ser tan sencillo. Pruebe a poner órdenes de límite y stop sucesivamente en el siguiente orden: límite -> stop -> límite -> límite -> stop y borre cada una de ellas en cualquier orden y vea cuál es la última orden registrada en la lista del historial. Se sorprenderá.
No hay ningún error, ya que la lista se genera a través de HistorySelectByPosition.
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
Hmm, extraña situación, al igual que la actividad en el tema que planteé, tenía una pregunta, desde mi punto de vista específica, pero en lugar de una respuesta hasta ahora obtuve "¿por qué lo necesitas?
Quiero hacerlo con SB CTrade, aquí hay un ejemplo (compilado de 2 mis ejemplos): Abrimos cadanueva barra a 9 TF por una orden, memorizamos el ticket y determinamos la dirección de una orden cerrada por el número de ticket.
En MQL4, el código para el probador se vería así
necesitamos un código para el probador, es decir, el mínimo número de comprobaciones y el trabajo más rápido posible en el optimizador.
¿Cómo escribir este código en MQL5 con SB CTrade?
Hmm, extraña situación, al igual que la actividad en el tema que planteé, tenía una pregunta, desde mi punto de vista específica, pero en lugar de una respuesta hasta ahora obtuve "¿por qué lo necesitas?
Quiero hacerlo con SB CTrade, aquí hay un ejemplo (compilado de 2 mis ejemplos): Abrimos cada nueva barra a 9 TF por una orden, memorizamos el ticket y determinamos la dirección de una orden cerrada por el número de ticket.
En MQL4, el código para el probador se vería así
¿Cómo escribir este código en MQL5 utilizando SB CTrade?
Foro sobre trading, sistemas de trading automatizados y comprobación de estrategias
FAQ de principiantes MQL5 MT5 MetaTrader 5
Vladimir Karputov, 2019.07.21 12:56
Así, la base es elPOSITION_IDENTIFIER, pero no el ticket de posición. Es importante sólo por la red:
IDENTIFICADOR_DE_POSICIÓN
El identificador de la posición es un número único, que se asigna a cada posición recién abierta y no cambia a lo largo de su vida. Corresponde al ticket de la orden con la que se abrió la posición.
El identificador de la posición se especifica en cada orden (ORDER_POSITION_ID) y en cada operación (DEAL_POSITION_ID) que la haya abierto, modificado o cerrado. Utilice esta propiedad para buscar órdenes y operaciones relacionadas con la posición.
Cuando se invierte una posición en modo de compensación (una sola operación de entrada/salida), el identificador POSITION_IDENTIFIER de la posición no se modifica. Sin embargo, POSITION_TICKET se cambia por el ticket de la orden que dio lugar a la anulación. En el modo de cobertura no hay inversión de posiciones.
largo
Por lo tanto, hay que tener en cuenta el identificador de posición (POSITION_IDENTIFIER).
Ahora, una tarea más precisa: en la primera ejecución, abrimos una POSICIÓN DE COMPRA y la memorizamos (OJO: debemos memorizar el ID de la posición, no el ticket). Si la posición se ha cerrado, abrimos una posición opuesta: por ejemplo, antes había una posición de COMPRA, luego se cerró, lo que significa que abrimos una posición de VENTA de inmediato.
Ahora será mucho más fácil resolver el problema.
Es decir, CTrade no sabe detectar de forma independiente si una orden está abierta o cerrada, ¿cuál fue el tipo de la última orden cerrada?
¿qué biblioteca debo utilizar para este fin?
es decir, ¿CTrade no sabe detectar de forma independiente si una orden está abierta o cerrada? ¿cuál fue el tipo de la última orden cerrada?
¿Qué biblioteca debemos utilizar para ello?
Ya te lo he dicho cientos de veces, así que por favor elimina la palabra "orden" de tu vocabulario. Hasta que no lo hagas, no podrás seguir adelante. De todos modos, probablemente no podré ayudarte. Eso es lamentable.
Bueno, te lo he dicho cientos de veces: elimina la palabra "orden" de tu vocabulario. Hasta que no lo hagas, no podrás seguir adelante. De todos modos, probablemente no pueda ayudarte. Es una pena.
Bueno, dime qué quieres decir con eso:
Bueno, te lo he dicho cientos de veces: elimina la palabra "orden" de tu vocabulario. Hasta que no lo hagas, no podrás seguir adelante. De todos modos, probablemente no pueda ayudarte. Es una pena.
¿De acuerdo? Permítame reformular la pregunta:
Cómo se utiliza un ticket recordado con CTrade::ResultOrder()
para averiguarlo:
1. si la posición está cerrada
2. ¿qué tipo de trato tenía la posición cerrada?
3. necesitamos manejar simultáneamente 9 posiciones, órdenes o tickets, o ... OnAnyTerminology en una cuenta de cobertura
¿en esta formulación mi pregunta es inequívoca? (ejemplo reproducible en MQl4 publicado anteriormente)
ZS: No puedo olvidar el orden de las palabras, lamentablemente esta palabra se utiliza en la ayuda junto con otros términos:https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/ctrade/ctraderequestorder
Hm, es una situación extraña, parecía haber planteado el tema, mi pregunta era específica desde mi punto de vista, pero en lugar de una respuesta obtuve "¿por qué lo necesitas?
La razón es la incompetencia de los que responden. He tardado cinco minutos en escribirlo y un intento en comprobarlo.
MT4
Foro sobre trading, sistemas de trading automatizados y comprobador de estrategias
Preguntas de los principiantes MQL5 MT5 MetaTrader 5
fxsaber, 2019.07.21 12:54
MT5
No es necesario ser un experto en la materia para escribir esto, sólo es necesario conocer los fundamentos de MT5.
ZS En la red hay un pequeño matiz para determinar el tipo de posición cerrada. Pero aquí no juega ningún papel.
No necesitas ser fuerte para escribir esto, sólo necesitas saber lo básico de MT5.
Gracias.
Sí, estaba buscando una solución si no podía escribirla en cinco líneas con SB
Pero cuanto entendí, que un SB CTrade no será capaz de resolver mi problema? Y tuve que usar CPositionInfo también? - ¿Si quiero acompañar 9 posiciones por varios TFs al mismo tiempo?
ZS: Estoy sentado en la ayuda MQL5 con la televisión inteligente - bastante bien descrito funciones comerciales, el uso de SatB está bajo una pregunta .... creo que tiene sentido usar SB para estrategias primitivas, un poco más complicadas - la funcionalidad es insuficiente o no es obvio el uso, tal vez necesito más práctica - voy a tratar de "torcer" el SB
Gracias de nuevo.
La razón es la incompetencia tan contestada. He tardado cinco minutos en escribir y un intento en comprobarlo.
MT4
MT5
No es necesario ser un experto en la materia para escribir esto, sólo es necesario conocer los fundamentos de MT5.
No es necesario que conozcas los fundamentos, sólo necesitas conocer los fundamentos básicos de MT5. Pero eso no importa aquí.
Aquí es donde
hay una trampa potencial.
En la lista histórica las garantías no están dispuestas en el orden en que aparecen en dicha lista. Me encontré con esto al desarrollar la biblioteca. Confié en ello. Pero resultó no ser tan sencillo. Pruebe a poner órdenes de límite y stop sucesivamente en el siguiente orden: límite -> stop -> límite -> límite -> stop y borre cada una de ellas en cualquier orden y vea cuál es la última orden registrada en la lista del historial. Se sorprenderá.
Aquí es donde
hay un error potencial.
En la lista del historial, los pedidos no están dispuestos en el orden en que aparecen en la lista. Me encontré con esto al desarrollar la biblioteca. Confié en ello. Pero resultó no ser tan sencillo. Pruebe a poner órdenes de límite y stop sucesivamente en el siguiente orden: límite -> stop -> límite -> límite -> stop y borre cada una de ellas en cualquier orden y vea cuál es la última orden registrada en la lista del historial. Se sorprenderá.
No hay ningún error, ya que la lista se genera a través de HistorySelectByPosition.