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

 
Konstantin Nikitin:

Assim, retire a funcionalidade necessária da classe e escreva-a para si próprio.

Obrigado. A minha pergunta é muito mais fácil - abri uma encomenda através de OrderSend(pedido,resultado) e quero operar imediatamente com os seus parâmetros - por exemplo, imprimi-los. Assim:
 //============================================================
        //--- declare and initialize the trade request and result of trade request
        MqlTradeRequest request={0};
        MqlTradeResult  result={0};
        //--- parameters of request
        request.action   = TRADE_ACTION_DEAL;    // type of trade operation
        request.symbol   = Pair1;                // symbol
        request.volume   = lots;                 // volume of lot
        request.type     = oper;                 // order type
        request.price    = priceOpen;            // price for opening
        request.deviation= Slippage;             // allowed deviation from the price
        request.magic    = magic;   
  //===================================      
        if(OrderSend(request,result))
                
        Print ("retcode = " + retcode + "; ");        
        Print ("deal = " + deal + "; ");
        Print ("order = " + order + "; "); 
        Print ("volume = " + volume + "; ");  
        Print ("price = " + price + "; ")
Alguns dos parâmetros, tais como código retc, ordem e volume são impressos, mas negócio e preço não são.
Especialmente o preço é de interesse. Todos os resultados estão em MqlTradeResult. Imprimo-os todos da mesma forma, mas alguns deles são impressos enquanto outros não. A questão - por que razão certos parâmetros são impressos enquanto outros não o são?
 

Como fundir arrays?

string eData[][50][3];
string bData[][20][5];
 ArrayCopy(eData,bData,ArraySize(eData)); // error: incompatible 3 arrays ranges for ArrayCopy function (50 and 20)

Eu compreendo queo ArrayCopy copia apenas matrizes unidimensionais?

 
Vitaly Muzichenko:

Como fundir arrays?

Eu compreendo queo ArrayCopy copia apenas matrizes unidimensionais?

Não, ArrayCopy copia quaisquer matrizes que sejam permitidas em mql5\4. Mas devem ser idênticos para serem copiados. A segunda dimensão da primeira matriz tem 50, e a segunda matriz tem apenas 20. É o mesmo para a terceira dimensão.
 
Algotrader18:
Obrigado. A minha pergunta é muito mais fácil - abri uma encomenda através de OrderSend(pedido,resultado) e quero operar imediatamente com os seus parâmetros - por exemplo, imprimi-los. Assim: Alguns dos parâmetros como código retc, ordem e volume são impressos, mas negócio e preço não são.
Especialmente o preço é de interesse. Todos os resultados estão disponíveis em MqlTradeResult. Imprimo-os igualmente, mas alguns deles são impressos enquanto outros não. A questão - por que razão certos parâmetros são impressos enquanto outros não o são?
 //============================================================
        //--- declare and initialize the trade request and result of trade request
        MqlTradeRequest request={0};
        MqlTradeResult  result={0};
        //--- parameters of request
        request.action   = TRADE_ACTION_DEAL;    // type of trade operation
        request.symbol   = Pair1;                // symbol
        request.volume   = lots;                 // volume of lot
        request.type     = oper;                 // order type
        request.price    = priceOpen;            // price for opening
        request.deviation= Slippage;             // allowed deviation from the price
        request.magic    = magic;   
  //===================================      
        if(!OrderSend(request,result))
          return;
                
        Print ("retcode = " + result. retcode + "; ");        
        Print ("deal = " + result. deal + "; ");
        Print ("order = " + result. order + "; "); 
        Print ("volume = " + result. volume + "; ");  
        Print ("price = " + result. price + "; ");
 
Konstantin Nikitin:

Era assim que era originalmente

Fórum sobre Comércio, Sistemas de Comércio Automatizados e Testes de Estratégia

Perguntas de principiantes MQL5 MT5 MetaTrader 5

Algotrader18, 2018.10.25 07:39

