Organizando o ciclo do pedido - página 6

 
Alexey Viktorov:

verificar a alteração da lista de pedidos

Desta forma, a re-indexação não será contabilizada.

É claro que se eles foram adicionados, eles ou outros não serão percebidos. Mas e se eles fossem simplesmente apagados? Não conseguiremos deixar a lista de pedidos?

Portanto, não há nada com que se preocupar - receberemos um erro durante a OrderSelect.

 
fxsaber:

Desta forma, a re-indexação não será levada em conta.

Tudo bem - receberemos um erro no OrderSelect.

1. O que significa indexação/reindexação? Na minha opinião, e sinalizá-lo no ... mãos, porque vamos começar um novo ciclo. Ou você pode imaginar que a situação seja ainda mais complicada? Você pode imaginar que é possível abrir uma ordem e fechar outra ao mesmo tempo?

2. Eu concordo. Não estou bem desperto esta manhã... Não estou bem desperto...

 
Alexey Viktorov:

1. O que se entende por indexação/ indexação? Em minha opinião e bandeira em sua ... mãos, porque estamos iniciando um novo ciclo. Ou você pode imaginar que a situação seja ainda mais complicada? Você pode imaginar que é possível que uma ordem seja aberta e outra fechada ao mesmo tempo?

Sim, este poderia ser um dos cenários. Há mais uma variante

alguma ordem pendente é executada durante o ciclo

 
fxsaber:

E se durante qualquer ciclo de trabalho com encomendas, em cada turno, verificamos se as encomendasTotal() e OrdersHistoryTotal() foram alteradas?

E analisar esses valores de acordo com a situação?

 
fxsaber:

Sim, uma opção poderia ser esta. Há também

Algum tipo de pêndulo é realizado durante o ciclo


1. esta variante está à beira da ficção. Bem, no final, nada acontecerá se tudo voltar ao normal no próximo tick.

2. Pelo que entendi, as ordens pendentes devem ser movidas de acordo com o algoritmo e a parada será movida para ordens de mercado. Conseqüentemente, o tipo de ordem é verificado e executado independentemente do tempo de execução.

 
Alexey Kozitsyn:

E se durante qualquer ciclo de trabalho com encomendas, em cada turno, verificamos se as encomendasTotal() e OrdersHistoryTotal() foram alteradas?

E analisar os valores obtidos de acordo com a situação?

Aqui está uma sugestão semelhante


Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

Peculiaridades de mql4, dicas e truques

Alexey Viktorov, 2017.09.15 07:24

Em primeiro lugar, a situação é apresentada como não-standard e poucas pessoas já resolveram esta situação, se é que há alguma.

Pura e teoricamente:

Para a OrderModify não é necessário organizar o loop inverso, portanto, deixe-o ser direto.

int i, total = OrdersTotal();
for(i = 0; i < total; i++)

E então devemos verificar se há mudanças na lista de pedidos

if(total != OrdersTotal())
 {
  i = 0;
  total = OrdersTotal();
  continue;
 }

Se a quantidade de pedidos mudou, vamos começar este ciclo novamente com uma nova quantidade de pedidos.

Há também uma pergunta:

É claro que se as ordens forem adicionadas, elas ou outras serão ignoradas. Mas e se eles fossem simplesmente apagados? Não iremos além da lista de pedidos?


somente sem verificação de pedidosHistóriaTotal()
 
Alexey Viktorov:

Aqui foi uma sugestão semelhante



somente sem verificação de pedidosHistóriaTotal()
Sim, eu o li, apenas fiz questão de verificar também os pedidos de histórico, para o caso em que ocorreu abertura+fechamento simultâneo.
 
Alexey Kozitsyn:

E se durante qualquer ciclo de trabalho com encomendas, em cada turno, verificamos se as encomendasTotal() e OrderHistoryTotal() foram alteradas?

E analisar esses valores de acordo com a situação?

Pode não existir durante a re-indexação.
 
Alexey Viktorov:

1. esta opção está à beira de ser uma fantasia. Bem, no final, nada acontecerá se tudo se encaixar no próximo tique.

O próximo tique se tornou uma lacuna. Por que adiar para amanhã o que pode ser feito hoje?

2. Pelo que entendi, de acordo com o algoritmo, as ordens pendentes devem ser movidas e a parada deve ser movida para ordens de mercado. Portanto, o tipo de ordem é verificado e executado independentemente do momento de sua execução.

Bem, o tipo de pedido não pode ajudar de forma alguma.

 
fxsaber:
Pode não estar lá quando se reindexar.

Então talvez devêssemos tentar selecionar as ordens o mais rápido possível (basta selecioná-las!) e escrevê-las em uma matriz, e então, em uma função separada, verificar a disponibilidade dessas ordens + a ação necessária (fechar/eliminar/modificar)?

Embora eu não ache que este ramo seja o melhor lugar para discuti-lo. Este ramo é para características.