Я не стал вникать в код, просто сделал код в start() так, как я бы
это сделал. Дополнительные проверки можете вставить сами, я
просто пивел пример.
//+------------+-----------------------------------------------------+ //| v.14.03.07 | SRCx3TF v2.mq4 | //+------------Spearman,Rosh и Bookkeeper, 2007, yuzefovich@gmail.com| //+------------+-----------------------------------------------------+ // http://www.improvedoutcomes.com/docs/WebSiteDocs/Clustering/ // Clustering_Parameters/Spearman_Rank_Correlation_Distance_Metric.htm // http://www.infamed.com/stat/s05.html // https://www.metaquotes.net/ // 'Коэффициент ранговой корреляции Спирмена - Spearman's Rank Correlation' /********************************************************************/ /**************** With "SpearmanRankCorr.mq4" only ******************/ /********************************************************************/ #property copyright "" #property link "" //---- #property indicator_separate_window #property indicator_maximum 1.3 #property indicator_minimum -1.3 #property indicator_level1 0.8 #property indicator_level2 -0.8 #property indicator_level3 1.0 #property indicator_level4 -1.0 #property indicator_buffers 3 #property indicator_color1 Crimson #property indicator_color2 Purple #property indicator_color3 Blue /********************************************************************/ extern int rangeN=14; extern int CalculatedBars=400; extern int Maxrange=30; /********************************************************************/ double SRC1[]; double SRC2[]; double SRC3[]; /********************************************************************/ int p1,p2,p3; /********************************************************************/ //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int deinit() { return; } /********************************************************************/ void init() { IndicatorBuffers(4); SetIndexBuffer(0,SRC1); SetIndexStyle(0,DRAW_LINE,EMPTY,2); SetIndexBuffer(1,SRC2); SetIndexStyle(1,DRAW_LINE,EMPTY,2); SetIndexBuffer(2,SRC3); SetIndexStyle(2,DRAW_LINE,EMPTY,2); if(Period()>60) { Alert("For H1 maximum!"); return; } if(Period()==1) { p1=5; p2=15; p3=30; IndicatorShortName("SRC x3TF ( M5, M15, M30 ) "); } if(Period()==5) { p1=15; p2=30; p3=60; IndicatorShortName("SRC x3TF ( M15, M30, H1 ) "); } if(Period()==15) { p1=30; p2=60; p3=240; IndicatorShortName("SRC x3TF ( M30, H1, H4 ) "); } if(Period()==30) { p1=60; p2=240; p3=1440; IndicatorShortName("SRC x3TF ( H1, H4, D1 ) "); } if(Period()==60) { p1=240; p2=1440; p3=0; IndicatorShortName("SRC x2TF ( H4, D1 ) "); } return; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); if(CalculatedBars<50) CalculatedBars=50; if(counted_bars<0) return(-1); /* if(counted_bars==0) max=Bars-1; if(counted_bars>0) max=Bars-counted_bars+2*p3/Period()+1; if(counted_bars>0) max=Bars-counted_bars; if(max>CalculatedBars) max=CalculatedBars; */ int n,n1,n2,n3,limit=Bars-counted_bars; for(n=limit;n>=0;n--) { n1=iBarShift(Symbol(),p1,Time[n]); n2=iBarShift(Symbol(),p1,Time[n]); n3=iBarShift(Symbol(),p1,Time[n]); SRC1[n]=iCustom(NULL,p1,"SpearmanRankCorr", rangeN,CalculatedBars,Maxrange,0,n1); SRC2[n]=iCustom(NULL,p2,"SpearmanRankCorr", rangeN,CalculatedBars,Maxrange,0,n2); SRC3[n]=iCustom(NULL,p3,"SpearmanRankCorr", rangeN,CalculatedBars,Maxrange,0,n3); } return; } /********************************************************************/Верхний индикатор - Ваш, нижний - мой вариант. Где-то есть ошибка в алгоритме, думаю, что у Вас. Последние данные совпадают (значения индикатора на нулевом баре).

Спасибо, смотрю...
Пока не понял.
Чем отличаются n1, n2 и n3:
n1=iBarShift(Symbol(),p1,Time[n]);
n2=iBarShift(Symbol(),p1,Time[n]);
n3=iBarShift(Symbol(),p1,Time[n]);
n1=n2=n3 ? а если ничем, то что считается тута:
SRC1[n]=iCustom(NULL,p1,"SpearmanRankCorr",
rangeN,CalculatedBars,Maxrange,0,n1);
SRC2[n]=iCustom(NULL,p2,"SpearmanRankCorr",
rangeN,CalculatedBars,Maxrange,0,n2);
SRC3[n]=iCustom(NULL,p3,"SpearmanRankCorr",
rangeN,CalculatedBars,Maxrange,0,n3);
Кажется идет сравнение значений на барах с одинаковыми номерами, а не с одинаковым временем? или я опять?
Все х'окей!
n1=iBarShift(Symbol(),p1,Time[n]);
n2=iBarShift(Symbol(),p2,Time[n]);
n3=iBarShift(Symbol(),p3,Time[n]);
и картинки стали одинаковыми. Rosh - спасибо за красивый код! SpearmanRankCorr действительно очень удобен. Слив сокращает резко, по принципу "здесь не входи".
Пока не понял.
Чем отличаются n1, n2 и n3:
n1=iBarShift(Symbol(),p1,Time[n]);
n2=iBarShift(Symbol(),p1,Time[n]);
n3=iBarShift(Symbol(),p1,Time[n]);
n1=n2=n3 ? а если ничем, то что считается тута:
SRC1[n]=iCustom(NULL,p1,"SpearmanRankCorr",
rangeN,CalculatedBars,Maxrange,0,n1);
SRC2[n]=iCustom(NULL,p2,"SpearmanRankCorr",
rangeN,CalculatedBars,Maxrange,0,n2);
SRC3[n]=iCustom(NULL,p3,"SpearmanRankCorr",
rangeN,CalculatedBars,Maxrange,0,n3);
Кажется идет сравнение значений на барах с одинаковыми номерами, а не с одинаковым временем? или я опять?
Все х'окей!
n1=iBarShift(Symbol(),p1,Time[n]);
n2=iBarShift(Symbol(),p2,Time[n]);
n3=iBarShift(Symbol(),p3,Time[n]);
и картинки стали одинаковыми. Rosh - спасибо за красивый код! SpearmanRankCorr действительно очень удобен. Слив сокращает резко, по принципу "здесь не входи".
Bookkeeper:
br>Кажется идет сравнение значений на барах с одинаковыми номерами, а не с одинаковым временем? или я опять?
Все х'окей!
n1=iBarShift(Symbol(),p1,Time[n]);
n2=iBarShift(Symbol(),p2,Time[n]);
n3=iBarShift(Symbol(),p3,Time[n]);
и картинки стали одинаковыми. Rosh - спасибо за красивый код! SpearmanRankCorr действительно очень удобен. Слив сокращает резко, по принципу "здесь не входи".
br>Кажется идет сравнение значений на барах с одинаковыми номерами, а не с одинаковым временем? или я опять?
Все х'окей!
n1=iBarShift(Symbol(),p1,Time[n]);
n2=iBarShift(Symbol(),p2,Time[n]);
n3=iBarShift(Symbol(),p3,Time[n]);
и картинки стали одинаковыми. Rosh - спасибо за красивый код! SpearmanRankCorr действительно очень удобен. Слив сокращает резко, по принципу "здесь не входи".
Да, при копировании забыл изменить периоды, Вы все правильно исправили. Все таки ошибка была у меня :)
Integer:
Еще две сигнальные сделал
Сигнальные, это, конечно, хорошо, но не принципиально. Еще две сигнальные сделал
А, вот сам индикатор NTF очень хорошо работает, в том числе и при визуальном тестировании на истории. Чей он? В коде авторства нет, NTF смахивает на MTF, но ранее не встречалось.
Спасибо, Integer.
granit77:
А, вот сам индикатор NTF очень хорошо работает, в том числе и при визуальном тестировании на истории. Чей он? В коде авторства нет, NTF смахивает на MTF, но ранее не встречалось.
Спасибо, Integer.
Integer:
Еще две сигнальные сделал
Сигнальные, это, конечно, хорошо, но не принципиально. Еще две сигнальные сделал
А, вот сам индикатор NTF очень хорошо работает, в том числе и при визуальном тестировании на истории. Чей он? В коде авторства нет, NTF смахивает на MTF, но ранее не встречалось.
Спасибо, Integer.
Мое производство;-) NTF это Next TimeFrame

Файлы:

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В Коде Базе что-то не получилось добавить реплику...

Кажется - удобно даже на малых ТФ.
To Rosh и все, все, все... кто заинтересуется и сможет: приведите код в божеский вид, плиzzzz. Иногда глючит, приходится перекомпилировать.