Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 2649
- Рейтинг:
- Опубликован:
- 2016.08.25 17:21
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Эта небольшая кроссплатформенная библиотека позволяет очень удобно и быстро сравнивать double-значения "цены".
Например, для выставления SellLimit иногда бывает полезно проверить, что цена открытия не ниже текущей Bid-цены.
// if (NormalizeDouble(OpenPrice, Digits()) >= NormalizeDouble(Bid, Digits())) // чаще всего использовали этот прием if (CP(OpenPrice) >= Bid) // теперь можно иначе OrderSend...;
Мало того, что это гораздо нагляднее и лаконичнее, чем стандартного вида проверка. Но еще и скорость выполнения выше в разы! Такое рациональное использование вычислительных ресурсов иногда дает заметное ускорение в тестере/оптимизаторе.
Также есть возможность задавать точность при сравнении double-значений. Например
if ((CP(Lots, 0.01) >= MinLot) && ((CP(Lots, 0.01) <= MaxLot))) // сравнение с точностью до второго знака после запятой OrderSend...;
Аналогично происходит работа со всем операторами сравнения (==, !=, >=, <=, >, <).
В библиотеке имеется более быстрый вариант реализации NormalizeDouble. Для ускорения выполнения стандартной функции достаточно в начале прописать
// Почти в четыре раза быстрее соответствующей стандартной функции (build 1395) #define NormalizeDouble PRICE_COMPARE::MyNormalizeDouble
В качестве примера приложен скрипт, который показывает результаты сравнения и вариантов нормализации для различных значений цены

Сглаженная разность между основной и сигнальной линиями осциллятора RVI в виде цветной гистограммы.

Торговая система, построенная на сигналах индикатора wlxBW5Zone.

Сглаженная разность между основной и сигнальной линиями Стохастического осциллятора в виде цветной гистограммы.

Индикатор XTrendlessOS с возможностью изменения таймфрейма индикатора во входных параметрах.