Perguntas de um "boneco" - página 197

 
FiftyStars:

Como posso determinar quando abrirá o próximo bar, ou seja, aquele que ainda não se formou?

Em geral, não se pode; embora no caso de prazos de meia hora ou mais, a probabilidade de uma previsão correcta exceda 99,9%
 

É possível fazer um loop a um pedido como este para abrir um pedido? )

      while(result.retcode!=TRADE_RETCODE_DONE)
      {
        if(OrderCheck(request,check))
        {
          OrderSend(request,result);
        }
        if((MQL5InfoInteger(MQL5_TESTING)||MQL5InfoInteger(MQL5_OPTIMIZATION)))break;
      }
 
G001: É possível fazer um loop a um pedido como este para abrir um pedido? )
Não desejável. Imagine, por exemplo, que em vez de TRADE_RETCODE_DONE o servidor devolve a resposta de que a encomenda foi colocada. Então o seu código iria sobrecarregar o servidor com o mesmo tipo de pedidos.
 
Yedelkin:
Não desejável. Imagine, por exemplo, que em vez de TRADE_RETCODE_DONE o servidor devolve uma resposta de que foi feita uma encomenda. Então o seu código iria sobrecarregar o servidor com o mesmo tipo de pedidos.

Seria melhor assim?

      int ResBear = -1;
      while(ResBear == -1)
      {
        if(OrderCheck(request,check))
        {
          ResBear = OrderSend(request,result);
        }
        if((MQL5InfoInteger(MQL5_TESTING)||MQL5InfoInteger(MQL5_OPTIMIZATION)))break;
      }
 
G001: Será melhor desta forma?

Improvável. Veja a descrição da função OrderSend(). Deve dizer-lhe que, se for executado com sucesso, ainda precisa de verificar o código de retorno. Portanto, teremos de seguir o caminho mais aborrecido: pegar numa lista de códigos de retorno e pensar no comportamento do programa para cada um destes códigos. Isto é, "enviámos OrderSend(), recebemos o código de retorno, reagimos ao código retcode que recebemos".

O segundo ponto. É melhor usar o modelo do evento. Isto é, não faça loop na execução da função após a chegada de um tick, e após várias tentativas mal sucedidas, saia da função e espere por um novo tick.

 
Obrigado, realmente enfadonho, vou colocar um limite melhor nas tentativas.
 
G001: Obrigado, realmente enfadonho, vou colocar um limite melhor nas tentativas.

Terá de o fazer um dia de qualquer forma :) Falando a partir da minha própria experiência.

 
Tenho a certeza, mas até agora faltam os conhecimentos.
 

Desculpe, como é que faço uma condição para que no testador não haja nenhuma condição, mas no testador em modo visual há uma condição?

A lista de propriedades não permite isto, e por alguma razão esta condição não funciona para mim:

if(MQL5InfoInteger(MQL5_TESTER)!=1 || MQL5InfoInteger(MQL5_TESTER)==1 && MQL5InfoInteger(MQL5_VISUAL_MODE)==1)

 
if(MQL5InfoInteger(MQL5_TESTER)!=1 || MQL5InfoInteger(MQL5_TESTER)==1 && MQL5InfoInteger(MQL5_VISUAL_MODE)==1)

desta condição resulta que irá actuar em três situações:

1)Quando o provador está a trabalhar

2)Quando o provador NÃO está a funcionar

3)Quando o testador visual funciona

por isso a função funcionará sempre, muito provavelmente deverá remover a segunda condição e ligar a primeira e a terceira com &&