Boa tarde!

Abro uma posição e quero imprimir o conteúdo da MqlTradeResult desta forma:


   //--- declare and initialize the trade request and result of trade request
        MqlTradeRequest request={0};
        MqlTradeResult  result={0};
        //--- parameters of request
        request.action   = TRADE_ACTION_DEAL;    // type of trade operation
        request.symbol   = Pair1;                // symbol
        request.volume   = lots;                 // volume of lot
        request.type     = oper;                 // order type
        request.price    = priceOpen;            // price for opening
        request.deviation= Slippage;             // allowed deviation from the price
        request.magic    = magic;   
 //============================================================     
        if(OrderSend(request,result))       
        Print ("result.retcode = " + result.retcode + "; ");        
        Print ("deal = " + result.deal + "; ");
        Print ("order = " + result.order + "; "); 
        Print ("volume = " + result.volume + "; ");  
        Print ("price = " + result.price + "; ");

resultado.retcode, encomenda e volume são impressos mas o negócio e o preço são sempre zeros.
Por favor, poderia dizer-me o que estou a fazer mal?

Porque se perdeu no próximo código.... Pergunta...

Penso que o regresso é inaceitável. Será impresso no próximo tick.

 
Alexey Viktorov:
E eu penso que o regresso é inaceitável. Afinal de contas, será impresso no próximo tick.

Ordem de AprendizagemEnviar

Valor devolvido

Se averificação da estrutura básica (verificação de ponteiro) for bem sucedida, a verdade é devolvida - isto não indica a execução bem sucedida da operação comercial. Para obter uma descrição mais detalhada do resultado da função, devemos analisar os campos da estrutura de resultados.

Se o cheque básico for passado, só então o imprimimos. Tudo em um só tique. É por isso que escrevi
        if(!OrderSend(request,result))
          return;
 
Konstantin Nikitin:

Ordem de ExploraçãoEnviar

Se passar o cheque básico, só então imprima-o. Tudo na mesma carraça. Foi por isso que o escrevi.
Aha. Eu não vi essa. Desculpe...
 
Alexey Viktorov:

Este era originalmente o caso.

porque se perdeu no código seguinte... pergunta...

Mas, na minha opinião, esta é inaceitável. Será impresso no próximo tick.

Experimentei várias variantes, incluindo esta:

        ulong  deal;
        ulong  order;
        double volume;
        double price;    
          
 //============================================================
        //--- declare and initialize the trade request and result of trade request
        MqlTradeRequest request={0};
        MqlTradeResult  result={0};
        //--- parameters of request
        request.action   = TRADE_ACTION_DEAL;    // type of trade operation
        request.symbol   = Pair1;                // symbol
        request.volume   = lots;                 // volume of lot
        request.type     = oper;                 // order type
        request.price    = priceOpen;            // price for opening
        request.deviation= Slippage;             // allowed deviation from the price
        request.magic    = magic;   
  //===================================      
        if(OrderSend(request,result))

        retcode = result.retcode;
        deal = result.deal;
        order = result.order;
        volume = result.volume;
        price = result.price;
       
      
        Print ("retcode = " + retcode + "; ");        
        Print ("deal = " + deal + "; ");
        Print ("order = " + order + "; "); 
        Print ("volume = " + volume + "; ");  
        Print ("price = " + price + "; ");

Não copiei tudo para a pergunta por engano.

 
Algotrader18:

Já tentei diferentes opções, incluindo esta:

e copiado para a pergunta por engano...

Tente pesquisar, fxsaber uma vez trabalhou neste problema. Não sei o que ele fez, não estou interessado. É mais fácil para mim obter todos estes parâmetros na OnTradeTransaction
 
Rustam Esedulaev:
Olá a todos!
No mql 4 existe uma verificação como a IsTradeContedtBusy
Existe algo semelhante no mql 5?
Obrigado!

Não há nada de semelhante. O MT5 é multithreaded.