Я не стал вникать в код, просто сделал код в 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
Как водится, один грамотный напишет, а сотня неграмотных бросятся «улучшать». Мне кажется, окраска базовой линии индикатора значительно информативнее, чем сигнальные линии. Вот примитивный вариант цветного NTF и картинка для сравнения с авторским индикатором. Кроме того, использован оригинальный индикатор Rosh’a SpearmanRankCorr, он дает меньшее отставание, чем SpearmanRankCorrS, что видно на картинке. Надеюсь, что автор сделает раскраску получше, моя работает не совсем корректно. Кроме того, индикатор явно нуждается в сглаживании с минимальным запаздыванием, тогда ему цены не будет.
Файлы:
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В Коде Базе что-то не получилось добавить реплику...
Кажется - удобно даже на малых ТФ.
To Rosh и все, все, все... кто заинтересуется и сможет: приведите код в божеский вид, плиzzzz. Иногда глючит, приходится перекомпилировать.