Mercado de ações. Estoques. Rapidez na execução de ordens comerciais. - página 3

 

Verifiquei a execução e o preenchimento de pedidos na seção de estoque do MT-5 e descobri que não é possível usar

ordem de mercado e preencher a COI.

Que tipo de preenchimento devo escolher para que a ordem limite seja acionada como uma ordem de mercado?

 
prostotrader #:

Verifiquei a execução e o preenchimento de pedidos na seção de estoque do MT-5 e descobri que não é possível usar

ordem de mercado e preencher a COI.

Que tipo de preenchimento devo escolher para que uma ordem limite seja acionada como uma ordem de mercado?

O RETURNO deve funcionar. O preço deve ser próximo ao bar para ter certeza de que será executado e não será pendurado. Isto se revelará praticamente uma ordem de mercado.

 
JRandomTrader #:

O RETURN deve funcionar de qualquer maneira. E para ter certeza de que ele irá funcionar e não ficar por perto, o preço deve estar perto do bar. Na prática, o mercado vai funcionar.

Eu o faço em minha aplicação para Quick (trans2quik.dll não preenche FOK), mas às vezes há um problema, quando os preços das ações se movem abruptamente,

ele ainda permanece de pé no copo.

Agora estou movendo minha aplicação para o MT-5, ligando os 2 terminais com um canal nomeado.

Ainda há alguma complexidade no MT-5, pois o Expert Advisor para o mercado de ações é um Pipe Server.

A OnTrade e a OnTradeTransaction não são possíveis.

Por um lado, um preenchimento RETURN é muito mais provável de ser executado, mas mesmo assim, a ordem pode não ser imediata

Por outro lado, se executarmos um FOK,

Por outro lado, se executarmos uma FOK, podemos chegar a uma situação em que sempre ficamos sem volume para executar.

Qual seria o melhor curso de ação?

 
prostotrader #:

Faço isso na aplicação Quick (sem preenchimento FOK na trans2quik.dll), mas às vezes há um problema, quando os preços das ações se movem acentuadamente,

ele ainda permanece de pé no copo.

Agora estou movendo minha aplicação para o MT-5, ligando os 2 terminais com um canal nomeado.

Ainda há alguma complexidade no MT-5, pois o Expert Advisor para o mercado de ações é um Pipe Server.

A OnTrade e a OnTradeTransaction não são possíveis.

Por um lado, um preenchimento RETURN é muito mais provável de ser executado, mas mesmo assim, a ordem pode não ser imediata

Por outro lado, se executarmos um FOK,

Por outro lado, se executarmos uma FOK, podemos chegar a uma situação em que sempre ficamos sem volume para executar.

Qual seria o melhor curso de ação?

Referimo-nos à situação em que a ordem não tem liquidez suficiente até a barra?

Podemos tentar observá-lo mesmo usando o temporizador e removê-lo se for ORDER_STATE_PARTIAL e o preço estiver na barra.

Ou talvez assistir SYMBOL_SESSION_*_ORDERS_VOLUME

 
prostotrader #:

Atualmente movendo minha aplicação para o MT-5, ligando 2 terminais com um canal nomeado.

Olá!

Você pode me dizer por favor (se não for segredo) por que você não considera a possibilidade de negociar com outro corretor? Onde há uma única conta de corretagem.

Para sua negociaçãoAction-Futures, sobre a qual você escreveu em outros posts, acaba sendo muito mais conveniente, certo? + resolveria muitos dos problemas associados à ligação dos dois terminais.

Minhas únicas opções são o atraso na execução e a comissão.

 
Andrey Miguzov #:

Olá!

Você pode me dizer (se não for um segredo) por que você não está considerando negociar com outro corretor? Onde há uma única conta de corretagem.

Para o seu negócioCompartilhar-Futuros, sobre o qual você escreveu em outros posts, isso se torna muito mais conveniente, certo? + resolveria muitos dos problemas associados à ligação dos dois terminais.

Só tenho tempo de atraso na execução e comissão das opções...

Escrevi que Quick trabalha muito lentamente e MT-5 apenas em Otkritie e BCS, eu não considero Finam de forma alguma.

No fundo não há necessidade de uma reserva de fundos, e para os futuros, ao escalpelizar, não há tanto dinheiro extra para manter.

O objetivo é fazer escalada em arbitragens clássicas com risco zero.

 
JRandomTrader #:

