Советника не делал по диверам, но использую в скрипте функцию линейной регрессии. На определенном периоде сначала загоняю цены, потом данные индикатора и сравниваю коэффициент, отвечающий за наклон линии регрессии, если с разным знаком, то дивергенция. Вот так.
Советника не делал по диверам, но использую в скрипте функцию линейной регрессии. На определенном периоде сначала загоняю цены, потом данные индикатора и сравниваю коэффициент, отвечающий за наклон линии регрессии, если с разным знаком, то дивергенция. Вот так.
а не выложите скрипт если не жалко?
Скрипт не выложу, а вот функцию пожалуйста. За основу взял функцию из кого-то индикатора.
//+------------------------------------------------------------------+ //| Линейная регрессия | //| параметры: | //| Temp[] - массив с данными индикатора | //| sym - символ по которому считаем регрессию | //| tf - таймфрейм | //| sb - начальный бар | //| eb - количество баров для расчета регрессии | //| flag - переключает расчет цена/массив с данными индикатора| //+------------------------------------------------------------------+ double LinearRegression(double Temp[],string sym, int tf, int sb, int eb, bool flag) { int i; double a,b,c, sumy=0.0, sumx=0.0, sumxy=0.0, sumx2=0.0; for(i=sb;i<eb+sb;i++) { if(flag) { sumy+=iClose(sym,tf,i); sumxy+=iClose(sym,tf,i)*(i-sb+1); } else { sumy+=Temp[i-sb]; sumxy+=Temp[i-sb]*(i-sb+1); } sumx+=(i-sb+1); sumx2+=(i-sb+1)*(i-sb+1); } c=sumx2*(eb-sb)-sumx*sumx; if(c==0.0) { Alert("LinearRegression error: can\'t resolve equation"); return; } b=(sumxy*(eb-sb)-sumx*sumy)/c; //a=(sumy-sumx*b)/(eb-sb+1); return(b); } //+------------------------------------------------------------------+P.S.
Если индикатор использовать стандартный, то функцию можно упростить, т.е. не передавать массив с данными индикатора, а расчитывать прямо в ней.
В продолжение темы:: А у кого есть финкция определения двойной дивергенции?
чтото никак не соображу как из просто в двойную преобразовать, вроде как этот метод по подойдет
В продолжение темы:: А у кого есть финкция определения двойной дивергенции?
чтото никак не соображу как из просто в двойную преобразовать, вроде как этот метод по подойдет
как сказал один не глупый товарищ если есть дивергенция то не важно, двойная она или одинарная, силы ей это не прибавляет
Советника не делал по диверам, но использую в скрипте функцию линейной регрессии. На определенном периоде сначала загоняю цены, потом данные индикатора и сравниваю коэффициент, отвечающий за наклон линии регрессии, если с разным знаком, то дивергенция. Вот так.
Вообще-то диверы определяются между осциллом и индюком, либо осциллом и ценой.
Но не суть. Через знаки линейной регрессии выявление диверов действительно однозначно и запросто реализуемо, т.к. нужно определиться только с периодом в барах. А для популярного поиска по экстремумам сложно бывает определиться, какие именно экстремумы необходимо брать за основу - явная неоднозначность.
Спасибо за наколку!
---
Кстати в волновом анализе аналогичная проблема, т.к. там тоже нужно определиться с экстремумами, а сами экстремумы видны только задним числом.
Скрипт не выложу, а вот функцию пожалуйста. За основу взял функцию из кого-то индикатора.
P.S.Если индикатор использовать стандартный, то функцию можно упростить, т.е. не передавать массив с данными индикатора, а расчитывать прямо в ней.
я не догнал как переменные a,b,c работают чо сними делать та нужно и как переменная flag переключает
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Подскажите народ, кто ковырял дивергенции, и пробовал состряпан на них советника
или хотя бы ф-ия показывающую ее
Нашел кучу индикаторов, но как то не очень понял как они строят и на что опираются, особено как строят по индикаторам линии