Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 103

 
trader781:
por exemplo: Como esperar pelo fechamento de um negócio?
Alexey Viktorov:
1. Quando uma ordem é aberta, escreva o bilhete no nível global ou estático variável, e então monitore esta ordem até que fique azul, oops, até que seja fechada por comparação OrderCloseTime() > 0. Se o tempo de fechamento for maior que zero, o pedido é fechado.

2. A substituição para o operador GOTO é muito mais eficiente. Leia a documentação sobre as funções.

Existe alguma maneira de me mostrar um exemplo? Como posso esperar pelo fechamento do comércio anterior?

double Lot = 0.1;      

double loss = 100;  



int start()

  {

  int order;

    if(OrdersTotal()==0)                            

    {                  

      order = OrderSend(Symbol(),OP_BUY,Lot,Ask,1*Point,Ask-loss*Point,Ask+loss*Point);   // Вверх

      order = OrderSend(Symbol(),OP_SELL,Lot,Bid,1*Point,Bid+loss*Point,Bid-loss*Point);    // Вниз

    }



   return(0);

  }

//+------------------------------------------------------------------+

 
DenZell:

Existe alguma maneira de me mostrar um exemplo? Como posso esperar pelo fechamento do comércio anterior?

double Lot = 0.1;      

double loss = 100;  



int start()

  {

  int order;

    if(OrdersTotal()==0)                            

    {                  

      order = OrderSend(Symbol(),OP_BUY,Lot,Ask,1*Point,Ask-loss*Point,Ask+loss*Point);   // Вверх

      order = OrderSend(Symbol(),OP_SELL,Lot,Bid,1*Point,Bid+loss*Point,Bid-loss*Point);    // Вниз

    }



   return(0);

  }

//+------------------------------------------------------------------+

Há várias opções.

A mais simples é a seqüência de ações. Primeiro, tentamos fazer algo com uma ordem já aberta, e depois, se não houver uma ordem aberta, tentamos defini-la.

Dividimos o manuseio da posição e a abertura de uma nova ordem em duas funções distintas, definidas pelo usuário. Em seguida, na função OnTick() verificar a presença de ordens abertas e chamar uma ou outra função de acordo com o resultado obtido.

É o que parece por palavras:

void OnTick()
{
if(OrdersTotal() > 0)
  открытие();
else
  сопровождение();
}

bool открытие()
{
// здесь код открытия
}

bool сопровождение()
{
// здесь код сопровождения
}
E é ainda mais difícil verificar uma ordem específica se OrderCloseTime() > 0.

Este é o caso se a conta fornecer, mas mais freqüentemente é o caso do trabalho de outros Consultores Especialistas ou da abertura manual de ordens.
 
é possível selecionar programticamente a data de início do histórico da conta no terminal?
 
Money_Maker:
Posso selecionar programticamente a data de início do histórico da conta no terminal?
Você pode. Esta será a primeira ordem na história com o tipo 6 - operação de equilíbrio. O tempo de abertura desta ordem será o início da história da conta.
 
Artyom Trishkin:
Você pode. Esta será a primeira ordem na história com o tipo 6 - operação de equilíbrio.
Não preciso da primeira ordem na história ... a história abre no máximo ... preciso da história a partir de uma determinada data ... que vou definir programticamente (aparentemente, a questão foi simplificada devido aos detalhes)
 
Money_Maker:
Eu não preciso da primeira ordem na história ... a história é aberta ao máximo eu preciso da história a partir de uma determinada data ... que eu vou definir programticamente (aparentemente, a questão foi racionalizada às custas dos detalhes)
A resposta também é possível.

Mas a questão ainda é "racionalizada", então direi que devemos pular as ordens cujo tempo aberto é mais cedo do que aquela "data específica".
 
Artyom Trishkin:
A resposta também é que você pode.

Mas a questão ainda permanece "racionalizada", então eu diria que devemos saltar ordens cujo tempo de abertura é anterior a esta "determinada data" ... claro que não me ocorreu ... mas 7 anos é um número muito grande de ordens ...
Eu realmente não tenho pensado em filtrar por data ... mas 7 anos é um grande número de pedidos .
a pergunta é sublinhada em vermelho na imagem da tela ... então a pergunta não é simplificada?
 
Money_Maker:
É claro que não me ocorreu filtrar por data ... mas em 7 anos há muitos pedidos .
Na captura de tela, a pergunta é sublinhada em vermelho e você tem que colocar uma certa data lá... então a pergunta não é simplificada?
Eu não entendo sua pergunta :(

O que você quer fazer exatamente programático?
 
Artyom Trishkin:
Eu não entendo sua pergunta :(

O que você quer fazer exatamente programático?
Onde estiver sublinhado em vermelho, digite a data e essencialmente clique em ok... ela determina a profundidade da história no relatório
 
Money_Maker:
onde está sublinhado em vermelho, digite a data e essencialmente clique ok... ela determina a profundidade da história no relatório
Você não pode fazer isso programmaticamente em um mql puro. Você precisa procurar por esta janela e a data através do WinAPI, eu acho.
Razão: