Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1045

 
Vladimir Baskakov:

Confuso sull'ortografia corretta della condizione, aiuto:

Ci potrebbero essere due opzioni:

  1. "MA Slow" è superiore a "MA Fast".
  2. "MA Slow" è inferiore o uguale a "MA Fast".


Di conseguenza, il segno del risultato sarà "+" o "-". Se il segno è "-", la vostra condizione non sarà mai soddisfatta poiché "-" sarà sempre inferiore a 5*Punto().


In altre parole, il codice sarà

   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:

Ci possono essere due opzioni:

  1. "MA Slow" è superiore a "MA Fast"
  2. "MA Slow" è inferiore o uguale a "MA Fast".


Di conseguenza, il segno del risultato sarà "+" o "-". Se il segno è "-", la vostra condizione non sarà mai soddisfatta poiché "-" sarà sempre inferiore a 5*Punto()


In altre parole, il codice sarà

Esattamente! La seconda condizione stavo pensando di farla anch'io ;) Grazie
 
Artyom Trishkin:

Forse hai postato il codice decompilato? Forse hai chiesto qualcos'altro per decompilare l'eseguibile?

No, le domande riguardavano la traduzione del codice da mql4 a mql5
Ho fatto tutto, ma c'è stato un errore durante il lavoro, ho chiesto aiuto per capirlo

 
Roman Sharanov:

No, le domande riguardavano la traduzione del codice da mql4 a mql5
Ho fatto tutto apparentemente, ma c'è stato un errore durante il lavoro, ho chiesto aiuto per capirlo

Strano. C'era un codice? Forse c'erano segni di decomposizione?

 

Non possoaprire una posizione, ottengo una risposta errata del volume per qualsiasi valore.


   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) Aspettare per comprare V = 1.00 prezzo = 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 [volume non valido]

2019.05.20 21:53:34.002 position_open (XAUUSD,M10) Metodo PositionOpen() fallito. Codice di ritorno=10014. Descrizione del codice: volume non valido

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Ciao ragazzi, potete dirmi come calcolare la commissione per i trade aperti nel volume di mt5 o dirmi dove c'è una funzione già pronta
 
Aleksandr Egorov:
Ciao ragazzi, potete dirmi come calcolare la commissione per i trade aperti nel volume di mt5 o dirmi dove c'è una funzione già pronta
#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:
Ciao ragazzi, potete dirmi come calcolare la commissione per i trade aperti nel volume di mt5 o dirmi se c'è una funzione già pronta
PositionGetDouble(POSITION_COMMISSION)

O Commissione CPositionInf

 
Konstantin Nikitin:

O Commissione CPositionInf

Non funziona da molto tempo.

 
fxsaber:

Non funziona da molto tempo.

Ho provato e la tua funzione funziona bene. Comunque, grazie mille per il tuo feedback,

Ho capito dove prendere la commissione)) sono nuovo di MT5 quindi non sono troppo entusiasta, ma è meglio controllare se non è giusto

Penso di aver capito bene

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

Motivazione: