Uma divisão por erro zero apareceu em um indicador - página 4 1234567891011 Novo comentário Aleksey Vyazmikin 2018.07.04 14:27 #31 limite no código, se 1/2=0,5 então aparentemente o arredondamento agora dá 0 em vez de 1? Para testar a hipótese eu alterei o código double d1=(delta_price_high-center_line_point)/((double)limit/2); double d2=(center_line_point-delta_price_low)/((double)limit/2); Vladimir Karputov 2018.07.04 14:28 #32 Aleksey Vyazmikin:Lixo total - conseguiu divisão por erro zero novamente Código de ME como imagem - talvez eu seja cego, mas não entendo o que está acontecendo O erro ainda se encontra na mesma linha. O arquivo é o mesmo, pois a linha de erro foi deslocada devido à adição de código para a impressão.Você deve usarum modelador - você verá imediatamente que sua cadeia de problemas NÃO está dentro da área de verificação se(limite==0) Aleksey Vyazmikin 2018.07.04 14:30 #33 Vladimir Karputov:Você deve usarum modelador - você verá imediatamente que sua cadeia de problemas NÃO está na zona de verificação se(limit==0)Então não precisa entrar, por quê? Aleksey Vyazmikin 2018.07.04 14:31 #34 Este código. int a=1; double test=1/(a/2); Pendurar o terminal. Vladimir Karputov 2018.07.04 14:32 #35 Aleksey Vyazmikin: limite no código, se 1/2=0,5 então aparentemente o arredondamento agora dá 0 em vez de 1? Para testar a hipótese eu alterei o código Código: //+------------------------------------------------------------------+ //| writeSpicifiedType.mq5 | //| hoz | //| | //+------------------------------------------------------------------+ #property copyright "hoz" #property link "" #property version "1.00" //--- double high=-1.0; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- for(int limit=0;limit<4;limit++) { Print("limit (",limit,")/2 ",limit/2); } } //+------------------------------------------------------------------+ Resultado: Test_en (EURUSD,M30) limit (0)/2 0 Test_en (EURUSD,M30) limit (1)/2 0 Test_en (EURUSD,M30) limit (2)/2 1 Test_en (EURUSD,M30) limit (3)/2 1 Aleksey Vyazmikin 2018.07.04 14:35 #36 Vladimir Karputov: Código: Resultado: A questão é essa, e antes aparentemente 1/2 deu um 1, não um zero. Vladimir Karputov 2018.07.04 14:36 #37 Aleksey Vyazmikin: A questão é essa, e antes, 1/2 deve ter sido um 1 em vez de um zero.Não. É sempre assim arredondado. Aleksey Vyazmikin 2018.07.04 14:39 #38 Vladimir Karputov: Não. É sempre assim que se completa.Então, afinal de contas, é outra coisa... Aleksey Vyazmikin 2018.07.04 14:50 #39 Mudou o código para a impressão if(limit/2==0) { limit=2; Print("start_time - ",TimeToString(start_time,TIME_DATE|TIME_MINUTES)," stop_time - ",TimeToString(stop_time,TIME_DATE|TIME_MINUTES)); Print("start_index=",start_index, " stop_index=",stop_index); } e agora eu tenho... 2018.07.04 15:47:07.959 IndDrafter (Si-9.18,H1) start_time - 2017.08.10 11:00 stop_time - 2017.08.10 11:00 2018.07.04 15:47:07.959 IndDrafter (Si-9.18,H1) start_index=2012 stop_index=2012 Como assim? [Excluído] 2018.07.04 14:53 #40 Aleksey Vyazmikin:Mudou o código para a impressão e agora eu tenho... Como assim?Tudo está correto. Se o limite for calculado usando a fórmulalimit=(int)(stop_time-start_time)/PeriodSeconds(_Period); então o resultado será = 0. Agora precisamos ver como são formados os tempos de parada e partida. Estatísticas de dependência entre criar um especialista para Quaisquer perguntas de recém-chegados 1234567891011 Novo comentário
limite no código, se 1/2=0,5 então aparentemente o arredondamento agora dá 0 em vez de 1?
Para testar a hipótese eu alterei o código
Lixo total - conseguiu divisão por erro zero novamente
Código de ME como imagem - talvez eu seja cego, mas não entendo o que está acontecendo
O erro ainda se encontra na mesma linha.
O arquivo é o mesmo, pois a linha de erro foi deslocada devido à adição de código para a impressão.Você deve usarum modelador - você verá imediatamente que sua cadeia de problemas NÃO está dentro da área de verificação se(limite==0)
Você deve usarum modelador - você verá imediatamente que sua cadeia de problemas NÃO está na zona de verificação se(limit==0)
Então não precisa entrar, por quê?
Este código.
Pendurar o terminal.
limite no código, se 1/2=0,5 então aparentemente o arredondamento agora dá 0 em vez de 1?
Para testar a hipótese eu alterei o código
Código:
Resultado:
Código:
Resultado:
A questão é essa, e antes aparentemente 1/2 deu um 1, não um zero.
A questão é essa, e antes, 1/2 deve ter sido um 1 em vez de um zero.
Não. É sempre assim arredondado.
Não. É sempre assim que se completa.
Então, afinal de contas, é outra coisa...
Mudou o código para a impressão
e agora eu tenho...
Como assim?
Mudou o código para a impressão
e agora eu tenho...
Como assim?
Tudo está correto. Se o limite for calculado usando a fórmulalimit=(int)(stop_time-start_time)/PeriodSeconds(_Period);
então o resultado será = 0.
Agora precisamos ver como são formados os tempos de parada e partida.