A tarefa de busca de pedidos

 

Basicamente, a essência é a seguinte, estou procurando opções de código para procurar por pedidos.

A tarefa é a seguinte:

1 :

Obter informações sobre o pedido máximo por preço e por tipo de pedido ( Compra/Venda ) topmost

Para obter informações sobre o pedido mínimo por preço e por tipo de pedido ( compra/venda ) mais baixo

Obtenha informações sobre o último pedido por tempo e por tipo de pedido ( Compra/Venda )

Obter informações sobre o primeiro pedido por tempo e por tipo de pedido ( Compra/Venda )

2 :

Obter informações sobre o último mas um preço máximo e tipo de pedido ( Compra/Venda )

Obter informações sobre o último mas um pedido mínimo (Compra/Venda) por preço e por tipo de pedido ( Compra/Venda )

Obter informações sobre o último mas um pedido por tempo e por tipo de pedido (Compra/Venda)

Obter informações sobre a segunda encomenda em tempo e tipo de pedido (Compra/Venda)

Estas informações incluem todas as informações sobre o pedido (símbolo, lote, preço ......)

O estilo de programação processual o resolveu há muito tempo, agora quero simplificá-lo e fazer uma aula, mas não consigo pensar em nada útil...

 
Vladimir Pastushak:

De qualquer forma, a questão é a seguinte: estou procurando opções de código para procurar por pedidos.


Você quer monitorar as ordens ativas?

MQL4 ou MQL5?

 
Михаил:
Você quer monitorar as ordens ativas?
Não todos, mas o máximo/mínimo por preço e o primeiro e o último por vez, dois de cada vez, ou seja, o último e o penúltimo...
 
Vladimir Pastushak:

Basicamente, a essência é a seguinte, estou procurando opções de código para procurar por pedidos.

A tarefa é a seguinte:

1 :

Obter informações sobre o pedido máximo por preço e por tipo de pedido ( Compra/Venda ) topmost

Para obter informações sobre o pedido mínimo por preço e por tipo de pedido ( compra/venda ) mais baixo

Obtenha informações sobre o último pedido por tempo e por tipo de pedido ( Compra/Venda )

Obter informações sobre o primeiro pedido por tempo e por tipo de pedido ( Compra/Venda )

2 :

Obter informações sobre o último mas um preço máximo e tipo de pedido ( Compra/Venda )

Obter informações sobre o último mas um pedido mínimo (Compra/Venda) por preço e por tipo de pedido ( Compra/Venda )

Obter informações sobre o último mas um pedido por tempo e por tipo de pedido (Compra/Venda)

Obter informações sobre a segunda encomenda em tempo e tipo de pedido (Compra/Venda)

Estas informações incluem todas as informações sobre o pedido (símbolo, lote, preço ......)

O estilo de programação processual o resolveu há muito tempo, agora quero simplificá-lo e fazer uma aula, mas não consigo pensar em nada útil...

Sim Vladimir - é uma tarefa GRANDE! :-)

Você pode me dizer para onde ir?

 
Vladimir Pastushak:
Apenas não todos, mas máximo/mínimo por preço e primeiro e último por tempo, 2 de cada, ou seja, último e penúltimo...

Não é difícil, porque você está estabelecendo ordens.

Então, você se lembrará das duas últimas COMPRAS e das duas últimas VENDAS

E você não terá que procurar por nada.

struct MEM_ORDER
{
  ulong ticket;
  long ord_type;
  double price;
};
struct MEM_ORDERS
{
  bool      is_first_buy;
  bool      is_first_sell;
  MEM_ORDER buy_oders[2];
  MEM_ORDER sell_oders[2];
};
 
Михаил:

Não é difícil, porque você está estabelecendo ordens.

Então, você se lembrará das duas últimas COMPRAS e das duas últimas VENDAS

E você não terá que procurar por nada.

Pensei em tal solução, mas não fiquei satisfeito com o fato de que quando o EA/terminal for recarregado, ele será reinicializado e todos os dados do trabalho passado serão perdidos.

Penso que a maneira mais confiável de trabalhar é coletar dados sobre o ambiente quando a EA está trabalhando.

 
Vladimir Pastushak:

Pensei em tal solução, mas não fiquei satisfeito com o fato de que quando o EA/terminal é recarregado, ele é reposto e todos os dados do trabalho anterior serão perdidos.

Acredito que o método confiável de operação é coletar dados sobre o ambiente no momento da operação da EA.

E o que o impede de salvar dados em um arquivo quando você sai do EA, e quando você o carrega, carrega-o a partir de um arquivo?

//| Expert Load setings function                                     |
//+------------------------------------------------------------------+
void LoadSettings()
{
  string file_name = _Symbol + ".dat";
  int file_handle;
//---  
  if ( FileIsExist( file_name, 0 ) )
  {
    file_handle = FileOpen( file_name, FILE_READ|FILE_BIN );
    
    if ( file_handle != INVALID_HANDLE )
    {
      e_high = FileReadLong( file_handle );
      a_profit = FileReadLong( file_handle );
      e_low = FileReadLong( file_handle );
      ord_delta_high = FileReadLong( file_handle );
      ord_delta_low = FileReadLong( file_handle );
      order_delta = FileReadLong( file_handle );
      exit_delta = FileReadLong( file_handle );
      FileClose( file_handle );
    }
  } 
}

//+------------------------------------------------------------------+
//| Expert Save settings function                                    |
//+------------------------------------------------------------------+
void SaveSettings()
{
  string file_name = _Symbol + ".dat";
  int file_handle;
  bool file_found = true;
//---  
  if ( FileIsExist( file_name, 0 ) )
  {
    if ( FileDelete( file_name, 0 ) ) file_found = false;
  }
  else
  {
    file_found = false;
  }
//---
  if ( ! file_found )
  {
    file_handle = FileOpen( file_name, FILE_WRITE|FILE_BIN );
    
    if ( file_handle != INVALID_HANDLE )
    {
      FileWriteLong( file_handle, e_high );
      FileWriteLong( file_handle, a_profit );
      FileWriteLong( file_handle, e_low );
      FileWriteLong( file_handle, ord_delta_high );
      FileWriteLong( file_handle, ord_delta_low );
      FileWriteLong( file_handle, order_delta );
      FileWriteLong( file_handle, exit_delta );
      FileClose( file_handle );
    }
  } 
}
 
Михаил:

O que o impede de salvar os dados em um arquivo quando você deixa a EA e carrega-los de um arquivo quando você os carrega?

Isto é bom, é claro, mas não confiável, porque o ambiente pode mudar durante a reinicialização.
 
Vladimir Pastushak:
É claro que isto é bom, mas não confiável, pois o ambiente pode mudar durante a reinicialização.

Feche todos os pedidos antes de sair.

Você ainda precisa fazer isso.

 
Михаил:

Feche todos os pedidos antes de sair.

É uma coisa tediosa de se fazer de qualquer maneira.

Reinícios imprevistos levarão a problemas...

Eu escrevi uma aula...

 
Vladimir Pastushak:

Reinícios imprevistos levarão a problemas.

Eu escrevi uma aula...

Não faça as pessoas rir....

Se algo imprevisto acontecer, nenhuma aula irá salvá-lo!

Se o enrolamento ou o terminal "cair", então a EA reinicializará,

Eu apenas "olho" para as ordens ativas e as fecho, porque não há controle sobre elas.

Razão: