[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 1050

 

Como escrever a condição se(ordershistorytotal()"reabastecido por uma ordem")?

 
Stasjan:

Como escrever a condição se(ordershistorytotal()"reabastecido por um pedido")?

Para isso, o valor anterior do OrderHistoryTotal() deve ser armazenado em uma variável estática, e os valores anteriores e atuais devem ser comparados na condição. Se mudou, então se reabasteceu, já que os valores não mudam em uma direção menor lá.
 
Reshetov:
Para isso, o valor anterior do OrderHistoryTotal() deve ser armazenado em uma variável estática, e os valores anteriores e atuais devem ser comparados na condição. Se mudou, então se reabasteceu, já que os valores não mudam lá para baixo.

obrigado!!!
 
prom18:
Por favor, ajude. O Expert Advisor coloca dois pingentes BuyStop e SellStop junto ao sinal. Há também um sinal para abrir uma ordem de compra pendente. Tenho que modificar uma ordem de compra antiga pelas condições do último sinal. Eu o fiz através da função OrderModify(). Não funcionou. Isso nos dá um erro 4051. Como selecionar a ordem desejada. Entendo que devemos escolher o bilhete, mas como determinar o bilhete da ordem exigida (neste caso, estamos lidando com o BuyStop). Explique pelo menos a lógica de ação. Obrigado!

int ticket = -1;

...

OrderSelect(...);

if (OrderType() == OP_BuyStop) {

bilhete = OrderTicket();

OrderModify(...);

retorno(0);

}

 
Reshetov:
Para isso, o valor anterior do OrderHistoryTotal() deve ser armazenado em uma variável estática, e os valores anteriores e atuais devem ser comparados na condição. Se mudou, então se reabasteceu, já que os valores não mudam lá para baixo.

Algum conselho sobre como fazer o mesmo?
 
Roman.:

1 certamente não é muito. Muito depende da velocidade do corretor para executar suas ordens, depende da velocidade (da internet) que você dá suas ordens ao corretor, provavelmente também "algo" na conta real que nós (I) não estamos cientes. Slava escreveu, como o corretor cortou seu pipsaur (por meio da chamada "abordagem individual" para um cliente) aumentando um mínimo de 2,3 pontos para 18 - 20 pontos, veja uma filial aqui https://forum.mql4.com/ru/37451/page10...
Coloco 2 pontos em "tampão" - todas as negociações estão abertas agora ) Mais uma vez, obrigado.
 
Stasjan:

Alguma dica sobre como reinicializá-lo?

estático preventivototal = 0;

...

se (OrderHistoryTotal() != prevhistorytotal) {

// reabastecido por um pedido

}

prevhistorytotal = OrderHistoryTotal();

 
Reshetov:
Para este fim, o valor anterior do OrderHistoryTotal() deve ser armazenado em uma variável estática, e os valores anteriores e atuais devem ser comparados na condição. Se mudou, então se reabasteceu, já que os valores lá não são mudados para baixo.


estática int totalh=OrdensHistóriaTotal();

if(OrderHistoryTotal()>totalh)

eu entendi corretamente ou não?

 
Reshetov:

estático preventivototal = 0;

...

se (OrderHistoryTotal() != prevhistorytotal) {

// reabastecido por um pedido

}

prevhistorytotal = OrderHistoryTotal();


Entendeu?

 
Stasjan:


estática int totalh=OrdensHistóriaTotal();

Incorreto.

estática int totalh=0; // variáveis estáticas são declaradas antes das chamadas iniciarem(), init() e deinit()

...

int start() {

...

se (OrderHistoryTotal() != totalh) {

// reabastecido por um pedido

}

totalh = OrderHistoryTotal();

...

}

Razão: