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

 

Alexey Viktorov #:

Sua variante é bastante aceitável, mas você precisa substituir as ordens por transações. Lucro, comissão e swap são armazenados por transações, não por ordens.

E leve em conta que uma ordem pode gerar várias transações.

Portanto, selecione negócios para cada ordem ou crie uma matriz/lista (pelo número de ordens) de estruturas e preencha-as selecionando negócios.
 
JRandomTrader #:

E leve em conta que um pedido pode gerar vários negócios.

Portanto, é preciso pré-selecionar suas transações para cada ordem ou criar uma matriz/lista (pelo número de ordens) de estruturas e preenchê-las pesquisando as transações.

Por que complicar sua vida? Se você precisar calcular o lucro de um determinado período, e no código-fonte é isso que é feito, basta percorrer as transações desse período. A transação IN tem ou pode ter uma comissão, a transação OUT pode ter um swap e lucro além da comissão. Assim, depois de resumir tudo, obtivemos o resultado desejado.

Outra coisa é se a tarefa for coletar o lucro para cada ID de posição separadamente em uma matriz.

 
Bom dia, havia um sinal com uma ordem aberta que estava aguardando seu movimento, mas o administrador enviou-o para o arquivo devido à negociação inativa, como ele afirma... por favor, diga-me como retirá-lo de lá agora.... obrigado.
 

Pessoal, me ajudem. Anteriormente, ao clicar na roda do mouse, o modo de mira do cursor era ativado no terminal e no MT4 e MT5. Agora ele desapareceu. Como isso é personalizado?

p.s. Nunca coloquei nenhum driver de mouse, tudo funcionava automaticamente....

 
Alexander Mostovnek #:

Pessoal, me ajudem. Anteriormente, ao clicar na roda do mouse, o modo de mira do cursor era ativado no terminal e no MT4 e MT5. Agora ele desapareceu. Como isso está configurado?

p.s. Nunca coloquei nenhum driver de mouse, tudo funcionava automaticamente....

Ele não desapareceu, apenas está menos responsivo...

Cheguei a pensar que o mouse estava quebrado e que o botão não estava sendo pressionado uma ou duas vezes

 
Maxim Kuznetsov #:

ele não desapareceu, apenas está menos responsivo.

Cheguei a pensar que o mouse estava quebrado e que o botão estava escorregando.

Mas não sei. Eu o testei várias vezes e ele é muito ágil. Não há atrasos. Ele nunca apareceu uma vez.


 
A prensagem da roda está morta..... :)
 

- Doutor, estou com uma dor aqui, aqui e aqui.

- Seu dedo está quebrado).

 
double MinOpenBuy(int a = 1)
   {
   ulong tick = 0;
   datetime time = 0;
   double result=0,lot=0,profit=0,openprice=0,
          NewPrice, OldPrice = DBL_MAX;
   for(int i=OrdersTotal(); i>=0; i--)
   {
      if (a_position.SelectByIndex(i))
      {
         if (a_position.Symbol() == a_symbol.Name() && a_position.Magic() == Magic && a_position.PositionType() == POSITION_TYPE_BUY)
         {
            NewPrice = a_position.PriceOpen();
            if ( NewPrice < OldPrice)
            {
               OldPrice = NewPrice;
               profit = NormalizeDouble(a_position.Commission()+a_position.Swap()+a_position.Profit(),2);
               lot = a_position.Volume(); 
               time = POSITION_TIME; 
               tick = a_position.Ticket(); 
            }
         }
      }
   }
   if(a==1) 
	{result = OldPrice;} else
   if(a==2) 
	{result = profit;} else
   if(a==3) 
	{result = lot;} else
   if(a==4) 
	{result=(double)time;}else
   if(a==5) 
	{result=(double)tick;}else
   {result=0;}
   return(result);
  }
Bom dia.
Boas festas a todos.
Preciso da ajuda de profissionais.
Escrevi este código em MQL4 para procurar a ordem com o menor preço de abertura e obter seus dados
Agora estou tentando transferir tudo para MQL5, mas, por algum motivo, não funciona(
Qual é o erro?
 
Maksim Burov #:
for(int i=OrdersTotal(); i>=0; i--)

Não analisei a essência do código, mas o que imediatamente me chamou a atenção foi o número incorretamente definido de pedidos a serem pesquisados. Deveria ser assim:

for(int i=OrdersTotal() - 1; i>=0; i--)

E também no loop, você está percorrendo as ordens, mas está procurando propriedades de posição. Isso também está incorreto. Presumo que o mais provável é que você precise fazer um loop pelas posições:

for(int i=PositionsTotal() - 1; i>=0; i--)

Atenciosamente, Vladimir.

Razão: