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

 
Alexey Kozitsyn:
Parece que todo está en su punto e incluso con referencias... Justo cuando alguien declara que ha leído la documentación y pide que se eliminen las redes (que, por cierto, se utilizan en los FORTS)... hay que ser sarcástico aquí.
Lo tendré en cuenta, prepárate para ser sarcástico.
 
Anatoli Kazharski:
Asegúrate de que no te echen. )
es demasiado tarde, ya estás ahí.
 
new-rena:
tarde, ya estás ahí.
Es obvio quién y dónde. )
 
Vladimir Karputov:

Ejemplo para una cuenta de cobertura:

La primera operación es Comprar 0,02 y la segunda es Vender 0,01. En total dos posiciones: Comprar 0,02 y Vender 0,001. Luego cerramos la posición Vender 0,01 y cerramos la posición Comprar 0,02:

//+------------------------------------------------------------------+
//|                                                       TestEA.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
CTrade         m_trade;                      // trading object
CPositionInfo  m_position;                   // trade position object
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   static long counter=0;
   counter++;
   if(counter%300==0 && counter<700)
     {
      static int number=0;
      number++;
      if(number==1)
         m_trade.Buy(0.02);
      if(number==2)
         m_trade.Sell(0.01);
     }
   if(counter>7000)
     {
      int positions= PositionsTotal();
      if(positions == 0)
         return;
      int positions_total=PositionsTotal();
      for(int i=positions_total-1;i>=0;i--)
         if(m_position.SelectByIndex(i))
            m_trade.PositionClose(m_position.Ticket(),-1);
     }
  }
//+------------------------------------------------------------------+

y Diario:

Trade   2016.02.25 00:13:35   instant buy 0.02 EURUSD at 1.10167 (1.10158 / 1.10167 / 1.10158)
Trades  2016.02.25 00:13:35   deal #2 buy 0.02 EURUSD at 1.10167 done (based on order #2)
Trade   2016.02.25 00:13:35   deal performed [#2 buy 0.02 EURUSD at 1.10167]
Trade   2016.02.25 00:13:35   order performed buy 0.02 at 1.10167 [#2 buy 0.02 EURUSD at 1.10167]
TestEA (EURUSD,H1)      2016.02.25 00:13:35   CTrade::OrderSend: instant buy 0.02 EURUSD at 1.10167 [done at 1.10167]
Trade   2016.02.25 00:30:17   instant sell 0.01 EURUSD at 1.10157 (1.10157 / 1.10164 / 1.10157)
Trades  2016.02.25 00:30:17   deal #3 sell 0.01 EURUSD at 1.10157 done (based on order #3)
Trade   2016.02.25 00:30:17   deal performed [#3 sell 0.01 EURUSD at 1.10157]
Trade   2016.02.25 00:30:17   order performed sell 0.01 at 1.10157 [#3 sell 0.01 EURUSD at 1.10157]
TestEA (EURUSD,H1)      2016.02.25 00:30:17   CTrade::OrderSend: instant sell 0.01 EURUSD at 1.10157 [done at 1.10157]
TestEA (EURUSD,H1)      2016.02.25 02:12:06   PositionClose #3 POSITION_TYPE_SELL 0.01
Trade   2016.02.25 02:12:06   instant buy 0.01 EURUSD at 1.10131, close #3 (1.10123 / 1.10131 / 1.10123)
Trades  2016.02.25 02:12:06   deal #4 buy 0.01 EURUSD at 1.10131 done (based on order #4)
Trade   2016.02.25 02:12:06   deal performed [#4 buy 0.01 EURUSD at 1.10131]
Trade   2016.02.25 02:12:06   order performed buy 0.01 at 1.10131 [#4 buy 0.01 EURUSD at 1.10131]

TestEA (EURUSD,H1)      2016.02.25 02:12:06   CTrade::OrderSend: instant buy 0.01 position #3 EURUSD at 1.10131 [done at 1.10131]
TestEA (EURUSD,H1)      2016.02.25 02:12:06   PositionClose #2 POSITION_TYPE_BUY 0.02
Trade   2016.02.25 02:12:06   instant sell 0.02 EURUSD at 1.10123, close #2 (1.10123 / 1.10131 / 1.10123)
Trades  2016.02.25 02:12:06   deal #5 sell 0.02 EURUSD at 1.10123 done (based on order #5)
Trade   2016.02.25 02:12:06   deal performed [#5 sell 0.02 EURUSD at 1.10123]
Trade   2016.02.25 02:12:06   order performed sell 0.02 at 1.10123 [#5 sell 0.02 EURUSD at 1.10123]
TestEA (EURUSD,H1)      2016.02.25 02:12:06   CTrade::OrderSend: instant sell 0.02 position #2 EURUSD at 1.10123 [done at 1.10123]

¿Qué es exactamente lo que no está claro? ¿Que hay que abrir una orden opuesta con el mismo volumen para cerrar la posición?

Gracias. Lo intentaré.
 

¿Quién sabe si"POSITION_PROFIT" incluye la comisión y el intercambio?

Si no es así, ¿qué parámetro debe utilizarse para averiguar el importe de la comisión de un pedido en MQL5?

 
new-rena:

¿Quién sabe si"POSITION_PROFIT" incluye la comisión y el intercambio?

Si no, ¿qué parámetro se necesita para averiguar el importe de la comisión acumulada en MQL5?

POSITION_PROFIT es simplemente el beneficio de la posición (sin deducción de comisiones, swaps...). Para conocer el swap acumulado deuna posición, haga lo siguiente:

POSITION_SWAP

Canje acumulativo

doble


Y la comisión final y el swap total, se pueden obtener después de cerrar la posición, en el historial de transacciones:

COMISIÓN_DE_TRATAMIENTO

Comisión_de_tratos

doble

DEAL_SWAP

Intercambio acumulado al cierre

doble

 
new-rena:

¿Quién sabe si"POSITION_PROFIT" incluye la comisión y el intercambio?

Si no es así, ¿qué parámetro debe utilizarse para averiguar el importe de la comisión cobrada por un pedido en MQL5?

En ruso, una orden no puede generar beneficios ni pérdidas y sólo es una orden de ejecución. Cuando la orden se ejecuta, usted recibe su posición en el mercado al precio elegido.


Vladimir Karputov:

POSITION_PROFIT es sólo el beneficio de la posición (sin comisiones, swaps...). Puedes conocer el swap acumulado dela posición así:

Y la comisión final y el canje final, lo puedes saber después de cerrar la posición, en el historial de transacciones:

Pues bien, todo esto está mal, o más bien incompleto.

Por qué necesito saber la comisión después del cierre, o mejor dicho, necesito saberla, pero en cualquier momento, digamos, la cuenta tiene una comisión y un empate o breakeven, cómo puedo calcular para que el primer desencadenamiento fuera en el nivel en el que la comisión y los swaps se superponen en caso de retroceso del precio y el cierre. Añado 1pp para cubrir la comisión. ¿Qué pasa con los swaps, ya que la posición puede permanecer en el mercado durante una semana y durante este tiempo puede tardar 3pp en ganar swaps y cerrarse con un inconveniente cuando se active el Breakeven?

¿O tal vez no entiendo los cálculos?

 
Vitaly Muzichenko:

En ruso, una orden no puede ser ni una ganancia ni una pérdida, sólo es una orden de ejecución. Una vez que se ejecuta la orden, usted obtiene su posición en el mercado al precio elegido.


Todo esto está mal, o más bien incompleto.

Por qué necesito saber la comisión después del cierre, o más bien necesito saberla, pero en cualquier momento, supongamos que la cuenta tiene comisión y trailing o break-even, cómo calculo para que el primer golpe haya sido a un nivel que se superponga a la comisión y los swaps en caso de retroceso del precio y cierre. Añado 1pp para cubrir la comisión. ¿Qué pasa con los swaps, ya que la posición puede permanecer en el mercado durante una semana y durante este tiempo puede tardar 3pp en ganar swaps y cerrarse con un inconveniente cuando se active el Breakeven?

¿O me he perdido algo en los cálculos?

Entiendo que"POSITION_PROFIT" ya contiene todo (swap, beneficio, comisión), y esto es suficiente para concluir si el beneficio es rentable para mí o no?
 
new-rena:

¿Quién sabe si"POSITION_PROFIT" incluye la comisión y el intercambio?

Si no es así, ¿qué parámetro se necesita para averiguar el importe de la comisión cobrada por un pedido en MQL5?

No estoy imponiendo la biblioteca MT4Orders. Pero tal vez sería más fácil llamar a la buena y vieja OrderCommission.

No sólo funciona en las cuentas de cobertura, sino también en las netas.

 
new-rena:
Entiendo que"POSITION_PROFIT" ya incluye todo (canje, beneficio, comisión).
Ahora vamos a comprobarlo con un simple Asesor Experto...