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

 

Envio um pedido como este para colocar um pedido pendente. Mas não expira no final do dia de negociação. Eu tenteiORDER_TIME_SPECIFIED_DAY mas também não funciona. Qual é o problema?

MqlTradeRequest  request = {0};
         request.action = TRADE_ACTION_PENDING;
         request.symbol = _Symbol;
         request.volume = Lot;
         request.price  = high(Quant_Bars); 
         request.sl     = sl;
         request.tp     = tp;
         request.type   = ORDER_TYPE_BUY_STOP; 
         request.expiration = ORDER_TIME_DAY;
         request.magic = magicN;
MqlTradeResult result = {0};

if (OrderSend (request,result))
    {
    Print ("Ордер успешно отправлен, ошибок нет =  ", GetLastError());
    } else
       {
        Print ("Не удалось отправить запрос, ошибка = ", GetLastError());
       }
 

A função TrendLineVisible - da classe CCurve padrão- é esta uma linha de regressão?

Como posso fazer esta linha aparecer completamente no gráfico, em vez de ser cortada?


 

porque é que diz aqui que ... posição só deve ser seleccionada através do método Select or SelectByIndex,

se o método SelectByTicket também funcionar?

 

Ajude-me com a função ArrayPrint - quero obter os últimos 100 elementos de uma matriz, e os primeiros 100 e os últimos 100.

               ArrayPrint(arr_P_val_X,8,NULL,Calc_XY-100,100,ARRAYPRINT_INDEX);//Ожидаю получить 100 последних элементов, выдает первые
               ArrayPrint(arr_P_val_X,ARRAYPRINT_LIMIT);//Хочу получить 100 и 100 последний - выдает весь массив - что не так?

Calc_XY - o número de elementos da matriz.

 

como obter o bilhete de um negócio que acabou de ser aberto?
Se utilizar a classe CTrade e a função Buy().

No mt4, a função OrderSend() dá imediatamente um bilhete.



Existe alguma função que dê um bilhete para uma posição pelo índice de posição?

ou é necessário seleccionar primeiro uma posição (seleccionar)?

 
multiplicator:

como obter o bilhete de um negócio que acabou de ser aberto?
Se utilizar a classe CTrade e a função Buy().

No mt4, a função OrderSend() dá imediatamente um bilhete.



Existe alguma função que dê um bilhete para uma posição pelo índice de posição?

ou é necessário seleccionar primeiro uma posição (seleccionar)?

Em OnTradeTransaction com tipo de transacção trans.type == TRADE_TRANSACTION_DEAL_ADD encontra um bilhete na estrutura trans.position

struct MqlTradeTransaction 
  { 
   ulong                         deal;             // Тикет сделки 
   ulong                         order;            // Тикет ордера 
   string                        symbol;           // Имя торгового инструмента 
   ENUM_TRADE_TRANSACTION_TYPE   type;             // Тип торговой транзакции 
   ENUM_ORDER_TYPE               order_type;       // Тип ордера 
   ENUM_ORDER_STATE              order_state;      // Состояние ордера 
   ENUM_DEAL_TYPE                deal_type;        // Тип сделки 
   ENUM_ORDER_TYPE_TIME          time_type;        // Тип ордера по времени действия 
   datetime                      time_expiration;  // Срок истечения ордера 
   double                        price;            // Цена  
   double                        price_trigger;    // Цена срабатывания стоп-лимитного ордера 
   double                        price_sl;         // Уровень Stop Loss 
   double                        price_tp;         // Уровень Take Profit 
   double                        volume;           // Объем в лотах 
   ulong                         position;         // Тикет позиции 
   ulong                         position_by;      // Тикет встречной позиции 
  };
 
Olá a todos os queridos membros do fórum, moderadores, administradores, etc.
Explique por favor como calcular o lucro total das posições em aberto na MQL5. Não há qualquer problema com isso na MQL4. Não estou a ser preguiçoso aqui, mas porque não sei como implementá-lo. Usando PositionGetDouble(POSITION_PROFIT), o lucro é calculado apenas para a primeira posição aberta. 

Mas na MQL4, OrderProfit() mostralucro em todas as encomendas. Talvez me tenha escapado alguma coisa...
Esqueci-me de especificar o tipo de conta de cobertura
 
Ramiz Mavludov:
Desculpe, esqueci-me de mencionar que o tipo de conta é hedge.

Deve frequentar urgentemente e sem falta um curso de erradicação do analfabetismo. Em mql5, bem como em mql4, antes de trabalhar com uma posição (em mql4, uma ordem), deve seleccionar a posição. Ao contrário do mql4, em mql5 lembro-me de três funções para seleccionar uma posição. A documentação tem uma boa descrição dos mesmos. O caminho... Não pensem nisso como rude.

 
Ramiz Mavludov:
Desculpe, esqueci-me de especificar, tipo de conta hedge

Códigoanterior dequebra de velas 3, função CalcularPosições, lucro total

//+------------------------------------------------------------------+
//| Calculate positions Buy and Sell                                 |
//+------------------------------------------------------------------+
void CalculatePositions(int &count_buys,int &count_sells,double &profit)
  {
   count_buys=0;
   count_sells=0;
   profit=0.0;

   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
         if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
           {
            profit+=m_position.Commission()+m_position.Swap()+m_position.Profit();
            if(m_position.PositionType()==POSITION_TYPE_BUY)
               count_buys++;

            if(m_position.PositionType()==POSITION_TYPE_SELL)
               count_sells++;
           }
//---
   return;
  }

Após a travessia de todas as posições para este símbolo e Magic, a variável delucro mostrará o lucro total.

 
Vladimir Karputov:

Códigoanterior dequebra de velas 3, função CalcularPosições, lucro total

Após a travessia de todas as posições para este símbolo e Magic, a variávellucro conterá o lucro total.

Obrigado Vladimir.

Razão: