По приведенному коду свалял скрипт с заменой Alert() на Print() и получил в логе:
15:34:42 Compiling 'Yest'
15:34:42 Yest EURUSD,M15: loaded successfully
15:34:42 Yest EURUSD,M15: Point:0.00001
15:34:42 Yest EURUSD,M15: Размер свободных средств, необходимых для открытия 1 лота на покупку:287.29
15:34:42 Yest EURUSD,M15: Размер залоговых средств для поддержки открытых позиций в расчете на 1 лот:0
15:34:42 Yest EURUSD,M15: Начальные залоговые требования для 1 лота:0
15:34:42 Yest EURUSD,M15: Метод вычисления свопов. 0 - в пунктах; 1 - в базовой валюте инструмента; 2 - в процентах; 3 - в валюте залоговых средств:0
15:34:42 Yest EURUSD,M15: Максимальный размер лота:1
15:34:46 Yest EURUSD,M15: Шаг изменения размера лота:0.01
15:34:46 Yest EURUSD,M15: Минимальный размер лота:0.01
15:34:46 Yest EURUSD,M15: Размер свопа для коротких позиций:-1
15:34:46 Yest EURUSD,M15: Размер свопа для длинных позиций:-0.9
15:34:46 Yest EURUSD,M15: Минимальный шаг изменения цены инструмента в валюте котировки:0
15:34:46 Yest EURUSD,M15: Размер минимального изменения цены инструмента в валюте депозита:1
15:34:46 Yest EURUSD,M15: Размер контракта в базовой валюте инструмента:100000
15:34:46 Yest EURUSD,M15: Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах:50
15:34:46 Yest EURUSD,M15: Спрэд в пунктах:13
15:34:46 Yest EURUSD,M15: Количество цифр после десятичного точки в цене инструмента:5
15:34:46 Yest EURUSD,M15: Размер пункта в валюте котировки:0
15:34:46 Yest EURUSD,M15: Максимальная дневная цена:1.4376
15:34:46 Yest EURUSD,M15: Минимальная дневная цена:1.4325
Есть, конечно, прибабахи. Как Print(), так и Alert() не выводят пятый знак вещественных чисел.
Поэтому первый оператор заменен на
Print("Point:",DoubleToStr(Point,5));
Теперь по поводу пропуска данных. Все данные попадают в Log, но могут отсутствовать при выводе на экран Alert() или при отладочной печати Print()
Это, по-видимому, связано с ограничением на размер буфера вывода. Скорость записи в буфер многократно превосходит скорость вывода на экран.
Данные для вывода на экран берутся из буфера вывода. Как только буфер заполняется, он сбрасывается в Log и буфер очищается.
По приведенному коду свалял скрипт с заменой Alert() на Print() и получил в логе:
15:34:42 Compiling 'Yest'
15:34:42 Yest EURUSD,M15: loaded successfully
15:34:42 Yest EURUSD,M15: Point:0.00001
15:34:42 Yest EURUSD,M15: Размер свободных средств, необходимых для открытия 1 лота на покупку:287.29
15:34:42 Yest EURUSD,M15: Размер залоговых средств для поддержки открытых позиций в расчете на 1 лот:0
15:34:42 Yest EURUSD,M15: Начальные залоговые требования для 1 лота:0
15:34:42 Yest EURUSD,M15: Метод вычисления свопов. 0 - в пунктах; 1 - в базовой валюте инструмента; 2 - в процентах; 3 - в валюте залоговых средств:0
15:34:42 Yest EURUSD,M15: Максимальный размер лота:1
15:34:46 Yest EURUSD,M15: Шаг изменения размера лота:0.01
15:34:46 Yest EURUSD,M15: Минимальный размер лота:0.01
15:34:46 Yest EURUSD,M15: Размер свопа для коротких позиций:-1
15:34:46 Yest EURUSD,M15: Размер свопа для длинных позиций:-0.9
15:34:46 Yest EURUSD,M15: Минимальный шаг изменения цены инструмента в валюте котировки:0
15:34:46 Yest EURUSD,M15: Размер минимального изменения цены инструмента в валюте депозита:1
15:34:46 Yest EURUSD,M15: Размер контракта в базовой валюте инструмента:100000
15:34:46 Yest EURUSD,M15: Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах:50
15:34:46 Yest EURUSD,M15: Спрэд в пунктах:13
15:34:46 Yest EURUSD,M15: Количество цифр после десятичного точки в цене инструмента:5
15:34:46 Yest EURUSD,M15: Размер пункта в валюте котировки:0
15:34:46 Yest EURUSD,M15: Максимальная дневная цена:1.4376
15:34:46 Yest EURUSD,M15: Минимальная дневная цена:1.4325
Есть, конечно, прибабахи. Как Print(), так и Alert() не выводят пятый знак вещественных чисел.
Поэтому первый оператор заменен на
Print("Point:",DoubleToStr(Point,5));
Теперь по поводу пропуска данных. Все данные попадают в Log, но могут отсутствовать при выводе на экран Alert() или при отладочной печати Print()
Это, по-видимому, связано с ограничением на размер буфера вывода. Скорость записи в буфер многократно превосходит скорость вывода на экран.
Данные для вывода на экран берутся из буфера вывода. Как только буфер заполняется, он сбрасывается в Log и буфер очищается.
Какой же вывод? Можно ли в советнике безусловно "доверять" этим данным или всё же стоит их обязательно проверять, есть они или нет?
Какой же вывод? Можно ли в советнике безусловно "доверять" этим данным или всё же стоит их обязательно проверять, есть они или нет?
Пока с такими проблемами не встречался.
На этапе отладки проверять надо всегда, сколько не лениво.
Более мощного средства проверки, чем отладочная печать я еще не встречал.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Решил я значит устроить визуальную проверку, для того что бы проверить насколько правильно всё происходит и написал вот что:
Алерт вылетал с каждым новым тиком, иногда всё данные были в порядке, а проблема вот в чем, с регулярной периодичностью, данных либо просто не было, либо был 0. И причем речь идёт о важных показателях!!!
А что самое интересное, этот “советник” бы включен на РЕАЛЬНОМ счете.
А если бы он начал торговать используя “ошибочные” данные? Ужас…
Мысли, комментарии, может кто cталкивался с этим…