Примерно так:
int fLR_Array_ABC( int i0, // Правый индекс (элемент с которого располагаются данные для расчета) int aPeriod, // Период (количество элементов массива по которым делать расчет) double & aArray[], // Массив данных double & aVal_0, // Значение на правом индексе - результат расчета double & aVal_1, // Значение на левом индексе - результат расчета double & aB // Коэффициент наклона - результат расчета, если вдруг понадобится ){ static int sLastPeriod=0; static double SumX=0.0; static double SumXPow=0.0; int i; if(sLastPeriod!=aPeriod){ sLastPeriod=aPeriod; SumX=0.0; SumXPow=0.0; for(i=0;i<aPeriod;i++){ SumX+=i; SumXPow+=MathPow(i,2); } } double SumY=0.0; double SumXY=0.0; double SumYPow=0.0; int i2; for(i=0,i2=i0;i<aPeriod;i++,i2++){ double y=aArray[i2]; SumY+=y; SumYPow+=MathPow(y,2); SumXY+=y*i; } double SumXPow2=MathPow(SumX,2); double SumYPow2=MathPow(SumY,2); double Div1=SumXPow*aPeriod-SumXPow2; if(Div1==0)return(-1); aB=(SumXY*aPeriod-SumX*SumY)/Div1; aVal_0=(SumY-SumX*aB)/aPeriod; aVal_1=aVal_0+aB*(aPeriod-1); }
Примерно так:
Спасибо за отклик на мой вопрос.
Хотелось бы кое-что уточнить.
массив данных aArray[] - это что ?
Спасибо за отклик на мой вопрос.
Хотелось бы кое-что уточнить.
массив данных aArray[] - это что ?
Массив с ценами.
Извиняюсь за назойливость.
Я, наверно, неправильно задал вопрос.))
Создаю объект Канал на линейной прогрессии
datetime time1=D'2017.08.04 17:20:00';
datetime time2=D'2017.08.04 19:30:00';
ObjectCreate(0,"ilinRegr",OBJ_REGRESSION,0,time1,0,time2,0);
Как получить начальное и конечное значение цены на этом объекте ( средняя линия).
Пробовал так :
double lRegr0=ObjectGetValueByTime(0,"ilinRegr",time1,0);
double rRegr0=ObjectGetValueByTime(0,"ilinRegr",time2,0);
Получаю цифры, которые не совпадают с тем, что я вижу на графике
Массив с ценами.
Извиняюсь за назойливость.
Я, наверно, неправильно задал вопрос.))
Создаю объект Канал на линейной прогрессии
datetime time1=D'2017.08.04 17:20:00';
datetime time2=D'2017.08.04 19:30:00';
ObjectCreate(0,"ilinRegr",OBJ_REGRESSION,0,time1,0,time2,0);
Как получить начальное и конечное значение цены на этом объекте ( средняя линия).
Пробовал так :
double lRegr0=ObjectGetValueByTime(0,"ilinRegr",time1,0);
double rRegr0=ObjectGetValueByTime(0,"ilinRegr",time2,0);
Получаю цифры, которые не совпадают с тем, что я вижу на графикеКак программно получить начальное и конечное значение цены по средней линии канала линейной регрессии за определенное количество баров ?
Лично я - вычисляю эту самую линию канала регрессии, и использую ее уравнение, чтобы получить данные в любой точке.
Функции типа ObjectCreate() вобще, на мой взгляд, самим советникам не нужны, и использоваться могут только при отображении на графике объектов для пользователя. Если же эти данные нужны советнику - то разумнее не создавать объекты, а прямо вычислять необходимые значения, и напрямую их использовать.
Лично я - вычисляю эту самую линию канала регрессии, и использую ее уравнение, чтобы получить данные в любой точке.
Функции типа ObjectCreate() вобще, на мой взгляд, самим советникам не нужны, и использоваться могут только при отображении на графике объектов для пользователя. Если же эти данные нужны советнику - то разумнее не создавать объекты, а прямо вычислять необходимые значения, и напрямую их использовать.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Вопрос к опытным программистам-трейдерам , ну, или , кто сможет ответить ))
Вопрос, возможно не совсем корректен. Заранее извиняюсь ))
Как программно получить начальное и конечное значение цены по средней линии канала линейной регрессии за определенное количество баров ? К хелпу не отсылать, уже поизучал, но не смог понят как это сделатью
Спасибо !!!