Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 790
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Всем Доброго времени суток!
Мозг припух; в документации ответа не нашел, но может кто сталкивался. Вот такая строчка в советнике (доля положительных сделок):
Print(OderPluseCount,"/",OderTotal,"=",DoubleToStr((OderPluseCount/OderTotal),2),"=",BestOd," ",2/5*100," ",100*2/5);
Выдает в журнал (например):
3/6=0.00=0 0 40
При этом если решение от 1:
3/3=1.00=1 0 40
Переменная BestOd=OderPluseCount/OderTotal типа double, остальные int.
То есть, как только встречается значение меньше 1, то автоматом компилятор превращает его в 0... Последние два выражения из констант вообще удивительные результаты дают - вроде, одно и тоже, а нет )))
Пробовал разные подстановки, - все, что больше 1 имеет корректную дробную часть.
Всем Доброго времени суток!
Мозг припух; в документации ответа не нашел, но может кто сталкивался. Вот такая строчка в советнике (доля положительных сделок):
Print(OderPluseCount,"/",OderTotal,"=",DoubleToStr((OderPluseCount/OderTotal),2),"=",BestOd," ",2/5*100," ",100*2/5);
Выдает в журнал (например):
3/6=0.00=0 0 40
При этом если решение от 1:
3/3=1.00=1 0 40
Переменная BestOd=OderPluseCount/OderTotal типа double, остальные int.
То есть, как только встречается значение меньше 1, то автоматом компилятор превращает его в 0... Последние два выражения из констант вообще удивительные результаты дают - вроде, одно и тоже, а нет )))
Пробовал разные подстановки, - все, что больше 1 имеет корректную дробную часть.
Попробуй так
DoubleToStr((double)(OderPluseCount/OderTotal),2)
Попробуй так
DoubleToStr((double)(OderPluseCount/OderTotal),2)
Не помогает. Но спасибо )
DoubleToStr((double)(OderPluseCount/(OderTotal*1.0)),2)
Так работает, Спасибо. Похоже на шаманство )))
Честно говоря, я больше переживаю не за отображение, а за правильный расчет BestOd. Пришлось и его править.
Сделал так:
BestOd=(OderPluseCount/(OderTotal*1.0));
Этому есть какое-то объяснение? Ведь если бы не принт, отловить такую ошибку очень сложно. В каких случаях она может вылезти?
Так работает, Спасибо. Похоже на шаманство )))
Честно говоря, я больше переживаю не за отображение, а за правильный расчет BestOd. Пришлось и его править.
Сделал так:
BestOd=(OderPluseCount/(OderTotal*1.0));
Этому есть какое-то объяснение? Ведь если бы не принт, отловить такую ошибку очень сложно. В каких случаях она может вылезти?
Сам нашел ответ в справочнике, раздел "Приведение типов".
Если два значения объединяются бинарным оператором, то перед выполнением операции операнд младшего типа преобразовывается к более старшему типу в соответствии с приоритетом, указанным на схеме:
Но тип double по этой схеме самый старший. А у меня были оба int. Поэтому и результат целочисленный. Введение константы старшего типа (double, float), преобразовал все int к нему.
Век живи, - век учись, а в документацию заглядывай )))
У меня тоже вопрос к спецам. Я ранее не имел дело с индикаторами.
Возможно ли на графике в отдельном окне изобразить график баланса по мэйджику, но без привязки к барам?
То есть чтобы рисовалась кривая линия наподобие той, которая рисуется в тестере стратегий, чтобы она вся умещалась в одном окне.