при делении на ноль индикатор, советник или скрипт прекращает свою работу и дальше вычисления не производятся(короче вылетает все), индикатор расчитается только до того места где произошло деление на ноль
sanyooooook:
при делении на ноль индикатор, советник или скрипт прекращает свою работу и дальше вычисления не производятся(короче вылетает все), индикатор расчитается только до того места где произошло деление на ноль
это правильно, но учитывая что он считает от большего бара в меньшему (от самого старшего по истории), то при первом же сбое он бы прекратил расчет и просто бы не дошел до того который соответствует сегодняшщему, чего вообще то не наблюдается))) на всех графиках он все считает норм
то есть поскольку он считает от начала по истории то размер массивов надо задать = Bars - Stochastic_period, чего сделать естественно нельзя, потому что надо указывать их размер при инициализации (что к слову сказать весьма неудобно), так вот когда я задал их равным 1000, то все стало считаться нормально
таким образом, можно сделать нормальную человеческую форму расчета если поменять алгоритм и пересчитывать не от начала к сегодняшнему бару а наоборот, тогда будет как ты говоришь, можно только рассчитывать значения для 2 последних баров
Проверьте на деление на ноль.
Проверьте на деление на ноль.
даже если оно и есть, то индикатор ведь все равно вычисляет значение и рисует точку на графике...
даже если оно и есть, то индикатор ведь все равно вычисляет значение и рисует точку на графике...
в советнике кажется рисоваться вообще ничего не будет
никакой обработки такого варианта в коде нет... то есть все равно по любому этот алгоритм возвращает значение > 0 и < 100
а если бы в строке
DSS = delta/(HighRange - LowRange)*100.0;
HighRange - LowRange было равно 0 (что скорее всего где тут может быть 0), то он бы нарисовал точку на уровне нуля на графике
https://www.mql5.com/ru/forum/102451
https://www.mql5.com/ru/forum/125928
при делении на ноль индикатор, советник или скрипт прекращает свою работу и дальше вычисления не производятся(короче вылетает все), индикатор расчитается только до того места где произошло деление на ноль
это правильно, но учитывая что он считает от большего бара в меньшему (от самого старшего по истории), то при первом же сбое он бы прекратил расчет и просто бы не дошел до того который соответствует сегодняшщему, чего вообще то не наблюдается))) на всех графиках он все считает норм
балин наконец то!!!!!
вот как я поменял:
int limit = Bars - Stochastic_period, Bar_OK;
double HighRange, LowRange;
double delta, MIT;
for (int i = limit; i >= 0; i--)
{
HighRange = High[iHighest(NULL,0,MODE_HIGH,Stochastic_period,i)];
LowRange = Low[iLowest(NULL,0,MODE_LOW,Stochastic_period,i)];
delta = Close[i] - LowRange;
if(HighRange - LowRange != 0)
{
MIT = delta/(HighRange - LowRange)*100.0;
MitBuffer[i] = smooth_coefficient * (MIT - MitBuffer[i+1]) + MitBuffer[i+1];
}
}
double DSS;
for (i = limit; i >= 0; i--)
{
HighRange = MitBuffer[ArrayMaximum(MitBuffer, Stochastic_period, i)];
LowRange = MitBuffer[ArrayMinimum(MitBuffer, Stochastic_period, i)];
delta = MitBuffer[i] - LowRange;
if(HighRange - LowRange != 0)
{
DSS = delta/(HighRange - LowRange)*100.0;
DssBuffer[i] = smooth_coefficient * (DSS - DssBuffer[i+1]) + DssBuffer[i+1];
}
}
то есть поскольку он считает от начала по истории то размер массивов надо задать = Bars - Stochastic_period, чего сделать естественно нельзя, потому что надо указывать их размер при инициализации (что к слову сказать весьма неудобно), так вот когда я задал их равным 1000, то все стало считаться нормально
таким образом, можно сделать нормальную человеческую форму расчета если поменять алгоритм и пересчитывать не от начала к сегодняшнему бару а наоборот, тогда будет как ты говоришь, можно только рассчитывать значения для 2 последних баров
Здравствуйте! есть ли в MQL4 функция ожидания нажатия любой клавиши или кнопки мыши?
хочу посмотреть как будет строиться канал на длине 100 баров побарно
цикл for (i = 100; i >= 0; i--)
{ строить канал i ;
нажатие любой клавиши ;
}
как реализовать нажатие клавиши?