Boa tarde! Você pode me dizer por que a linha indicadora não é exibida, o código parece ser elementar e nada complicado. Eu o verifiquei com Print (T_V) - ele dá o valor, mas a linha não é exibida por algum motivo?
Gostaria de acrescentar uma pergunta. Apaguei o indicador e coloquei-o novamente em um gráfico e a linha é exibida. Por que o indicador não é recalculado durante a compilação?
#property indicator_separate_window#property indicator_minimum -3#property indicator_maximum 3#property indicator_buffers 1#property indicator_color1 Red#property indicator_level1 0.0//горизонтальный уровень N в отдельном окне индикатора, где N от 1 до 8 #property indicator_levelcolor Black // цвет горизонтальных уровней индикатора е #property indicator_levelwidth 1//толщина горизонтальных уровней индикатораdouble T_Vol[];
int init()
{ SetIndexBuffer (0, T_Vol);
SetIndexStyle (0, DRAW_HISTOGRAM, STYLE_SOLID, 1);
IndicatorDigits(Digits);
return(0); }
int start(){
int limit;
int сounted_bars=IndicatorCounted();
if (сounted_bars==0) limit=Bars-1;
if (сounted_bars>0) limit=Bars-сounted_bars-1;
for(int i=limit;i>=0;i--){
int T_V=0;
if (Volume[i]>Volume[i+1])T_V=1;
if (Volume[i]<Volume[i+1])T_V=-1;
T_Vol[i]=T_V;
}
return(0);
}
Estudei programação como amador, não programei por muito tempo, por isso tenho uma pergunta:
Por que preciso de pontos de parada na MQL4, se depois de defini-los nada acontece na compilação? Eu costumava programar muito em C#, onde havia uma pausa na execução do programa e você podia ver os valores das variáveis, quais funções eram chamadas e quais erros eram listados. Mas aqui eu aperto Compile e nada acontece. Ou você pode habilitar o Debug de alguma forma, eu simplesmente não sei como?
há uma função "double MathRound( valor duplo)", mas eu preciso do arredondamento para uma fração decimal maior, e se o número for inteiro ou já decimal, então deixe-o em paz.
Por exemplo: 1) 0,744 rodada a 0,8; 1,233 rodada a 1,3
Você pode traduzir um número em uma cadeia e escrever uma função para processar os caracteres desta cadeia. Não é complicado aqui - só arredondamos para cima se o número tiver mais de um dígito após o ponto decimal.
Você pode converter um número em uma cadeia e escrever uma função para processar os caracteres dessa cadeia. Não é complicado aqui - só arredondamos um número se ele tiver mais de um dígito após o ponto decimal.
OK, vou realmente tentar. Muito obrigado pela idéia!
há uma função "double MathRound( valor duplo)", mas eu preciso do arredondamento para uma fração decimal maior, e se o número for inteiro ou já decimal, então deixe-o em paz.
Por exemplo: 1) 0,744 rodada a 0,8; 1,233 rodada a 1,3
Não há função, mas pode ser feita em MQL4 + WinAPI.
Boa tarde! Você pode me dizer por que a linha indicadora não é exibida, o código parece ser elementar e nada complicado. Eu o verifiquei com Print (T_V) - ele dá o valor, mas a linha não é exibida por algum motivo?
Gostaria de acrescentar uma pergunta. Apaguei o indicador e coloquei-o novamente em um gráfico e a linha é exibida. Por que o indicador não é recalculado durante a compilação?
1.
Qual é o valor da variável "SignalBar" e o indicador é calculado sobre esta barra?
Talvez a SignalBar=0 e o indicador não calcule a 0ª barra.
2.
Sim, durante os testes visuais, os buffers indicadores não são exibidos até que o teste seja concluído ou interrompido. Mas os indicadores contam.
Obrigado por apontar isso! Mas nada ajuda até agora :(
Portanto, agora estou estudando a transferência do indicador para o Expert Advisor. Se você tiver algum conselho sábio, eu não o recusarei! :)
Olá a todos!
Estudei programação como amador, não programei por muito tempo, por isso tenho uma pergunta:
Por que preciso de pontos de parada na MQL4, se depois de defini-los nada acontece na compilação? Eu costumava programar muito em C#, onde havia uma pausa na execução do programa e você podia ver os valores das variáveis, quais funções eram chamadas e quais erros eram listados. Mas aqui eu aperto Compile e nada acontece. Ou você pode habilitar o Debug de alguma forma, eu simplesmente não sei como?
há uma função "double MathRound( valor duplo)", mas eu preciso do arredondamento para uma fração decimal maior, e se o número for inteiro ou já decimal, então deixe-o em paz.
Por exemplo: 1) 0,744 rodada a 0,8; 1,233 rodada a 1,3
2) 0,9 ou 3 ou 1,5 não tocar.
Será que você sequer sabe que existe uma Documentação completa e detalhada do idioma?
NormalizeDuplo
Será que você sequer sabe que existe uma Documentação completa e detalhada do idioma?
NormalizeDuplo
para cima, é um pouco simples, não é...?
Você pode traduzir um número em uma cadeia e escrever uma função para processar os caracteres desta cadeia. Não é complicado aqui - só arredondamos para cima se o número tiver mais de um dígito após o ponto decimal.
Você pode converter um número em uma cadeia e escrever uma função para processar os caracteres dessa cadeia. Não é complicado aqui - só arredondamos um número se ele tiver mais de um dígito após o ponto decimal.
há uma função "double MathRound( valor duplo)", mas eu preciso do arredondamento para uma fração decimal maior, e se o número for inteiro ou já decimal, então deixe-o em paz.
Por exemplo: 1) 0,744 rodada a 0,8; 1,233 rodada a 1,3
2) 0,9 ou 3 ou 1,5 não tocar.