Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 795

 
Alexey Viktorov:
Tem a certeza de que o indicador é recalculado durante o laço?
Sim, coloquei o comentário no ecrã. Ou isso ainda não prova que o recálculo teve lugar?
 
007yurik:
Sim, coloque o comentário no ecrã. Ou ainda não prova que o recálculo está feito?

Precisamos de olhar para valores[] em modo de depuração

Em Comentário pode mudar fora do laço. Não encontrei e verifiquei esta situação, mas algo me diz que ela não será recalculada e os valores permanecerão inalterados. E consequentemente, nunca sairá do circuito.

 
Alexey Viktorov:

No modo de depuração, ver valores de Valor[].

Em Comentário pode mudar fora do laço. Não encontrei e verifiquei esta situação, mas algo me diz que ela não será recalculada e os valores permanecerão inalterados. Portanto, nunca sairá do circuito.

Isto é algo absurdo. Na depuração, os valores estão correctos mas o laço é sempre executado uma vez, independentemente do cumprimento da condição. Acho que vou desistir Enquanto.
 
007yurik:
Isto não faz sentido. Na depuração, os valores de Valor[] estão correctos, mas o laço corre sempre uma vez, independentemente de a condição ser cumprida. Penso que vou abandonar Enquanto.

E como se determina que osvalores na matriz deValores[] estão correctos? Como é que se preenche?

 
Vladimir Karputov:

E como se determina que osvalores na matriz deValores[] estão correctos? Como é que se preenche?

Com um cabo indicador, se o entendi correctamente).
 
007yurik:
Vou usar o manípulo indicador, se bem o entendi, para lhe lembrar que o meu nível de proficiência no assunto é igual ao de um boneco)

Penso que o deve fazer pela ordem inversa: primeiro preenche-se a matriz de valores, e depois compara-se o que está nela.

 
007yurik:
Que confusão. Na depuração, o Valor está correcto, mas o laço corre sempre uma vez, independentemente de a condição ser cumprida. Provavelmente abandonarei Enquanto.

Tudo é exactamente como está escrito no programa

 bool pravda=false;

   if(pravda || Ind[0]<=-0.7)
   pravda=true;
   
   {   
      
      while(Value[2]<Value[1])
         {
         if(CopyBuffer(InpInd2_Handle,1,SignalBar,3,Value)<=0) {Recount=true; return;}                 
          }
          
         if(BuyPosOpen) BUY_Open=true;     
                                                  
         if(SellPosClose) SELL_Close=true;
         UpSignalTime=datetime(SeriesInfoInteger(Symbol(),InpInd_Timeframe,SERIES_LASTBAR_DATE))+TimeShiftSec;
         }

Se o CopyBuffer for executado com um erro, definir Recount para true e sair do laço.

Então não foi o ... laço.

 

Explique a um idiota, por favor.
A tarefa é traçar uma linha zero na sub-janela. Uma linha branca simples e sólida.

O que eu não faço, acaba por se revelar listrado. Eu estabeleço os níveis, e a linha indicadora, e já introduzi um objecto gráfico - e continua a sair riscado.
A razão é clara - a linha da grelha listrada é exibida de cima. Mas eis o estranho: apenas a linha horizontal da grelha zero está no topo, enquanto as linhas verticais da grelha estão abaixo das linhas indicadoras.

Aqui, como se desenha uma simples linha zero branca sólida na sub-janela?

 
E "se não responder, nós escrevemos ao Sportlotto"!
 
User_mt5:

Explique a um idiota, por favor.
A tarefa é traçar uma linha zero na sub-janela. Uma linha branca simples e sólida.

O que eu não faço, acaba por se revelar listrado. Eu estabeleço os níveis, e a linha indicadora, e já introduzi um objecto gráfico - e continua a sair riscado.
A razão é clara - a linha da grelha listrada é exibida de cima. Mas eis o estranho: apenas a linha horizontal da grelha zero está no topo, enquanto as linhas verticais da grelha estão abaixo das linhas indicadoras.

Aqui, como se desenha uma simples linha zero branca sólida na sub-janela?

Posso ter uma imagem de ecrã da forma como está agora?
Razão: