Исправил. Вместо NormalizeDouble(******),3) задал DoubleToString(RRRR_, 3)
//----------Задаем расхождние между ценовыми линиями на текущем баре -------------- RRRR_ = DoubleToString((Complex_1_1 - Complex_1_2 ),3); RRRR_2 = DoubleToString((Complex_2_1 - Complex_2_2 ),3); //----------------------------- //----- Вывод информации на экран ----------------------------------------- if ((Long)||(Short))on_off=StringConcatenate (on_off,"Текущее расхождение на открытии бара", "/","Заданное расхождение = ",RRRR_," / ",Delta, "\r\n"); if ( Filter){ on_off=StringConcatenate (on_off,"на первом баре=",RRRR_,"\r\n"); on_off=StringConcatenate (on_off,"на втором баре=",RRRR_2,"\r\n");
Но все равно, в комментарии отображаются только целые значения RRRR_ и RRR_2
Значения индикатора беру вот так:
//ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ Расчет индикатора Complex_Common ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ if (Symbol()=="GBPUSD") { m=2; n=0;} if (Symbol()=="EURUSD") { m=1; n=0;} if (Symbol()=="GBPJPY") { m=2; n=4;} if (Symbol()=="GBPCHF") { m=2; n=3;} if (Symbol()=="EURJPY") { m=1; n=4;} if (Symbol()=="EURGBP") { m=1; n=2;} if (Symbol()=="USDJPY") { m=0; n=4;} if (Symbol()=="EURJPY") { m=1; n=4;} if (Symbol()=="USDCHF") { m=0; n=3;} if (Symbol()=="EURCHF") { m=1; n=3;} if (Symbol()=="CHFJPY") { m=3; n=4;} //-------------- задаем значения индикатора Complex_Common по первому символу -------- double Complex_1_1=iCustom(Symbol(),0,"Complex_Common_01mod",Period_low,Period_fast,m,1); // на 1-м баре double Complex_2_1=iCustom(Symbol(),0,"Complex_Common_01mod",Period_low,Period_fast,m,2); // на 2-м баре //---------------задаем значения индикатора Complex_Common по второму символу ------------ double Complex_1_2=iCustom(Symbol(),0,"Complex_Common_01mod",Period_low,Period_fast,n,1); // на 1-м баре double Complex_2_2=iCustom(Symbol(),0,"Complex_Common_01mod",Period_low,Period_fast,n,2); // на 2-м баре //----------Задаем расхождние между ценовыми линиями на 1 баре -------------- RRRR_ = DoubleToString((Complex_1_1 - Complex_1_2 ),3);
Индикатор - в закачке. Код написал сам по мотивам известных статей Сем-Сем. о кластерных индикаторах. Деления в коде индюка нет вообще (только разность):
Убрал сейчас из кода "нормализацию" и обнаружилось, что
//-------------- задаем значения индикатора Complex_Common по первому символу -------- double Complex_1_1=iCustom(Symbol(),0,"Complex_Common_01mod",Period_low,Period_fast,m,1); // на 1-м баре double Complex_2_1=iCustom(Symbol(),0,"Complex_Common_01mod",Period_low,Period_fast,m,2); // на 2-м баре //---------------задаем значения индикатора Complex_Common по второму символу ------------ double Complex_1_2=iCustom(Symbol(),0,"Complex_Common_01mod",Period_low,Period_fast,n,1); // на 1-м баре double Complex_2_2=iCustom(Symbol(),0,"Complex_Common_01mod",Period_low,Period_fast,n,2); // на 2-м баре //----------Задаем расхождние между ценовыми линиями на текущем баре -------------- RRRR_ = (Complex_1_1 - Complex_1_2 );RRRR_ отображается также в целых числах! Хотя, наверное так не должно быть?
Исправил. Вместо NormalizeDouble(******),3) задал DoubleToString(RRRR_, 3)
Но все равно, в комментарии отображаются только целые значения RRRR_ и RRR_2
Не туда вставил
//----- Вывод информации на экран ----------------------------------------- string info=""; string on_off="---------------------------------------------------"+ "\r\n"; if ((Long)||(Short))on_off=StringConcatenate (on_off,"Текущее расхождение на открытии бара", "/","Заданное расхождение = ",RRRR_," / ",Delta, "\r\n"); if ( Filter){ on_off=StringConcatenate (on_off,"на 0 баре=",DoubleToString(RRRR_, 3)"\r\n"); on_off=StringConcatenate (on_off,"на 1 баре=",DoubleToString(RRRR_2, 3)"\r\n");
Значения индикатора беру вот так:
Индикатор - в закачке. Код написал сам по мотивам известных статей Сем-Сем. о кластерных индикаторах. Деления в коде индюка нет вообще (только разность):
В индикаторе применяется умножение на 10000 и 100, что для чертырехзначных котировок равнозначно делению на значение Point() для соответствующего символа, просто автор индикатора не озаботился о качестве кода или опыта не хватило.
На выходе должны быть челые числа при правильном написании кода (нормализация вычитания средних до Digits и деление на Point).
Лучше переделайте индикатор с нормализацией и делением на пойнт, будут всегда целые числа на выходе.
Но если желаете с "хвостиком" после запятой, то ниже приложенный код проверки у меня работает как надо на 4-зн котировках, на 5-зн не знаю, пробуйте.
extern int Period_low = 21; extern int Period_fast = 8; int m=-1,n=-1,Delta=10; void OnStart() { while(!IsStopped()) { if (Symbol()=="GBPUSD") { m=2; n=0;} if (Symbol()=="EURUSD") { m=1; n=0;} if (Symbol()=="GBPJPY") { m=2; n=4;} if (Symbol()=="GBPCHF") { m=2; n=3;} if (Symbol()=="EURJPY") { m=1; n=4;} if (Symbol()=="EURGBP") { m=1; n=2;} if (Symbol()=="USDJPY") { m=0; n=4;} if (Symbol()=="EURJPY") { m=1; n=4;} if (Symbol()=="USDCHF") { m=0; n=3;} if (Symbol()=="EURCHF") { m=1; n=3;} if (Symbol()=="CHFJPY") { m=3; n=4;} //-------------- задаем значения индикатора Complex_Common по первому символу -------- double Complex_1_1=iCustom(Symbol(),0,"Complex_Common_01mod",Period_low,Period_fast,m,1); // на 1-м баре double Complex_2_1=iCustom(Symbol(),0,"Complex_Common_01mod",Period_low,Period_fast,m,2); // на 2-м баре //---------------задаем значения индикатора Complex_Common по второму символу ------------ double Complex_1_2=iCustom(Symbol(),0,"Complex_Common_01mod",Period_low,Period_fast,n,1); // на 1-м баре double Complex_2_2=iCustom(Symbol(),0,"Complex_Common_01mod",Period_low,Period_fast,n,2); // на 2-м баре //----------Задаем расхождние между ценовыми линиями на текущем баре -------------- string RRRR_ = Complex_1_1 - Complex_1_2 ; string RRRR_2 = Complex_2_1 - Complex_2_2; //----------------------------- //----- Вывод информации на экран ----------------------------------------- string info=""; string on_off="---------------------------------------------------"+ "\r\n"; on_off=StringConcatenate (on_off,"Текущее расхождение на открытии бара", "/","Заданное расхождение = ",RRRR_," / ",Delta, "\r\n"); on_off=StringConcatenate (on_off,"на 1 баре=",DoubleToString(RRRR_, 3),"\r\n"); on_off=StringConcatenate (on_off,"на 2 баре=",DoubleToString(RRRR_2, 3),"\r\n"); Comment(on_off); Sleep(500); } }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день всем!
Возникла необходимость использовать ф-ю NormalizeDouble для показаний индикатора в отдельном окне.
Заданы три цифры после запятой.
Вывел данные значения (разность между линиями на 1 и 2 барах) в комментарий на графике
и обнаружил, - что данные значения округлены до целых чисел!
Пож. подскажите, почему не работает NormalizeDouble(******),3) и вместо трёх цифр после запятой выводятся целые значения RRRR_ и RRRR_2 ?