Это по eurusd - 5 пунктов. А по usdjpy при этом 3 пункта дробная часть. А по некоторым парам (euraud) так и остались 4 пункта.
Тут необходимо делать опрос сервера на предмет спрэдов. Но спрэды плавающие. Причем плавают постоянно.
вообще с этим полный завал...
Я исхожу из того, что может быть 3 и 5.
В старом советнике меняю все упоминания Point на MyPoint, а затем
double MyPoint;
int init()
{
if(Point==0.001 || Point==0.00001) MyPoint=Point*10; else MyPoint=Point;
return(0);
}
Конечно грубовато, но как quick fix работает.
я пошел именно этим путем!
определяю Point один раз привожу его к 4 знакам ! и тогда код почти не меняется потом
Чтобы ничего не править нужно во всех расчетах использовать абсолютные величины спредов.
То есть 0.0003 или спред*поинт. Задавать всегда нужно именно величину спред*поинт или спред*поинт*10000.
Ни разу не возникало проблем ни при смене ДЦ ни при смене валютной пары.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
при спреде 3
на пятизначных котировках
((Ask - Bid)/Point) = 30.0, что мягко говоря не реально
при спреде = 3
определив Digits = 5
делаем дополнение
pPoint = Point;
if (Digits == 5 )
pPoint * 10;
((Ask - Bid)/pPoint) = 3
---
может есть более эффективные способы
а то править коды утомительно
аналогично