A tarefa de busca de pedidos - página 3

 
Игорь Герасько:

Ao implementar diferentes "grelhas", eu criei esta estrutura:

A estrutura é preenchida a cada novo tick, com base no valor do Número Mágico (armazena todas as informações necessárias para identificar o pedido: número do pedido, a que grade ele pertence, etc.).

Este é o código que eu inventei

class Info
  {
private:
   struct str
     {
      string            Sym;                                // Символ ордера
      string            Com;                                // Коммент ордера
      int               Tic;                                // Тиккет ордера
      int               Typ;                                // Тип ордера
      int               Mag;                                // Меджик номер ордера
      double            Lot;                                // Лот ордера
      double            Pri;                                // Цена открытия ордера
      double            SL_;                                // Стоп лосс ордера
      double            TP_;                                // Тейк профит ордера
      datetime          Tim;                                // Время открытия ордера
      double            Pro;                                // Профит ордера
     };
   int               m_tick_upper;                          // Тиккет максимального по цене ордера
   int               m_tick_upper_;                         // Тиккет предпоследнего максимального по цене ордера
   int               m_tick_lower;                          // Тиккет минимального по цене ордера
   int               m_tick_lower_;                         // Тиккет предпоследнего минимального по цене оредра

   int               m_tick_start;                          // Тиккет первого по времени ордера
   int               m_tick_start_;                         // Тиккет вторго по времени ордера
   int               m_tick_end;                            // Тиккет последнего по времени ордера
   int               m_tick_end_;                           // Тиккет предпоследнего по времени ордера

   int               m_magic;                               // Меджик номер
   string            m_symbol;                              // Символ ордера

   void              SearchTicketPriceType(const int type); // Поиск по цене
   void              SearchTicketTimeType(const int type);  // Поиск по времени

public:

   str               Price_Max;                             // Структура запроса максимальных ценн
   str               Price_Min;                             // Структура запроса минимальных  ценн
   str               Time_End;                              // Структура последних ордеров
   str               Time_Start;                            // Структура начальных ордеров

   str               Price_Max2;                            // Структура запроса максимальных ценн
   str               Price_Min2;                            // Структура запроса минимальных  ценн
   str               Time_End2;                             // Структура последних ордеров
   str               Time_Start2;                           // Структура начальных ордеров

   void              SetMagic (const int    mag) { m_magic  = mag; } // Принудительное указание меджик номера
   void              SetSymbol(const string sym) { m_symbol = sym; } // Принудительное указание символа

   void              SearchTimeOrder(const int type);       // Заполнение структуры по времени      
   void              SearchPriceOrder(const int type);      // Заполнение структуры по ценам 

                     Info(const string sym,const int mag);  // Параметрический конструктор
                     Info(){};
                    ~Info(){};
  };
 
Михаил:
...

"A propósito - se o Windows estiver desligado, a EA também não pode apagar ordens - apenas manual aqui, portanto, este exemplo não pode se aplicar totalmente à auto-comercialização".

POSSÍVEL, você provavelmente não sabe como. Se eu estiver interessado, posso postar o código.

Não, você não precisa do código. Algoritmo em resumo, se você puder... Eu realmente não sei como executar um EA em um terminal funcionando em um sistema operacional que caiu
 
Artyom Trishkin:
Não, você não precisa de um código. Algoritmo em poucas palavras, se você puder... Eu realmente não sei como executar um EA em um terminal funcionando em um sistema operacional que caiu

É mais fácil para mim explicar o código do que explicá-lo:

//+------------------------------------------------------------------+
//| Expert Remove orders function                                    |
//+------------------------------------------------------------------+
void RemoveOrders()
{
  int orders_total = OrdersTotal();
//---  
  if ( orders_total > 0 )
  {
    for ( int i = 0; i < orders_total; i++ )
    {
      ulong temp_order_ticket = OrderGetTicket( i );
      
      if ( OrderSelect( temp_order_ticket ) )
      {
        string temp_symbol = OrderGetString( ORDER_SYMBOL );
        
        if ( temp_symbol == _Symbol )
        {
          RemoveOldOrder( temp_symbol, temp_order_ticket );
        }
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Expert remove old order function                                 |
//+------------------------------------------------------------------+
void RemoveOldOrder( const string symbol, const ulong ord_ticket )
{
  MqlTradeRequest request = {0};
  MqlTradeResult  result  = {0};
  
  request.action = TRADE_ACTION_REMOVE;
  request.order  = ord_ticket;
  
   if ( OrderSend( request, result ) )
   {
     if ( result.retcode == TRADE_RETCODE_PLACED )
     { 
//        SetTransCount( true );
     }
  }
  else
  {
    Print( "Удаление старого ордера не выполнено! Билет = ", ord_ticket);
  }
}
 
Vladimir Pastushak:

Este é o código que eu inventei

Merda, cara, *** não diga besteiras. Você mesmo definiu a direção correta: o estado deve ser recuperado do ambiente atual, o que a MT lhe dá é a opção mais confiável. Em vez disso, você escreve uma informação de classe longa e inútil, na qual você tem que, de alguma forma, encher os valores encontrados por funções externas. Sim, eventualmente conterá as variáveis que você precisa: bilhete máximo e mínimo em termos de preço para o pedido, bem como outras coisas importantes para você. Mas na realidade o problema é resolvido por um recipiente especializado de pedidos: imagine que você tenha uma lista de pedidos, onde cada pedido representa uma linha de tabela com muitas colunas (id do pedido, tempo aberto, preço aberto, lucro, etc., etc.). Você faz a ordenação por uma das colunas e obtém exatamente a seqüência que precisa. Portanto, tudo isso pode ser feito com a ajuda das aulas, que você gosta de usar (embora sem a menor idéia, desculpe). Escreverei como fazer isso amanhã, se você estiver interessado.
 
Vasiliy Sokolov:
Merda, cara, *** não diga besteiras. Você mesmo definiu a direção correta: o estado deve ser recuperado do ambiente atual, o que a MT lhe dá é a opção mais confiável. Em vez disso, você escreve uma informação de classe longa e inútil, na qual você tem que, de alguma forma, encher os valores encontrados por funções externas. Sim, eventualmente conterá as variáveis que você precisa: bilhete máximo e mínimo em termos de preço para o pedido, bem como outras coisas importantes para você. Mas na realidade o problema é resolvido por um recipiente especializado de pedidos: imagine que você tenha uma lista de pedidos, onde cada pedido representa uma linha de tabela com muitas colunas (id do pedido, tempo aberto, preço aberto, lucro, etc., etc.). Você faz a ordenação por uma das colunas e obtém exatamente a seqüência que precisa. Portanto, tudo isso pode ser feito com a ajuda das aulas, que você gosta de usar (embora sem a menor idéia, desculpe). Como fazer - Escreverei amanhã, se você estiver interessado.

Muito ansioso para ver....

Preciso de informações não para fins informativos, mas para processamento e cálculo posterior ...

 
Михаил:

É mais fácil para mim afixar o código do que explicá-lo:

Como funcionará em um computador quebrado? (não é nenhuma surpresa com as funções).

É por isso que eu disse - não preciso de código. Eu preciso de um algoritmo que funcione em um computador que não funciona (o eixo está quebrado, se você se lembrar de uma citação: "Eu realmente não sei como executar o Expert Advisor no terminal, que está rodando no SO travado", e não preciso de VPS e outras coisas - pense, que o SO no computador, servidor, etc., onde o terminal com o Expert Advisor está rodando, está travado - seu código é uma cataplasma para ele lá e ... ).

 
Artyom Trishkin:

Como funcionará em um computador quebrado??? (não é nenhuma surpresa com as funções).

É por isso que eu disse - não preciso de código. Preciso de um algoritmo que funcione em um computador que não esteja funcionando (porque o sistema operacional está desligado, se você se lembra - e eu cito: "Eu realmente não sei como executar o Expert Advisor no terminal, que está rodando no SO travado", e não preciso de VPS e outras coisas - pense, que o SO no computador, servidor, etc., onde o terminal com o Expert Advisor está rodando, está travado - seu código é uma cataplasma para o terminal e ... Com nossas mãos, com nossas mãos ... ).

Aqui vamos nós, falsificador na floresta...

Vamos terminar nossa discussão aqui!

 
Михаил:

Aqui vamos nós, para o bem e para o mal...

Vamos terminar aqui a nossa discussão!

Não há problema. Estou farto e cansado de tentar provar meu ponto de vista...
 
Artyom Trishkin:
Não há problema. Estou farto de tentar fazer entender meu ponto de vista...

O resultado final é que mesmo que o sistema operacional no servidor esteja desligado, você pode executar um PC doméstico que restaurará o controle da conta no momento em que for necessário para reiniciar o servo.

Em minha prática de trabalhar com os servidores VDS / VPS, o sistema operacional nunca mudou, mas os reinícios são imprevistos e programados.

A essência da minha pergunta é escrever com competência um código que colete informações sobre a situação atual...

 
Vladimir Pastushak:

...

O objetivo da minha pergunta é escrever corretamente o código que coleta informações sobre a situação atual...

Você escreveu aqui que já escreveu em estilo processual. Portanto, tudo o que você tem que fazer é coletar tudo em uma classe. Você também pode remover alguns parâmetros da chamada de função, fazer métodos para predefinir parâmetros (magik, símbolo), mas é melhor não fazer.

É claro que se você não tem nada a fazer, pode seguir outro caminho. Classe. Possui método Refresh() para obter lista de pedidos (o único que pode retornar falsos). Os outros métodos utilizam esta lista.

Razão: