Pregunta sobre mql5:¿cómo puedo trabajar con los activadores stopLoss y takeProfit?
Envío una orden, la modifico, se ejecuta y desaparece. No soy capaz de cambiar sl o tp después porque OrderSelect no tiene ninguna orden encontrada. Entonces se activa un trigger y se crea una nueva orden que implementa StopLoss / TakeProfit automáticamente.
Forux: Pregunta sobre mql5 -¿Cómo puedo trabajar con los activadores stopLoss y takeProfit?
Envío la orden, la modifico, se ejecuta y desaparece. Entonces no hay oportunidad de cambiar sl, tp - OrderSelect aparecerá con un error La orden no se ha encontrado. Entonces se activa un trigger y se crea una nueva orden que ejecuta automáticamente un StopLoss / TakeProfit.
La ideología de mql5 es que después de la activación de la orden, se abre (cambia, cierra) una posición para el símbolo seleccionado. Por lo tanto, después de la activación de la orden (si no resultó en el cierre de la posición), debemos trabajar con la posición. Por ejemplo, utilizando PositionSelect(). Y para cambiar los niveles de stopLoss y takeProfit, la posición tiene su propia variante de solicitud de operación.
Yedelkin: La ideología mql5 consiste en abrir (cambiar, cerrar) una posición para el símbolo seleccionado después de la activación de la orden. Así que después de la activación de la orden (si no ha llevado al cierre de la posición) debemos trabajar con la posición. Por ejemplo, utilizando PositionSelect(). Y para cambiar los niveles de stopLoss y takeProfit, la posición tiene su propia variante de solicitud de operación.
Entonces, ¿por qué stopLoss no cierra la posición?
2013.01.1610:33:50 Core 12010.05.0300:01:21 order performed sell 0.10 at 1.33260 [#3 sell 0.10 EURUSD at 1.33260]2013.01.1610:33:50 Core 12010.05.0300:01:21 deal performed [#3 sell 0.10 EURUSD at 1.33260]2013.01.1610:33:50 Core 12010.05.0300:01:21 deal #3 sell 0.10 EURUSD at 1.33260 done (based on order #3)2013.01.1610:33:50 Core 12010.05.0300:01:21 stop loss triggered buy 0.10 EURUSD 1.33310 sl: 1.33260 tp: 1.33360 [#3 sell 0.10 EURUSD at 1.33260]2013.01.1610:33:50 Core 12010.05.0300:00:02 Cant select order 2 error 47542013.01.1610:33:50 Core 12010.05.0300:00:00 position modified [buy 0.10 EURUSD 1.33310 sl: 1.33260 tp: 1.33360]
2013.01.1610:33:50 Core 12010.05.0300:00:00 === add order === 22013.01.1610:33:50 Core 12010.05.0300:00:00 order performed buy 0.10 at 1.33310 [#2 buy 0.10 EURUSD at 1.33310]2013.01.1610:33:50 Core 12010.05.0300:00:00 deal performed [#2 buy 0.10 EURUSD at 1.33310]2013.01.1610:33:50 Core 12010.05.0300:00:00 deal #2 buy 0.10 EURUSD at 1.33310 done (based on order #2)2013.01.1610:33:50 Core 12010.05.0300:00:00 exchange buy 0.10 EURUSD at 1.33310 (1.33290 / 1.33310 / 1.33290)
Además, su volumen es siempre igual a 0,10 lotes, incluso después de alcanzar unstop loss.
Forux: Si he entendido bien lo que se quería decir, entonces sí, haciendo lo siguiente:
Sí, a eso me refería. Es decir, ¿el uso de dicha construcción durante 10 segundos sigue devolviendo un volumen no nulo de la posición Sl-cerrada? En ese caso, ni idea todavía :(
if(PositionSelect(_Symbol))
Print("myPositionGetDouble(POSITION_VOLUME) == " + PositionGetDouble(POSITION_VOLUME));
else
Print("Сведения о позиции не обнаружены");
2013.01.1612:47:49 Core 1 disconnected
2013.01.1612:47:45 Core 12010.05.0300:01:30 Сведения о позиции не обнаружены
2013.01.1612:47:45 Core 12010.05.0300:01:28 Сведения о позиции не обнаружены
2013.01.1612:47:45 Core 12010.05.0300:01:26 Сведения о позиции не обнаружены
2013.01.1612:47:45 Core 12010.05.0300:01:24 Сведения о позиции не обнаружены
2013.01.1612:47:45 Core 12010.05.0300:01:22 Сведения о позиции не обнаружены
2013.01.1612:47:45 Core 12010.05.0300:01:21 order performed sell 0.10 at 1.33260 [#3 sell 0.10 EURUSD at 1.33260]2013.01.1612:47:45 Core 12010.05.0300:01:21 deal performed [#3 sell 0.10 EURUSD at 1.33260]2013.01.1612:47:45 Core 12010.05.0300:01:21 deal #3 sell 0.10 EURUSD at 1.33260 done (based on order #3)2013.01.1612:47:45 Core 12010.05.0300:01:21 stop loss triggered buy 0.10 EURUSD 1.33310 sl: 1.33260 tp: 1.33360 [#3 sell 0.10 EURUSD at 1.33260]2013.01.1612:47:45 Core 12010.05.0300:00:11 myPositionGetDouble(POSITION_VOLUME) == 0.12013.01.1612:47:45 Core 12010.05.0300:00:09 myPositionGetDouble(POSITION_VOLUME) == 0.12013.01.1612:47:45 Core 12010.05.0300:00:06 myPositionGetDouble(POSITION_VOLUME) == 0.12013.01.1612:47:45 Core 12010.05.0300:00:04 myPositionGetDouble(POSITION_VOLUME) == 0.12013.01.1612:47:45 Core 12010.05.0300:00:02 myPositionGetDouble(POSITION_VOLUME) == 0.12013.01.1612:47:45 Core 12010.05.0300:00:00 position modified [buy 0.10 EURUSD 1.33310 sl: 1.33260 tp: 1.33360]
2013.01.1612:47:45 Core 12010.05.0300:00:00 === add order === 22013.01.1612:47:45 Core 12010.05.0300:00:00 order performed buy 0.10 at 1.33310 [#2 buy 0.10 EURUSD at 1.33310]2013.01.1612:47:45 Core 12010.05.0300:00:00 deal performed [#2 buy 0.10 EURUSD at 1.33310]2013.01.1612:47:45 Core 12010.05.0300:00:00 deal #2 buy 0.10 EURUSD at 1.33310 done (based on order #2)2013.01.1612:47:45 Core 12010.05.0300:00:00 exchange buy 0.10 EURUSD at 1.33310 (1.33290 / 1.33310 / 1.33290)
2013.01.1612:47:45 Core 1 magic=12345
Buenas tardes,
Pregunta sobre mql5:¿cómo puedo trabajar con los activadores stopLoss y takeProfit?
Envío una orden, la modifico, se ejecuta y desaparece. No soy capaz de cambiar sl o tp después porque OrderSelect no tiene ninguna orden encontrada. Entonces se activa un trigger y se crea una nueva orden que implementa StopLoss / TakeProfit automáticamente.
Envío la orden, la modifico, se ejecuta y desaparece. Entonces no hay oportunidad de cambiar sl, tp - OrderSelect aparecerá con un error La orden no se ha encontrado. Entonces se activa un trigger y se crea una nueva orden que ejecuta automáticamente un StopLoss / TakeProfit.
La ideología mql5 consiste en abrir (cambiar, cerrar) una posición para el símbolo seleccionado después de la activación de la orden. Así que después de la activación de la orden (si no ha llevado al cierre de la posición) debemos trabajar con la posición. Por ejemplo, utilizando PositionSelect(). Y para cambiar los niveles de stopLoss y takeProfit, la posición tiene su propia variante de solicitud de operación.
Entonces, ¿por qué stopLoss no cierra la posición?
Además, su volumen es siempre igual a 0,10 lotes, incluso después de alcanzar unstop loss.
Forux: Тогда почему stopLoss не закрывает позицию? Кроме того ее объем постоянно равен 0.10 лотам, да же после отыгрывания stop loss
¿Y cómo se determina que la posición no se cierra después de la activación del SL y que su volumen sigue siendo el mismo?
PositionGetDouble(POSITION_VOLUME);
¿Y actualiza la información de la posición como se indica en el Manual antes de volver a utilizar PositionGetDouble(POSITION_VOLUME)?
Si he entendido bien lo que se quería decir, entonces sí, haciendo lo siguiente
Prueba esto:
if(PositionSelect(_Symbol)) Print("myPositionGetDouble(POSITION_VOLUME) == " + PositionGetDouble(POSITION_VOLUME)); else Print("Сведения о позиции не обнаружены");Pruébalo así:
Muchas gracias :)