Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Если я правильно понял, то это значение цены на линии, соответствующее бару, следующему за последним баром выборки вправо.
Заранее спасибо.
Если я правильно понял, то это значение цены на линии, соответствующее бару, следующему за последним баром выборки вправо.
Это - значение цены на последнием баре выборки (то есть этот бар включается в выборку)
Все-же, если я правильно понял мысль уважаемого Yurixx-а, то:
Бары в выборке нумеруются с 0 по n-1
При строгом условии i<n переменная цикла никогда не достигнет равенства n, а, следовательно, последний бар выбрки имеет номер n-1.
Именно эти номера баров используются в уравнении y(i)=b*i+a.
Следовательно, на первом баре выборки значение линейной регрессии считается как a+b*0 - совпадает, а на последнем баре считается как a+b*(n-1) - не совпадает.
Если я неправ, то покажите, пожалуйста, в чем.
ЗЫ.: Самые коварные ошибки, частенько, кроются всего в нескольких символах исходного кода.
Вот окончательный вариант
Бывает у нас ещё "с шашкой наперевес". Исправленный билд выложен.
Всем спасибо за дискуссию.
Как я понял вышеприведенный скрипт написан не на mql4 и используется программной частью?
Но вот допустим я хотел бы использовать канал линейной регрессии с линиями максимального размаха по High/Low.
Для этого мне приходится стоить сложный зацикленный скрипт, который прилично грузит процессор.
Есть ли возможность сделать это наподобии как сделано у Вас со стандартным интрументальным каналам, без зацикленного скрипта?
Заранее благодарю за ответ - Александр.
Я уж так обрадовался, но в bild 194 осталась еще ошибка в расчете максимального размаха.
Рисунок прикладываю
Синим канал MT4.
Зеленым - вариант, как должно быть.
И вот еще - вариант кода, чтобы было правильно.
//---- maximal deviation
double maxdev=0;
double dvalue;
double linreg;
for(i=0; i<n; i++)
{
linreg=a+b*(m_pos[0]+i);
value=Close[m_pos[0]+i];
dvalue=MathAbs(value-linreg);
if( dvalue>=maxdev) maxdev=dvalue;
}
Но размах - ей богу лучше б сделали по High/Low, а то по Close - это не то, - какой-то полуфабрикат.
//---- maximal deviation
double maxdev=0;
double dvalueH, dvalueL;
double linreg;
for(i=0; i<n; i++)
{
linreg=a+b*(m_pos[0]+i);
dvalueH=MathAbs(High[m_pos[0]+i]-linreg);
dvalueL=MathAbs(linreg-Low[m_pos[0]+i]);
if( dvalueH>=maxdev) maxdev=dvalueH;
if( dvalueL>=maxdev) maxdev=dvalueL;
}
Про канал стандартного отклонения пока молчу, - он вообще сделан по мувингу, а не по регрессии.
Тут много нюансов, которые надо хорошо обдумать.
Как вариант...