Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1045

 
Vladimir Baskakov:

Запутался в правильном написании условия, хэлп:

Могут два варианта:

  1. "MA Slow" выше "MA Fast"
  2. "MA Slow" ниже или равно "MA Fast"


Соответственно знак результата будет "+" или "-". Если знак "-" Ваше условие никогда не выполнится, так как "-" всегда будет меньше 5*Point()


То есть код будет таким:

   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:

Могут два варианта:

  1. "MA Slow" выше "MA Fast"
  2. "MA Slow" ниже или равно "MA Fast"


Соответственно знак результата будет "+" или "-". Если знак "-" Ваше условие никогда не выполнится, так как "-" всегда будет меньше 5*Point()


То есть код будет таким:

В точку! Второе условие я тоже так думал сделать;) Спасибо
 
Artyom Trishkin:

Может быть вы выложили декомпилированный код? Может просили что-то ещё, что связано с декомпиляцией исполняемого файла?

нет, вопросы был в переводе кода с mql4 на mql5
Я все сделал вроде, но была ошибка во время работы, я попросил помочь разобраться

 
Roman Sharanov:

нет, вопросы был в переводе кода с mql4 на mql5
Я все сделал вроде, но была ошибка во время работы, я попросил помочь разобраться

Странно. Код был? Может в нём были признаки декомпиляции?

 

Не получается открыть позицию, получаю ответ неверного объема для любых значений.


   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) Wait for Buy  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 [invalid volume]

2019.05.20 21:53:34.002 position_open (XAUUSD,M10) Метод PositionOpen() потерпел неудачу. Код возврата=10014. Описание кода: invalid volume

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
ребят всем привет,  подскажите как посчитать комиссию по открытым сделкам в мт5 том или подскажите може где есть готовая ф-ция
 
Aleksandr Egorov:
ребят всем привет,  подскажите как посчитать комиссию по открытым сделкам в мт5 том или подскажите може где есть готовая ф-ция
#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:
ребят всем привет,  подскажите как посчитать комиссию по открытым сделкам в мт5 том или подскажите може где есть готовая ф-ция
PositionGetDouble(POSITION_COMMISSION)

Или CPositionInf Commission

 
Konstantin Nikitin:

Или CPositionInf Commission

Не пашет давно.

 
fxsaber:

Не пашет давно.

да кстати, думал может у меня руки корявые по всякому попробовал не пашет, а ваша ф-ция четко пашет, в любом случае все вам спасибо за то что откликнулись,

хотя бы понял откуда ноги расту где брать эту комиссию )) походу написал еще свою ф-цию , новичек в мт5 так что сильно не пинайте если можно оцените правильно не правильно 

ну считает правильно вроде все проверил 

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);   }

Причина обращения: