Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1045

 
Vladimir Baskakov:

Confuso sobre a ortografia correcta da condição, ajuda:

Poderia haver duas opções:

  1. "MA lento" é mais alto do que "MA rápido".
  2. "MA lento" é inferior ou igual a "MA rápido".


Assim, o sinal do resultado será "+" ou "-". Se o sinal for "-", a sua condição nunca será preenchida uma vez que "-" será sempre inferior a 5*Ponto().


Por outras palavras, o 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:

Pode haver duas opções:

  1. "MA Lento" é mais alto que "MA Rápido"
  2. "MA lento" é inferior ou igual a "MA rápido".


Assim, o sinal do resultado será "+" ou "-". Se o sinal for "-", a sua condição nunca será preenchida uma vez que "-" será sempre inferior a 5*Ponto()


Por outras palavras, o código será

Exactamente! A segunda condição em que eu estava a pensar fazer isso também ;) Obrigado
 
Artyom Trishkin:

Talvez tenha afixado o código descompilado? Talvez tenha pedido algo mais para fazer com a descompilação do executável?

Não, as perguntas eram sobre a tradução do código de mql4 para mql5
Fiz tudo, mas houve um erro durante o trabalho, pedi ajuda para o descobrir

 
Roman Sharanov:

Não, as perguntas eram sobre a tradução do código de mql4 para mql5
Fiz tudo o que parecia, mas houve um erro durante o trabalho, pedi ajuda para o descobrir

Estranho. Havia um código? Talvez houvesse sinais de descompilação nela?

 

Não possoabrir posição, recebo uma resposta de volume errada para quaisquer valores.


   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) Aguarde pela compra V = 1.00 preço = 1278.15 SL = 0.00 TP = 0.00

2019.05.20 21:53:34.002 position_open (XAUUSD,M10) CTrade::OrderSend: compra no mercado 1.00 XAUUSD [volume inválido]

2019.05.20 21:53:34.002 position_open (XAUUSD,M10) Método PositionOpen() falhou. Código de retorno=10014. Descrição do código: volume inválido

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Olá pessoal, podem dizer-me como calcular a comissão para as trocas abertas em volume mt5 ou dizer-me onde existe uma função pronta
 
Aleksandr Egorov:
Olá pessoal, podem dizer-me como calcular a comissão para as trocas abertas em volume mt5 ou dizer-me onde existe uma função 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:
Olá pessoal, podem dizer-me como calcular a comissão para as trocas abertas em volume mt5 ou dizer-me se existe uma função pronta
PositionGetDouble(POSITION_COMMISSION)

Ou CPositionInf Commission

 
Konstantin Nikitin:

Ou CPositionInf Commission

Já não trabalha há muito tempo.

 
fxsaber:

Não funciona há muito tempo.

Já tentei e a vossa função funciona bem. De qualquer modo, muito obrigado pelo vosso feedback,

Já descobri onde obter a comissão)) Sou novo no MT5 por isso não estou muito interessado, mas é melhor verificar se não está certo

acho que acertei

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

Razão: