- Bollinger Bands - Трендовые индикаторы - Индикаторы - Чарты - MetaTrader 5 для Android
- Bollinger Bands - Трендовые индикаторы - Индикаторы - Чарт - MetaTrader 5 для iPhone
- Bollinger Bands - Трендовые индикаторы - Использование технических индикаторов - Графики котировок, технический и фундаментальный анализ
Если посмотреть в код индикатора \MQL5\Indicators\Examples\BB.mq5, то видно, что он выдаёт значения
PlotIndexSetInteger(2,PLOT_SHIFT,ExtBandsShift); //--- number of digits of indicator value IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1); //---- OnInit done } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total,
на один разряд точнее.
Для Ваших расчётов нужно сравнивать два вещественных числа
Если посмотреть в код индикатора \MQL5\Indicators\Examples\BB.mq5, то видно, что он выдаёт значения
на один разряд точнее.
Для Ваших расчётов нужно сравнивать два вещественных числа
IndicatorDigits(Digits);Но если честно я не понял что вы мне хотели сказать, повторюсь, я плуг в програмировании и если можно, то приведите пример. Т.е. я понимаю про вещественные числа, но как добиться точности в 5 знаков после запятой от BB я так и не понял.
double bb=iBands(NULL,0,20,2,0,PRICE_HIGH,MODE_UPPER,1); Print(bb);
2018.04.20 16:44:57.550GBPUSD,M1: 1.4037
Хотя при наведении на полосу ВВ на графике значение показывает 1.40368
Кстати вдогонку , так сказать в помощь в поиске проблемы. при вызове и принте(собственно именно тот способ по которому я и определил что 4 знака дает, а не 5) он еще и округляет число.
2018.04.20 16:44:57.550GBPUSD,M1: 1.4037
Хотя при наведении на полосу ВВ на графике значение показывает 1.40368
Вероятно, что в момент распечатки значение индикатора было 1.40370 и этот незначащий 0 был отброшен. При распечатке значений цены и в данном случае индикатора пользуйтесь функцией Print(DoubleToString(value, _Digits));
- docs.mql4.com
Вероятно, что в момент распечатки значение индикатора было 1.40370 и этот незначащий 0 был отброшен. При распечатке значений цены и в данном случае индикатора пользуйтесь функцией Print(DoubleToString(value, _Digits));
double bb=iBands(NULL,0,20,2,0,PRICE_HIGH,MODE_UPPER,1); Print(DoubleToString(bb,Digits));Кстати дело было не в нуле, это просто пример такой попался, он на всех значениях окруляет до 4-х знаков.
Самое забавное, что он начал показывать действительно 5 знаков. Только вот попробуйте вставить этот код и сравнить значения на графике(возьмем сформировавшуюся и закрытую свечу для точности) и посмотрите что он выдаёт разные значения да и вообще он чушку пишет если чесн. Просто вопрос уже стоит в том, что либо я тупой и чего-то не понимаю, либо тут есть проблема на которую мне не хватает знаний.
Кстати дело было не в нуле, это просто пример такой попался, он на всех значениях окруляет до 4-х знаков.
Он даёт значение с 4-мя знаками после точки.
Это не так, значения индикатора имеют тип double - 8 байт, даёт полностью)
т.е. внутри всегда максимально возможная точность, вывод на экран/принт - округляется.
Уже 2021 год, а у меня такая же проблема.
При вызове
iBands(NULL,0,B,OTKL,0,PRICE_WEIGHTED,MODE_UPPER,k)
в индикатор значения с 15 знаками после запятой, а при вызове
iBands(NULL,0,B,OTKL,0,PRICE_WEIGHTED,MODE_UPPER,k)
в советник округляет до 4 знаков после запятой.
В советнике
Comment(DoubleToString(iBands(NULL,0,B,OTKL,0,PRICE_WEIGHTED,MODE_UPPER,k),15))
Тоже выдает число с 4-мя знаками после запятой.
Где конфигурационные настройки метатрейдера4, отвечающие за это?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования