Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1045

 
Vladimir Baskakov:

Ich bin mir über die korrekte Schreibweise des Zustands nicht sicher, bitte helfen Sie mir:

Es könnte zwei Möglichkeiten geben:

  1. "MA Langsam" ist höher als "MA Schnell".
  2. "MA Langsam" ist kleiner oder gleich "MA Schnell".


Dementsprechend wird das Vorzeichen des Ergebnisses "+" oder "-" sein. Wenn das Vorzeichen "-" ist, wird Ihre Bedingung nie erfüllt, da "-" immer kleiner als 5*Punkt() ist.


Mit anderen Worten, der Code lautet

   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:

Es kann zwei Optionen geben:

  1. "MA Langsam" ist höher als "MA Schnell"
  2. "MA Langsam" ist kleiner oder gleich "MA Schnell".


Dementsprechend wird das Vorzeichen des Ergebnisses "+" oder "-" sein. Wenn das Vorzeichen "-" ist, wird Ihre Bedingung niemals erfüllt, da "-" immer kleiner als 5*Punkt() ist.


Mit anderen Worten, der Code lautet

Ganz genau! Bei der zweiten Bedingung habe ich auch daran gedacht, das zu tun ;) Danke
 
Artyom Trishkin:

Vielleicht haben Sie den dekompilierten Code gepostet? Vielleicht haben Sie nach etwas anderem gefragt, das mit der Dekompilierung der ausführbaren Datei zu tun hat?

Nein, die Fragen bezogen sich auf die Übersetzung von Code von mql4 nach mql5
Ich habe alles getan, aber es gab einen Fehler bei der Arbeit, ich bat um Hilfe, um es herauszufinden

 
Roman Sharanov:

Nein, die Fragen bezogen sich auf die Übersetzung von Code von mql4 nach mql5
Ich habe alles scheinbar getan, aber es gab einen Fehler während der Arbeit, ich bat um Hilfe, um es herauszufinden

Seltsam. Gab es einen Code? Vielleicht gab es darin Anzeichen von Verwesung?

 

Ich kann keinePosition eröffnen, ich erhalte für jeden Wert eine falsche Volumenantwort.


   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) Warten auf 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: Marktkauf 1.00 XAUUSD [ungültiges Volumen]

2019.05.20 21:53:34.002 position_open (XAUUSD,M10) Die Methode PositionOpen() ist fehlgeschlagen. Rückgabecode=10014. Codebeschreibung: Ungültiges Volumen

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Hallo Jungs, können Sie mir sagen, wie man die Kommission für offene Trades in mt5 Volumen berechnen oder mir sagen, wo es eine fertige Funktion ist
 
Aleksandr Egorov:
Hallo Jungs, können Sie mir sagen, wie man die Kommission für offene Trades in mt5 Volumen berechnen oder mir sagen, wo es eine fertige Funktion ist
#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:
Hallo Jungs, können Sie mir sagen, wie man die Kommission für offene Geschäfte in mt5 Volumen berechnen oder mir sagen, ob es eine vorgefertigte Funktion ist
PositionGetDouble(POSITION_COMMISSION)

Oder CPositionInf Kommission

 
Konstantin Nikitin:

Oder CPositionInf Kommission

Das funktioniert schon lange nicht mehr.

 
fxsaber:

Seit langem nicht mehr gearbeitet.

Ich habe es ausprobiert und Ihre Funktion funktioniert einwandfrei. Vielen Dank für Ihr Feedback,

Ich habe es herausgefunden, wo die Kommission zu bekommen)) Ich bin neu in MT5 so bin ich nicht zu scharf auf sie, aber ich würde besser überprüfen, wenn es nicht richtig ist

Ich glaube, ich habe es richtig gemacht.

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