Estamos falando de uma situação em que a ordem não tem liquidez até a barra?

Você pode tentar observá-lo mesmo por timer, e se for ORDER_STATE_PARTIAL e o preço estiver na barra, então atire nele.

Ou talvez assistir SYMBOL_SESSION_*_ORDERS_VOLUME.

Você não pode usar outras funções no servidor Pipe porque a única implementação em

MT-5 (single thread) é pendurar o servidor EA em modo de espera de comando, receber um comando de liser, executá-lo,

e enviar resultado.

//+------------------------------------------------------------------+
//| Expert Listen Pipe channel function                              |
//+------------------------------------------------------------------+
void ListenPipe()
{
  bool result; 
  bool can_close = false;
  while((IsStopped() == false) && (lsn_exit == false))
  {
    result = Pipe.ReadData();
    if(result == true)
    {
      switch(Pipe.in_data.pipe_com)
      {
        case P_LSNR_EXIT:
          Pipe.out_data.pipe_com = P_DONE;
          can_close = true;
          result = false;
        break;
        case P_SET_MAGIC:
          Pipe.out_data.pipe_com = P_DONE;
          result = false;
        break;
        case P_SELL_SPOT:
          spot_ticket = SpotSetOrder(Pipe.in_data.spot_trade_lot, Pipe.in_data.spot_trade_price, spot_magic, SELL);
          if(spot_ticket > 0)
          {
            Pipe.out_data.pipe_com = CheckDeal(spot_ticket);
          }  
          else Pipe.out_data.pipe_com = P_REJECT;
          result = false;
        break;
        case P_BUY_SPOT:
          spot_ticket = SpotSetOrder(Pipe.in_data.spot_trade_lot, Pipe.in_data.spot_trade_price, spot_magic, BUY);
          if(spot_ticket > 0)
          {
            Pipe.out_data.pipe_com = CheckDeal(spot_ticket);   
          }  
          else Pipe.out_data.pipe_com = P_REJECT;
          result = false;
        break;
        case P_CHECK_DEAL:
          if(spot_ticket > 0)
          {
            Pipe.out_data.pipe_com = CheckDeal(spot_ticket);
          }
          else Pipe.out_data.pipe_com = P_ORDER_N_FOUND; 
          result = false;
        break;
        case P_GET_DATA:
          GetData();
          Pipe.out_data.pipe_com = P_DONE;
          result = false;
        break;
        case P_ORDER_REMOVE:
          if(SpotRomoveOrder(spot_ticket) == true)
          {
            Pipe.out_data.pipe_com = P_ORDER_REMOVE_DONE;
          }
          result = false;
        break;
      }
      if(result == false)
      {
        result = Pipe.WriteData(Pipe.out_data);
        if(result == true)
        {
          if(can_close == true) lsn_exit = true;
        }
      }
    }
    else Print("Error resived data!"); 
  }
  Print("Listener exit.");
}

resultado = Pipe.ReadData(); pendura servidor-conversor, espera por comando do cliente.

Todo o gerenciamento do servidor vem do Expert Advisor-cliente

Neste modo, a comunicação entre os terminais é incrivelmente rápida e o

com um conjunto de dados prontos em ambas as direções é transmitida de uma só vez.

 
prostotrader #:

Neste modo, a comunicação entre os terminais é incrivelmente rápida, e o

com um conjunto de dados prontos em ambas as direções é transmitida de uma só vez.

O tubo é uma superestrutura em cima da memória compartilhada, portanto (dentro do mesmo PC) a troca pode ser considerada como tendo zero de atraso.

 
Dmitriy Skub #:

A tubulação é um complemento da memória compartilhada e, portanto (dentro do mesmo PC) a troca pode ser considerada como tendo zero de atraso.

O que eu quis dizer é que não há necessidade de se comunicar através de sua aplicação.

 
prostotrader #:

Escrevi que Quick é muito lento e MT-5 está apenas na Otkritie e BCS, não considero de modo algum Finam.

Foi o que eu escrevi sobre a Finam. Vou abrir uma conta lá só por causa do EBS.

É uma pena que os corretores não possam ser discutidos no fórum. Eu ficaria muito grato se você pudesse escrever em sua mensagem pessoal porque não ir lá.

Em qualquer caso, obrigado pela informação!