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

 
Vladimir Baskakov:

Confundido sobre la ortografía correcta de la condición, ayuda:

Podría haber dos opciones:

  1. "MA Lento" es mayor que "MA Rápido".
  2. "MA Lento" es inferior o igual a "MA Rápido".


En consecuencia, el signo del resultado será "+" o "-". Si el signo es "-", su condición nunca se cumplirá ya que "-" siempre será menor que 5*Punto().


En otras palabras, el código será

   if(ma_slow[0]>ma_slow[9])
      if(ma_slow[0]-ma_slow[9]>5*Point())
        {

        }
   if(ma_slow[9]>ma_slow[0])
      if(ma_slow[9]-ma_slow[0]>5*Point())
        {

        }
 
Vladimir Karputov:

Puede haber dos opciones:

  1. "MA Lento" es mayor que "MA Rápido"
  2. "MA Lento" es inferior o igual a "MA Rápido".


En consecuencia, el signo del resultado será "+" o "-". Si el signo es "-", su condición nunca se cumplirá ya que "-" siempre será menor que 5*Punto()


En otras palabras, el código será

¡Exactamente! La segunda condición yo también pensaba hacerla ;) Gracias
 
Artyom Trishkin:

¿Quizás has publicado el código descompilado? ¿Quizás pediste algo más relacionado con la descompilación del ejecutable?

No, las preguntas eran sobre la traducción del código de mql4 a mql5
Hice todo, pero hubo un error mientras trabajaba, pedí ayuda para resolverlo

 
Roman Sharanov:

No, las preguntas eran sobre la traducción del código de mql4 a mql5
Hice todo aparentemente, pero hubo un error mientras trabajaba, pedí ayuda para resolverlo

Extraño. ¿Había un código? ¿Tal vez había signos de descomposición en él?

 

No puedoabrir la posición, obtengo una respuesta de volumen errónea para cualquier valor.


   if(direction==0)
      open_label=open_label+"Buy  "+ "V = "+DoubleToString(V,2)+" price = "+DoubleToString(price_open,_Digits)+
                  " SL = "+DoubleToString(SL,_Digits)+"  TP = "+DoubleToString(TP,_Digits);
   else   
      open_label=open_label+"Sell  "+ "V = "+DoubleToString(V,2)+" price = "+DoubleToString(price_open,_Digits)+
                  " SL = "+DoubleToString(SL,_Digits)+"  TP = "+DoubleToString(TP,_Digits);
   
    Print(open_label);

   if(direction==0 && last.ask<=price_open)
      {
        if(!trade.PositionOpen(_Symbol,ORDER_TYPE_BUY,V,price_open,SL,TP))
          Print("Метод PositionOpen() потерпел неудачу. Код возврата=",trade.ResultRetcode(),
            ". Описание кода: ",trade.ResultRetcodeDescription());
        else
          Print("Метод PositionOpen() выполнен успешно. Код возврата=",trade.ResultRetcode(),
            " (",trade.ResultRetcodeDescription(),")");
      }


2019.05.20 21:53:24.814 position_open (XAUUSD,M10) Esperar a la compra V = 1.00 price = 1278.15 SL = 0.00 TP = 0.00

2019.05.20 21:53:34.002 position_open (XAUUSD,M10) CTrade::OrderSend: market buy 1.00 XAUUSD [volumen no válido]

2019.05.20 21:53:34.002 position_open (XAUUSD,M10) Falló el método PositionOpen(). Código de retorno=10014. Descripción del código: volumen no válido

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Hola chicos, podéis decirme cómo calcular la comisión de las operaciones abiertas en el volumen de mt5 o decirme dónde hay una función preparada
 
Aleksandr Egorov:
Hola chicos, podéis decirme cómo calcular la comisión de las operaciones abiertas en el volumen de mt5 o decirme dónde hay una función preparada
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

// Комиссия всех открытых позиций.
double GetSumCommission()
{
  double Sum = 0;
  
  for (int i = OrdersTotal() - 1; i >= 0; i--)
    if (OrderSelect(i, SELECT_BY_POS))
      Sum += OrderCommission();
      
  return(Sum);
}
 
Aleksandr Egorov:
Hola chicos, me podéis decir cómo calcular la comisión de las operaciones abiertas en el volumen de mt5 o decirme si hay alguna función preparada
PositionGetDouble(POSITION_COMMISSION)

O la Comisión CPositionInf

 
Konstantin Nikitin:

O la Comisión CPositionInf

Hace tiempo que no funciona.

 
fxsaber:

No trabajar durante mucho tiempo.

Lo he probado y su función funciona bien. De todas formas, muchas gracias por tu comentario,

Lo tengo claro de donde sacar la comisión)) Soy nuevo en MT5 así que no estoy muy puesto en ello, pero mejor lo reviso si no está bien

No estoy seguro de si tengo razón o no.

double PROFIT()     {

   double  rez=0, alprof=0,svap=0,commicion=0;

   ulong ticet=0,tikett=0;

   long  entry=0;

   string com="";

   ulong tik;

   ulong ord;

   int i=0;

   for(i=PositionsTotal()-1;i>=0;i--) 

     {

      if(PositionGetSymbol(i)==Symbol() || PositionGetSymbol(i)==Pair)

        {

         if((tik=PositionGetTicket(i))>0)

           {

            alprof+=PositionGetDouble(POSITION_PROFIT);

            svap+=PositionGetDouble(POSITION_SWAP);

           }

        }

     }

   HistorySelect(0,TimeCurrent());

   for(uint r=HistoryDealsTotal()-1;r>0;r--) 

     {

      if((tikett=HistoryDealGetTicket(r))>0) 

        {

         ord=HistoryDealGetInteger(tikett,DEAL_ORDER);

         entry =HistoryDealGetInteger(tikett,DEAL_ENTRY);

         if(entry==DEAL_ENTRY_IN)

           {

            for(int t=PositionsTotal()-1;t>=0;t--) 

              {

               if(tik==ord)

                 {

                  commicion+=HistoryDealGetDouble(tikett,DEAL_COMMISSION);

                 }

              }

           }

        }

     }

   rez+=alprof+commicion+svap;

   return(rez);   }