Já fiz uma verificação por mim próprio, mas esta verificação serve para contornar o erro desta função, a ajuda não diz nada sobre a necessidade de uma verificação, o que significa que ela deve ser incorporada.
E depois, está a falar de verificação de indicadores, enquanto eu estou a usar Barras para calcular a hora correcta de início da barra, pois o iBarShift está na minha mente e só é adequado para forex, onde não há falhas frequentes com o histórico devido à compensação e sessões de negociação não para o dia inteiro.
E onde está a sua validação? E porquê introduzir alguma variável se ( ao bater o histórico ou alterar o histórico) basta recalcular completamente o indicador. Isto é normalmente feito de "0" a "rates_total-1".
E onde está o seu cheque? E porque é que introduziria uma variável se apenas precisasse de recalcular completamente o indicador (ao trocar o histórico ou alterar o histórico). Normalmente, isto é feito de "0" a "taxas_total-1".
O meu problema não tem nada a ver com a paginação de indicadores ou histórico. Aqui está um pedaço de código
datetime StartDt=iTime(Symbol(),PERIOD_CURRENT,Bars(Symbol(),PERIOD_CURRENT,iTime(Symbol(),TF_iDeltaP,0),iTime(Symbol(),PERIOD_CURRENT,0))-1);
datetime StopDt=iTime(Symbol(),PERIOD_CURRENT,1); //Берем прошлый бар, что б не было расхождений между реалом и тестером при задержки на реальных данныхint BarsGo=Bars(Symbol(),PERIOD_CURRENT,StartDt,StopDt);
if(StartDt>StopDt)BarsGo=0;
if(StartDt==StopDt)BarsGo=1;
if (BarsGo>0)
{
//Полный расчет с вычислениями - копирование массивов цен и прочие тяжелые функции
}
else
{
//Упрощенный расчет с присвоением эмпирических значений переменным
}
O problema ocorre quando se abre uma nova barra em geral, quando a data de início da barra é superior ao deslocamento de 1 barra a partir da barra zero na actual TF.
Isto não é uma defesa, mas um obstáculo à detecção de um erro no código!
Além disso, não é de todo lógico devolver o número 2 se as datas coincidirem - qual é o raciocínio aqui?
A hora de início de um bar em FORTS pode não coincidir e isto leva a erros nos cálculos, por exemplo, um bar abre não às 14:00 mas às 14:05 - eu também sofri com ele.
Talvez o programador tenha começado a trabalhar da forma como a documentação diz, mas mais tarde decidiu que seria melhor devolver 'entre' em vez de 'de' e 'para' as datas indicadas, mas a documentação não corrigiu esta descrição. Na verdade, não é muito necessário.
Eu nem sequer tenho uma demonstração em FORTS. Não o posso verificar.
Talvez o tenham feito originalmente como descrito na documentação, mas depois decidiram que seria melhor devolver "entre" datas em vez de "de" e "até" datas, mas a descrição na documentação não foi corrigida. Mas eles não corrigiram a descrição.
Eu nem sequer tenho uma demonstração em FORTS. Não posso verificar.
Como pode ser desnecessário, não consigo adivinhar, e se for um erro, que será corrigido mais tarde, o código não voltará a funcionar, e eu procurarei um erro durante muito tempo... Mas a Artem decidiu que não é um erro e não escreveu nada em essência....
Como pode não ser, não consigo adivinhar, e se for um erro, que será corrigido mais tarde, então o código não voltará a funcionar, e estarei à procura de um erro durante um tempo crítico... Mas a Artem decidiu que não é um erro e não escreveu nada em essência....
Não tenho qualquer problema com o indicador ou com a paginação do histórico. Aqui está um pedaço de código
O problema ocorre quando se abre uma nova barra em geral, quando a data de início da barra é mais do que 1 barra deslocada da barra zero na actual TF.
datetime StartDt=iTime(Symbol(),PERIOD_CURRENT,Bars(Symbol(),PERIOD_CURRENT,iTime(Symbol(),TF_iDeltaP,0),iTime(Symbol(),PERIOD_CURRENT,0))-1);
datetime StopDt=iTime(Symbol(),PERIOD_CURRENT,1); //Берем прошлый бар, что б не было расхождений между реалом и тестером при задержки на реальных данных
Não há verificação sobre o que iTime(), Bars() devolvem
Deveria tê-lo feito. Devia mesmo tê-lo feito. Veja na ajuda - o que é que o iTime() e Bars() devolvem ? E o que é que diz nas notas?
Bem, se tiver cuidado suficiente agora que não pode errar a hora de início e a hora de fim, não há nada a temer. Deixe-os governar.
Apenas não gosto de me sentar e esperar passivamente, e fui proibido de perguntar especificamente aos criadores sobre o assunto - a pergunta era originalmente para eles.
Será suficiente fazer estas verificações uma vez no código, ou devem ser feitas depois/antes de cada chamada de função?
Que tipo de verificações se propõe fazer, para o bar/história actual? Qual é a melhor maneira de as fazer?
Não sabe como verificar o valor de retorno para zero? E não sabe como sair da OnCalculate() com um retorno de zero? Já tentou procurar informação num website?
Obter o valor necessário da função
Verificar se é zero
Se for zero, então devolva 0;
Se não for zero, então para o passo 3
Trabalhar com este valor
Nunca pensei ensinar o básico da lógica a um homem com uma classificação superior a 13 mil...
Já fiz uma verificação por mim próprio, mas esta verificação serve para contornar o erro desta função, a ajuda não diz nada sobre a necessidade de uma verificação, o que significa que ela deve ser incorporada.
E depois, está a falar de verificação de indicadores, enquanto eu estou a usar Barras para calcular a hora correcta de início da barra, pois o iBarShift está na minha mente e só é adequado para forex, onde não há falhas frequentes com o histórico devido à compensação e sessões de negociação não para o dia inteiro.
E onde está a sua validação? E porquê introduzir alguma variável se ( ao bater o histórico ou alterar o histórico) basta recalcular completamente o indicador. Isto é normalmente feito de "0" a "rates_total-1".
E onde está o seu cheque? E porque é que introduziria uma variável se apenas precisasse de recalcular completamente o indicador (ao trocar o histórico ou alterar o histórico). Normalmente, isto é feito de "0" a "taxas_total-1".
O meu problema não tem nada a ver com a paginação de indicadores ou histórico. Aqui está um pedaço de código
O problema ocorre quando se abre uma nova barra em geral, quando a data de início da barra é superior ao deslocamento de 1 barra a partir da barra zero na actual TF.Isto não é uma defesa, mas um obstáculo à detecção de um erro no código!
Além disso, não é de todo lógico devolver o número 2 se as datas coincidirem - qual é o raciocínio aqui?
A hora de início de um bar em FORTS pode não coincidir e isto leva a erros nos cálculos, por exemplo, um bar abre não às 14:00 mas às 14:05 - eu também sofri com ele.
Talvez o programador tenha começado a trabalhar da forma como a documentação diz, mas mais tarde decidiu que seria melhor devolver 'entre' em vez de 'de' e 'para' as datas indicadas, mas a documentação não corrigiu esta descrição. Na verdade, não é muito necessário.
Eu nem sequer tenho uma demonstração em FORTS. Não o posso verificar.
Talvez o tenham feito originalmente como descrito na documentação, mas depois decidiram que seria melhor devolver "entre" datas em vez de "de" e "até" datas, mas a descrição na documentação não foi corrigida. Mas eles não corrigiram a descrição.
Eu nem sequer tenho uma demonstração em FORTS. Não posso verificar.
Como pode ser desnecessário, não consigo adivinhar, e se for um erro, que será corrigido mais tarde, o código não voltará a funcionar, e eu procurarei um erro durante muito tempo... Mas a Artem decidiu que não é um erro e não escreveu nada em essência....
Parece que na conta de demonstração da MQ as pessoas ligam-se à FORTS...
Como pode não ser, não consigo adivinhar, e se for um erro, que será corrigido mais tarde, então o código não voltará a funcionar, e estarei à procura de um erro durante um tempo crítico... Mas a Artem decidiu que não é um erro e não escreveu nada em essência....
Parece que as pessoas estão a ligar-se à FORTS numa conta de demonstração da MQ...
Bem, se agora for suficientemente cuidadoso e não conseguir enganar-se na hora de início e de fim, então não há nada a temer. Deixe-os governar.
Não tenho qualquer problema com o indicador ou com a paginação do histórico. Aqui está um pedaço de código
O problema ocorre quando se abre uma nova barra em geral, quando a data de início da barra é mais do que 1 barra deslocada da barra zero na actual TF.Não há verificação sobre o que iTime(), Bars() devolvem
Deveria tê-lo feito. Devia mesmo tê-lo feito. Veja na ajuda - o que é que o iTime() e Bars() devolvem ? E o que é que diz nas notas?
Bem, se tiver cuidado suficiente agora que não pode errar a hora de início e a hora de fim, não há nada a temer. Deixe-os governar.
Apenas não gosto de me sentar e esperar passivamente, e fui proibido de perguntar especificamente aos criadores sobre o assunto - a pergunta era originalmente para eles.
Não há verificações sobre o que iTime(), Bars() devolvem
Bem, deveria. Deveria mesmo. Procure na ajuda - o que é que o iTime() e Bars() devolvem? E o que é que diz nas notas?
Será suficiente fazer estas verificações uma vez em código, ou devem ser feitas depois/antes de cada chamada de função?
Que tipo de verificações são sugeridas, para o bar/histórico actual? Qual é a melhor maneira de as fazer?
Como encontro a razão para esta mensagem?
Será suficiente fazer estas verificações uma vez no código, ou devem ser feitas depois/antes de cada chamada de função?
Que tipo de verificações se propõe fazer, para o bar/história actual? Qual é a melhor maneira de as fazer?
Não sabe como verificar o valor de retorno para zero? E não sabe como sair da OnCalculate() com um retorno de zero? Já tentou procurar informação num website?