[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 102

 

Uma função não se encaixava:

bool wC_Redraw()
   {
   if(wC_iStop != -1)
      {
      ObjectDelete(wC_sName);
      return(true);
      }
   if(wC_bFirst)
      if( ! ObjectSetText(wC_sName, "1"))
         return(false);
   int iTimeframe = tlC_GetTimeframe();
   double dLockPrice = tlC_GetPriceLock();
   datetime datMoveTime[2];
   datMoveTime[0] = iTime(NULL, iTimeframe, wC_iMoveBar[0]);
   if(datMoveTime[0] == 0)
      return(false);
   if( ! ObjectMove(wC_sName, 0, datMoveTime[0], wC_dMovePrice[0]) )
      return(false);
   
   if(dLockPrice == MYEMPTY)
      {
      datMoveTime[1] = iTime(NULL, iTimeframe, wC_iMoveBar[1]);
      if(datMoveTime[1] == 0)
         return(false);
      if( ! ObjectMove(wC_sName, 1, datMoveTime[1], wC_dMovePrice[1]) )
         return(false);
         
      if(wC_bScarp)
         {
         if( ! ObjectSet(wC_sName, OBJPROP_RAY, false) )
            return(false);
         if( ! ObjectSet(wC_sName, OBJPROP_STYLE, SCARP_LINE_STILE) )
            return(false);
         if( ! ObjectSetText(wC_sName, "0"))
            return(false);
         //ObjectSet(wC_sName, OBJPROP_COLOR, SCARP_LINE_COLOR);    
         return(true);
         }
      else
         ObjectSet(wC_sName, OBJPROP_RAY, true);
      }
   else
      if( ! ObjectMove(wC_sName, 1, datMoveTime[0], dLockPrice) )
         return(false);
      
   if( ! tlC_Save())
      return(false);
   
   return(true);
   }
 
alsu:

Não, no momento t3. A questão é que t3 é o primeiro tique da barra, e isso significa que, como os cálculos ainda não foram feitos, o valor de IndicatorCounted() ainda não teve tempo de mudar - isso só acontece após o início da função() terminar seu trabalho. Isto é bastante lógico - a função dá o número de barras calculadas, portanto não faz sentido alterar seu valor até que pelo menos uma marca da barra dada tenha sido calculada. Portanto, no momento t3, ainda vemos o valor 299, mas no próximo tick será 300.

Isso é mais claro?

Sim, isso faz mais sentido, obrigado.
 
quando um assessor trabalha, os comentários são exibidos na tela no canto superior esquerdo. como eles podem ser movidos 100-200 pips para a direita... porque é impossível ler qualquer coisa naquele canto geralmente por causa de sobreposições de caracteres... ((((
 
w_ersoc:
quando o EA está funcionando, os comentários são exibidos no canto superior esquerdo. como eles podem ser movidos 100-200 pips para a direita... como nesse canto é impossível ler qualquer coisa normalmente devido à sobreposição de caracteres... ((((

espaços no início do texto de comentário é o mais fácil

ou assim:

   ObjectCreate("label_object1", OBJ_LABEL, 0, 0, 0);  
   ObjectSet("label_object1", OBJPROP_XDISTANCE, 720);  
   ObjectSet("label_object1", OBJPROP_YDISTANCE, 45);
   ObjectSetText("label_object1", StringConcatenate("Процент отрицательных %:     ", PercentMinus), 8, "Lucida Console", NavajoWhite);
   



 
moskitman:

espaços no início do texto de comentário é o mais fácil

ou assim...

Obrigado!)
 
Eu gostaria de explicar um pouco sobre o que coloquei acima. Por exemplo, temos a tarefa de fazer um modelo de carro em MKL4. Sabemos que o carro tem algumas propriedades: pressão do óleo, velocidade do virabrequim, temperatura do líquido refrigerante, etc. Mas se abstrairmos um pouco, podemos entender o que queremos do carro: ir para frente, para trás, para a esquerda, para a direita. É por isso que todas as propriedades são declaradas como variáveis em nosso pacote e as deixam intocadas. Para interação com o ambiente externo, deixamos as funções: para frente(), para trás(), para a esquerda(), para a direita(). Basicamente, ele cheira a encapsulamento. Isto ajudará muito ao complicar o projeto.
 
Rapazes, como escrevo a expressão corretamente? Preciso comparar dois preços.
Close[2]>=Open[1]

mas a Open[1] precisa escrever que o preço é mais baixo em 1 ppt.

Eu tenho 5 casas decimais, então escrevi

Close[2] >= (Open[1]-10*Point)

mas acontece que este termo é errado porque não funciona.

qual é a maneira correta de escrevê-lo?

 
kilnart:

mas acontece que este prazo é errado porque não funciona.

O que exatamente não está funcionando?
 
kilnart: como se soletra bem?

tente assim:

if(Digits==5){
   if(Close[2]-Open[1]>=10*Point);// цена больше на 10 пп в 5-ти знаке
}
if(Digits==4){
   if(Close[2]-Open[1]>=Point);// цена больше на 1 пп в 4-х знаке
}

//или так ...

switch(Digits){
   case 5: if(Close[2]-Open[1]>=10*Point);// цена больше на 10 пп в 5-ти знаке
   case 4: if(Close[2]-Open[1]>=Point);// цена больше на 1 пп в 4-х знаке
}
 
sergeev:
O que exatamente não está funcionando?


a posição não se abre.