Questions des débutants MQL5 MT5 MetaTrader 5 - page 1045

 
Vladimir Baskakov:

Je suis confus quant à l'orthographe correcte de la condition, aidez-moi :

Il pourrait y avoir deux options :

  1. "MA Slow" est plus élevé que "MA Fast".
  2. "MA Slow" est inférieur ou égal à "MA Fast".


En conséquence, le signe du résultat sera "+" ou "-". Si le signe est "-", votre condition ne sera jamais remplie puisque "-" sera toujours inférieur à 5*Point().


En d'autres termes, le code sera

   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:

Il peut y avoir deux options :

  1. "MA Slow" est plus élevé que "MA Fast".
  2. "MA Slow" est inférieur ou égal à "MA Fast".


En conséquence, le signe du résultat sera "+" ou "-". Si le signe est "-", votre condition ne sera jamais remplie puisque "-" sera toujours inférieur à 5*Point()


En d'autres termes, le code sera

Exactement ! La deuxième condition, je pensais la faire aussi ;) Merci
 
Artyom Trishkin:

Peut-être avez-vous posté le code décompilé ? Peut-être avez-vous demandé quelque chose d'autre en rapport avec la décompilation de l'exécutable ?

Non, les questions concernaient la traduction du code de mql4 à mql5.
J'ai tout fait, mais il y a eu une erreur pendant le travail, j'ai demandé de l'aide pour le résoudre

 
Roman Sharanov:

Non, les questions concernaient la traduction du code de mql4 à mql5.
J'ai tout fait apparemment, mais il y a eu une erreur pendant le travail, j'ai demandé de l'aide pour la résoudre.

Étrange. Il y avait un code ? Peut-être y avait-il des signes de décomposition ?

 

Je ne peux pasouvrir une position, j'obtiens une réponse erronée du volume pour toutes les valeurs.


   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 : marché acheter 1.00 XAUUSD [volume invalide]

2019.05.20 21:53:34.002 position_open (XAUUSD,M10) La méthode PositionOpen() a échoué. Code de retour=10014. Description du code : volume invalide

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Bonjour les gars, pouvez-vous me dire comment calculer la commission pour les trades ouverts dans mt5 volume ou me dire où il y a une fonction prête à l'emploi.
 
Aleksandr Egorov:
Bonjour les gars, pouvez-vous me dire comment calculer la commission pour les trades ouverts dans mt5 volume ou me dire où il y a une fonction prête à l'emploi.
#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:
Bonjour les gars, pouvez-vous me dire comment calculer la commission pour les trades ouverts dans mt5 volume ou me dire s'il existe une fonction prête à l'emploi.
PositionGetDouble(POSITION_COMMISSION)

Ou la Commission CPositionInf

 
Konstantin Nikitin:

Ou la Commission CPositionInf

Ça fait longtemps qu'il ne fonctionne plus.

 
fxsaber:

Ne fonctionne pas depuis longtemps.

J'ai essayé et votre fonction fonctionne bien. En tout cas, merci beaucoup pour vos commentaires,

J'ai compris où obtenir la commission)) Je suis nouveau sur MT5 donc je ne suis pas très enthousiaste, mais je ferais mieux de vérifier si ce n'est pas bon.

Je crois que j'ai raison.

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