Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 111
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Большое спасибо! Мне это было необходимо для сравнения характеристик свечей (больше, меньше и т.д.)Прикрутил -работает. Только не могу взять в толк как он так сравнивает тип данных string? или double to string не переводит число в строку? :-D
PS. В индикаторе это не пашет - только в скрипте... Проблема в том, что хотя в программе на графике характеристики бара передаются с 5 знаками после запятой, при вызове High[i] - вылезает только 4 знака после запятой.
Пишу:
Alert ("doubletostr High = ", DoubleToStr(High[1],5));
if (DoubleToStr(High[2],5)>(DoubleToStr(High[3],5)))
{
Alert ("Больше");
}
if (DoubleToStr(High[2],5)<(DoubleToStr(High[3],5)))
{
Alert ("Меньше");
}
Пашет, результат пишет с пятью знаками, больше/меньше считает. Проблема в том, что в индикаторе строковый массив не выведется на график. Поэтому...
...пишу:
Alert ("Normalizedouble High = ", NormalizeDouble(High[1],5));
Не пашет - результат - > 1,1234
Я не понимаю разработчиков - зачем так всё было усложнять? Почему если он на графике показывает столько знаков то и вызываемой функции он пять знаков не нацарапает? Может есть какой-то простой выход?
Всё ещё даже интересней:
переводим
Alert ("iFractals doubletostr= ", DoubleToStr(iFractals(0,0,MODE_UPPER,2),Digits));
Пишет: 1,32169 - ОК
Переводим обратно в числовое значение через StrToDouble:
Alert ("iFractals StrToDoubledoubletostr= ", StrToDouble(DoubleToStr(iFractals(0,0,MODE_UPPER,2),Digits)));
Результат: 1,3217
Здесь должен быть мем с Джеки-Чаном где он непонимает фишку.)
И что Алерт выдаёт по факту?
Написано 0.01 Но по факту 0...0100.
Всё ещё даже интересней:
переводим
Alert ("iFractals doubletostr= ", DoubleToStr(iFractals(0,0,MODE_UPPER,2),Digits));
Пишет: 1,32169 - ОК
Переводим обратно в числовое значение через StrToDouble:
Alert ("iFractals StrToDoubledoubletostr= ", StrToDouble(DoubleToStr(iFractals(0,0,MODE_UPPER,2),Digits)));
Результат: 1,3217
Здесь должен быть мем с Джеки-Чаном где он непонимает фишку.)
DoubleToStr() используется для вывода сообщений с нужной вам точностью. Стандартный Print(), Alert(), итд, выводят с точностью 4 знака.
Когда хотите видеть число с нужной вам точностью, вот тогда и используйте DoubleToStr(), а не в расчётах.
Не нужно ничего переводить туда-сюда ... ;)
Написано 0.01 Но по факту 0...0100.
Вывод то 100 * point = 100 * 0.00001 = 0.001пп (если для пятизнака)
Выше значение lBUY было изменено. Поэтому, как я вижу, условие:
Не выполнится. И, соответственно, значение lBUY останется прежним.
Переменная j должна быть явно инициализирована в самом начале функции отрицательным значением. Попробуйте. Дальше не смотрел пока ничего.
Хм. Пока что тоже самое. Вот что имеем:
DoubleToStr() используется для вывода сообщений с нужной вам точностью. Стандартный Print(), Alert(), итд, выводят с точностью 4 знака.
Когда хотите видеть число с нужной вам точностью, вот тогда и используйте DoubleToStr(), а не в расчётах.
Не нужно ничего переводить туда-сюда ... ;)
Это понятно... теперь...) Но вся соль в том что мне нужно как то выковырять пятую цифру для расчётов(
И если DoubleToStr() для этого не годится то тогда вообще в этом языке не предусмотрена такая возможность? оО Это очень странно. Неужели разработчики этого не предусмотрели?
Хм. Пока что тоже самое. Вот что имеем:
Это понятно... теперь...) Но вся соль в том что мне нужно как то выковырять пятую цифру для расчётов(
И если DoubleToStr() для этого не годится то тогда вообще в этом языке не предусмотрена такая возможность? оО Это очень странно. Неужели разработчики этого не предусмотрели?
Господа программисты! Пожалуйста подскажите, как объединить советника с индикатором?
К примеру взят простой бот mo_bidir.mq4, который торгует своим алгоритмом, и мне нужно что бы он продолжал открывать сделки по своему алгоритму но после сигнала 3х МА -
Например по сигналу - Three Moving Averages:
FastEMA>MediumEMA>SlowEMA (тренд вверх) - бот покупает
FastEMA<MediumEMA<SlowEMA (тренд вниз) – бот продаёт
Inp_Signal_ThreeEMA_FastPeriod = 8;
Inp_Signal_ThreeEMA_MediumPeriod = 38;
Inp_Signal_ThreeEMA_SlowPeriod = 48;
Причем мне нужно чтобы советник продолжал торговать на пятиминутке, а индикатор подавал сигналы с дневного или 4х часового таймфрейма, ну и что бы можно было менять таймфреймы в настройках бота.