Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 364

 
bercut0077:
Bom dia, há um indicador, mas no testador após um certo período do início do ano até março funciona e depois deixa de dar sinais, e eu preciso testar um longo período (AuthorizedSSBODynamicBreakoutBoxFinalEdition), onde no código pode estar essa limitação - por favor, pelo menos dê uma pista de onde cavar, quais operadores a determinam?
Por vezes, há falhas. Ele simplesmente pára de desenhar a caixa. Não há restrições em nenhum lugar. Teste o potikovo. Às vezes ajuda.
 
Sepulca:
Você tem o código fonte do indicador? Caso contrário, procure o autor))))

Eu tenho o código fonte - é uma bagunça.
 
Não, então eu nem vou tentar. Às vezes você se perde em seu próprio código, muito menos no de outra pessoa))))
 

Como me dizer, por favor, algum Expert Advisor comprovado em MQL4 e 5, e o tempo é muito curto, às vezes você precisa verificar uma idéia ou ajudar alguém a finalmente criar uma base para o robô e terminar de escrevê-la você mesmo ...

Eu ficaria grato, obrigado de antemão!!! =)

 
vadynik:

Estou escrevendo uma função como esta

Mas por que a OrderOpenPrice() retorna o preço arredondado para quatro dígitos nos cinco dígitos?


int i, k=OrdersTotal();

  for (i=k-1; i>=0; i--) 
   {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
     {                
       if ((OrderType()==OP_BUY)&&(OrderOpenPrice()>=Ask-350*Point)&&(OrderMagicNumber()==Magic)||(OrderType()==OP_BUY)&&(OrderOpenPrice()<=Ask+250*Point)&&(OrderMagicNumber()==Magic))
         {
           double o=OrderOpenPrice();
           Print(o);
           OrderClose(OrderTicket(),OrderLots(),Bid,50,Blue); 
         
      }
    }
  }
Tente fazer isso e veja o que a OrderOpenPrice() realmente retorna, talvez a razão seja que você normaliza a função com o parâmetro Dígitos e você vê na impressora não o que ela realmente é.
 
vadynik:

Estou escrevendo uma função como esta

Mas por que o OrderOpenPrice() retorna o preço arredondado para quatro casas decimais?

A impressão não retorna um preço arredondado, neste caso, ela simplesmente produz o número padrão de casas decimais.
Na verdade, o Forex não funciona com casas decimais inferiores a dígitos. Em geral, o exemplo do EURSD mostra apenas quatro casas decimais.

Mas no seu caso é melhor fazê-lo: Print(DoubleToStr(OrderOpenPrice(),Digits));

 
Ekburg:

Tente fazer isso e veja o que a OrderOpenPrice() realmente retorna, talvez a razão seja que você normaliza a função com o parâmetro Dígitos e você vê na impressora não o que ela realmente é.

É o mesmo sem normalização, eu preciso subtrair pontos do preço de abertura, se for o caso o preço é o que eu preciso, mas então eu recebo um descasamento de tipo no IF(
Print(DoubleToStr(OrderOpenPrice(),Digits));
 
vadynik:

Preciso subtrair pontos do preço de abertura e, se for o caso, o preço é o que eu preciso, mas depois recebo um desajuste de tipo no IF (

Faça cálculos em quatro dígitos. Se a precisão for importante para você, então coloque-a de volta com o valor do último dígito, pois ela não muda durante os cálculos, devido à natureza dos cálculos.
 
Ekburg:

Faça cálculos como para quatro dígitos, e se a precisão for importante para você, então devolva-o no lugar, com o valor do último dígito que foi anterior, porque não muda durante os cálculos, devido às especificidades dos cálculos.
A normalização é necessária somente em Orderend, Orderclose etc. Bem e ainda na comparação de valores reais e em impressoras especificam qualquer quantidade de sinais após um ponto decimal. Mas se você apenas escrever Print(whatever_double_value), geralmente imprimirá quatro casas decimais. Portanto, a maneira correta de fazer isso é escrever
Print(DoubleToStr(OrderOpenPrice(),Digits));

Como já mencionado, primeiro converta duas vezes para string com número especificado de casas decimais e depois imprima-o em log usando Print....
 
E se forem calculados pontos, não confundi-los com pontos. Diga duplo SPRED= pontos de SPRED=(Ask-Bid)/pontos de SPRED.