Прошу помощи клуба... При использовании функции JJMASeries вместо плавной кривой получаю разбросанные короткие отрезки. В чем может быть причина? Уже все перерыл. Может "бревно в глазу" не вижу (((
Дак вот это бревно: " Статья является продолжением статьи "Эффективные алгоритмы усреднения с минимальным лагом и их использование в индикаторах", так что прежде, чем приступить к её изучению, читателю следует внимательно ознакомиться и с предыдущей статьeй этого цикла." И к этому бревну в прицепе архивчик, а в нём штук двести примеров, как использовать эту функцию! И ни в одном примере там вот такой лажи нет!
Прошу помощи клуба... При использовании функции JJMASeries вместо плавной кривой получаю разбросанные короткие отрезки. В чем может быть причина? Уже все перерыл. Может "бревно в глазу" не вижу (((
Дак вот это бревно: " Статья является продолжением статьи "Эффективные алгоритмы усреднения с минимальным лагом и их использование в индикаторах", так что прежде, чем приступить к её изучению, читателю следует внимательно ознакомиться и с предыдущей статьeй этого цикла." И к этому бревну в прицепе архивчик, а в нём штук двести примеров, как использовать эту функцию! И ни в одном примере там вот такой лажи нет!
for(i=700; i>0; i--)
Вот, например код индикатора JJMA:
Спасибо за Ваш оперативный ответ. Поверьте, я внимательно прочел Ваши статьи, просмотрел код не только примеров, но и JJMASeries.mqh (мне конечно там не все понятно, но общий смысл и принцип функционирования я понял). На скрупулезное изучение функции уйдет много времени, поэтому я и обратился сюда. Возможно кто-то сталкивался с этим и знает проблему...
Все опубликованные примеры работают со стандартными ценами (более или менее). Я пытаюсь применить JMA к своему ряду данных, который формируется уже после того, как все бары пересчитаны. Полученные значения имеют (большей частью) нормализованный вид (от -10 до +10), из них ~70% (-1 до +1). Может в этом проблема? Использование отрицательных значений?
По поводу лажи... Мне просто стоило написать больше кода. Я прошу прощения ((. Все прекрасно работает с моей собственной процедурой усреднения, но не работает с JJMASeries.
void start(){datetime DiffTime, DiffTime1, DiffTimeStat, DiffTimeStat1, Compare;int counted =IndicatorCounted();if(counted <0)return(-1);if(counted >0) counted--;int limit =Bars-counted;int i;if(!first_stat)for(i=0; i<limit; i++){if(i==1) ShowInd(i);// обсчет около-нулевых баров, но только после обсчета осноной части}if(First_Run ==0){
First_Run =TimeLocal();}else{
Delay_run =TimeLocal()- First_Run;if(Delay_run <10){return;}// Задержка в 10 сек для уверенного формирования}if(limit <1)if(first_stat){for(i=0; i<Bars_for_Stats+100; i++) CalcData(i);// Расчет данных где Bars_for_Stats - целое число, допустим 700
StatInit(Bars_for_Stats,0,3);// Расчет статистических коэф-ов for(i=Bars_for_Stats; i>0; i--) GetSignal(i);// Собственно расчет данных для индикаторов с обработкой JJMASeries
first_stat =false;}}
Прошу помощи клуба... При использовании функции JJMASeries вместо плавной кривой получаю разбросанные короткие отрезки. В чем может быть причина? Уже все перерыл. Может "бревно в глазу" не вижу (((
Дак вот это бревно: " Статья является продолжением статьи "Эффективные алгоритмы усреднения с минимальным лагом и их использование в индикаторах", так что прежде, чем приступить к её изучению, читателю следует внимательно ознакомиться и с предыдущей статьeй этого цикла." И к этому бревну в прицепе архивчик, а в нём штук двести примеров, как использовать эту функцию! И ни в одном примере там вот такой лажи нет!
for(i=700; i>0; i--)
Вот, например код индикатора JJMA:
Спасибо за Ваш оперативный ответ. Поверьте, я внимательно прочел Ваши статьи, просмотрел код не только примеров, но и JJMASeries.mqh (мне конечно там не все понятно, но общий смысл и принцип функционирования я понял). На скрупулезное изучение функции уйдет много времени, поэтому я и обратился сюда. Возможно кто-то сталкивался с этим и знает проблему...
Все опубликованные примеры работают со стандартными ценами (более или менее). Я пытаюсь применить JMA к своему ряду данных, который формируется уже после того, как все бары пересчитаны. Полученные значения имеют (большей частью) нормализованный вид (от -10 до +10), из них ~70% (-1 до +1). Может в этом проблема? Использование отрицательных значений?
По поводу лажи... Мне просто стоило написать больше кода. Я прошу прощения ((. Все прекрасно работает с моей собственной процедурой усреднения, но не работает с JJMASeries.
Моя функция работает с любыми числами в том числе и с отрицательными! А вот на скурпулёзное изучение вашей идеи у меня уйдёт много времени, которого у меня по вполне понятным причинам нету абсолютно! Два вопроса:
1. Ваш ценовой ряд уже лежит в индикаторном буфере?
2. на каждом пересчёте пересчитывается только значение с последнего бара или все значения?
Моя функция работает с любыми числами в том числе и с отрицательными! А вот на скурпулёзное изучение вашей идеи у меня уйдёт много времени, которого у меня по вполне понятным причинам нету абсолютно! Два вопроса:
1. Ваш ценовой ряд уже лежит в индикаторном буфере?
2. на каждом пересчёте пересчитывается только значение с последнего бара или все значения?
2. Сначала отвечу на второй вопрос... Я пока делаю расчет ТОЛЬКО на момент расчета своей статистики. Расчитываются бары от 700 до 1. Нулевой пока не считаю. С этим бы разобраться...
1. Я не совсем понял вопрос... Под "уже" Вы имеете ввиду какой момент? Давайте я просто прокомментирую эти три строки:
for(i=0; i<Bars_for_Stats+100; i++) CalcData(i); // Расчет данных где Bars_for_Stats - целое число, допустим 700
StatInit(Bars_for_Stats, 0, 3); // Расчет статистических коэф-ов
for(i=Bars_for_Stats; i>0; i--) GetSignal(i); // Собственно расчет данных для индикаторов с обработкой JJMASeries
1-я: заполнение промежуточных (не индикаторных) массивов, на основе текущего ВР
2-я: вычисление стат. величин для последующей нормализации (значащей роли не играет)
3-я: собственно заполнение индикаторных буферов. Сложные и громоздкие расчеты этих величин я не привожу, так как они отношения к делу не имеют, но они имеют, безусловно, прямую временную корреляцию с ценовыми рядами. Реальные значения этих расчетов я показал на графике (красный) и попытку сгладить эти значения через JJMASeries(сиреневый). Для того, чтобы его "увидеть" мне пришлось его поднять на 20 единиц.
По поводу отрицательных величин я, похоже, погорячился... Действительно, если опустить график на нулевой уровень, то JJMASeries рисует верхушки выше "1" и ниже "-1". Между этими значениями пусто. Если поднять график - картина как на скриншоте. Глубина JMA сглаживания равна 36. Фаза 100.
В общем, есть еще много непонятного. Буду разбираться дальше. Если есть возможность помочь - буду признателен.
Вот вариант функции, которая делает то, что вам надо:
//+X================================================================X+//| Get_JJMASeries() function |//+X================================================================X+ bool Get_JJMASeries
(double& InputIndBuffer[],double& OutputIndBuffer[],int total,int Length,int Phase)//+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+{//----+
JJMASeriesResize(1);//---- double JMA, Series;int reset;//----+ ОСНОВНОЙ ЦИКЛ ВЫЧИСЛЕНИЯ ИНДИКАТОРА for(int bar = total; bar >=0; bar--){//----+
Series = InputIndBuffer[bar];//----+ Одно обращение к функции JJMASeries за номером 0. //Параметры nJMA.Phase и nJMA.Length не меняются на каждом баре (nJMA.din=0)
JMA = JJMASeries(0,0, total, total, Phase, Length, Series, bar, reset);//----+ Проверка на отсутствие ошибки в предыдущей операцииif(reset !=0)return(false);
OutputIndBuffer[bar]= JMA;}//---- Завершение вычислений значений индикатора//----+ return(true);}//+X----------------------+ <<< The End >>> +-----------------------X+
Эта функция принимает буфер с вашим ценовым рядом InputIndBuffer[] и отдаёт сглаженный ценовой ряд в другой индикаторный буфер OutputIndBuffer[]. Вот вариант обращения к функции:
Спасибо Вам огромное за потраченное время. У меня, конечно, нет потребности в подобной функции, но ее изучение натолкнуло меня на изыскания другого рода. Как бы там ни было - главное результат. А результат есть. Я был не прав. Ваша библиотека замечательно работает. Проблемы были в моих ошибках. Извините что отнял у Вас время. И спасибо Вам за Ваши труды. Удачи в чемпионате!
Столкнулся сегодня с проблемой компилирования индикаторов,
описанной несколькими постами ниже. Она возникает из-за системы безопасности Windows7, ограничивающей
права пользователей. Поэтому компиляцию индикаторов и экспертов, которые
ссылаются на другие файлы необходимо проводить из учетной записи Администратор. Для ее
разблокировки необходимо вести в командной строке следующее:
net user Администратор /active:yes
Далее «Пуск» - «Сменить пользователя» - «Администратор» и компилируем
уже без ошибок.
Коллеги,
Прошу помощи клуба... При использовании функции JJMASeries вместо плавной кривой получаю разбросанные короткие отрезки. В чем может быть причина? Уже все перерыл. Может "бревно в глазу" не вижу (((
Дак вот это бревно: " Статья является продолжением статьи "Эффективные алгоритмы усреднения с минимальным лагом и их использование в индикаторах", так что прежде, чем приступить к её изучению, читателю следует внимательно ознакомиться и с предыдущей статьeй этого цикла." И к этому бревну в прицепе архивчик, а в нём штук двести примеров, как использовать эту функцию! И ни в одном примере там вот такой лажи нет!
Вот, например код индикатора JJMA:
Коллеги,
Прошу помощи клуба... При использовании функции JJMASeries вместо плавной кривой получаю разбросанные короткие отрезки. В чем может быть причина? Уже все перерыл. Может "бревно в глазу" не вижу (((
Дак вот это бревно: " Статья является продолжением статьи "Эффективные алгоритмы усреднения с минимальным лагом и их использование в индикаторах", так что прежде, чем приступить к её изучению, читателю следует внимательно ознакомиться и с предыдущей статьeй этого цикла." И к этому бревну в прицепе архивчик, а в нём штук двести примеров, как использовать эту функцию! И ни в одном примере там вот такой лажи нет!
Вот, например код индикатора JJMA:
Спасибо за Ваш оперативный ответ. Поверьте, я внимательно прочел Ваши статьи, просмотрел код не только примеров, но и JJMASeries.mqh (мне конечно там не все понятно, но общий смысл и принцип функционирования я понял). На скрупулезное изучение функции уйдет много времени, поэтому я и обратился сюда. Возможно кто-то сталкивался с этим и знает проблему...
Все опубликованные примеры работают со стандартными ценами (более или менее). Я пытаюсь применить JMA к своему ряду данных, который формируется уже после того, как все бары пересчитаны. Полученные значения имеют (большей частью) нормализованный вид (от -10 до +10), из них ~70% (-1 до +1). Может в этом проблема? Использование отрицательных значений?
По поводу лажи... Мне просто стоило написать больше кода. Я прошу прощения ((. Все прекрасно работает с моей собственной процедурой усреднения, но не работает с JJMASeries.Коллеги,
Прошу помощи клуба... При использовании функции JJMASeries вместо плавной кривой получаю разбросанные короткие отрезки. В чем может быть причина? Уже все перерыл. Может "бревно в глазу" не вижу (((
Дак вот это бревно: " Статья является продолжением статьи "Эффективные алгоритмы усреднения с минимальным лагом и их использование в индикаторах", так что прежде, чем приступить к её изучению, читателю следует внимательно ознакомиться и с предыдущей статьeй этого цикла." И к этому бревну в прицепе архивчик, а в нём штук двести примеров, как использовать эту функцию! И ни в одном примере там вот такой лажи нет!
Вот, например код индикатора JJMA:
Спасибо за Ваш оперативный ответ. Поверьте, я внимательно прочел Ваши статьи, просмотрел код не только примеров, но и JJMASeries.mqh (мне конечно там не все понятно, но общий смысл и принцип функционирования я понял). На скрупулезное изучение функции уйдет много времени, поэтому я и обратился сюда. Возможно кто-то сталкивался с этим и знает проблему...
Все опубликованные примеры работают со стандартными ценами (более или менее). Я пытаюсь применить JMA к своему ряду данных, который формируется уже после того, как все бары пересчитаны. Полученные значения имеют (большей частью) нормализованный вид (от -10 до +10), из них ~70% (-1 до +1). Может в этом проблема? Использование отрицательных значений?
По поводу лажи... Мне просто стоило написать больше кода. Я прошу прощения ((. Все прекрасно работает с моей собственной процедурой усреднения, но не работает с JJMASeries.Моя функция работает с любыми числами в том числе и с отрицательными! А вот на скурпулёзное изучение вашей идеи у меня уйдёт много времени, которого у меня по вполне понятным причинам нету абсолютно! Два вопроса:
1. Ваш ценовой ряд уже лежит в индикаторном буфере?
2. на каждом пересчёте пересчитывается только значение с последнего бара или все значения?
Моя функция работает с любыми числами в том числе и с отрицательными! А вот на скурпулёзное изучение вашей идеи у меня уйдёт много времени, которого у меня по вполне понятным причинам нету абсолютно! Два вопроса:
1. Ваш ценовой ряд уже лежит в индикаторном буфере?
2. на каждом пересчёте пересчитывается только значение с последнего бара или все значения?
2. Сначала отвечу на второй вопрос... Я пока делаю расчет ТОЛЬКО на момент расчета своей статистики. Расчитываются бары от 700 до 1. Нулевой пока не считаю. С этим бы разобраться...
1. Я не совсем понял вопрос... Под "уже" Вы имеете ввиду какой момент? Давайте я просто прокомментирую эти три строки:
Вот вариант функции, которая делает то, что вам надо:
Эта функция принимает буфер с вашим ценовым рядом InputIndBuffer[] и отдаёт сглаженный ценовой ряд в другой индикаторный буфер OutputIndBuffer[]. Вот вариант обращения к функции:
Николай,
Спасибо Вам огромное за потраченное время. У меня, конечно, нет потребности в подобной функции, но ее изучение натолкнуло меня на изыскания другого рода. Как бы там ни было - главное результат. А результат есть. Я был не прав. Ваша библиотека замечательно работает. Проблемы были в моих ошибках. Извините что отнял у Вас время. И спасибо Вам за Ваши труды. Удачи в чемпионате!
Столкнулся сегодня с проблемой компилирования индикаторов, описанной несколькими постами ниже. Она возникает из-за системы безопасности Windows7, ограничивающей права пользователей. Поэтому компиляцию индикаторов и экспертов, которые ссылаются на другие файлы необходимо проводить из учетной записи Администратор. Для ее разблокировки необходимо вести в командной строке следующее:
net user Администратор /active:yes
Далее «Пуск» - «Сменить пользователя» - «Администратор» и компилируем уже без ошибок.