374
В данном примере предусмотрено следующее. Если пользователь установил некоторое
ненулевое значение для внешней переменной Lots, например, 0.5, то оно принимается как
количество лотов Lts при формировании торгового приказа открытия ордера. Если же для
внешней переменной Lots пользователь установил 0, то количество лотов Lts
определяется на основании переменной Prots (процент), суммы свободных средств и
условий, установленных брокером.
После вычисления значения Lts производится проверка. Если это значение оказывается
меньше минимально допустимого, то принимается минимально допустимое, если при
этом свободных средств не хватает, то после сообщения пользователю о недостатке
средств исполнение специальной функции start() заканчивается.
9.2.2.16 Открытие ордеров
Блок открытия ордеров (блок 8-9) также, как и блок закрытия, представляет бесконечный
цикл while. В заголовке первого оператора if вычисляются условия для открытия ордера
Buy: если по финансовому инструменту нет ордеров (переменная Total равна 0) и признак
для открытия ордера Buy является значимым ( Opn_B равно true ), то управление
передаётся в тело оператора if для открытия ордера. В этом случае после обновления
данных вычисляются заявленные цены для стоп-приказов.
Значения стоп-приказов изначально задаются пользователем во внешних переменных
StopLoss и TakeProfit. В общем случае пользователь может установить значение для этих
параметров меньшее, чем позволяет брокер. Кроме того, брокер в любой момент по
своему усмотрению может изменить минимально допустимую дистанцию (это нередко
случается при сильных движениях рынка, например, перед выходом важных новостей).
Поэтому перед каждым открытием ордера значения стоп-приказов должны быть
вычислены с учётом значений, установленных пользователем, а также минимально
допустимого значения, установленного брокером.
Для вычисления значений стоп-приказов вызывается пользовательская функция
New_Stop(); в качестве передаваемого параметра используется значение стоп-приказа,
заданное пользователем. В функции New_Stop() сначала вычисляется текущее значение
минимально допустимой дистанции. Если значение, заданное пользователем,
удовлетворяет требованиям брокера, то возвращается это значение. Если же оно
оказывается меньше допустимого, то новым значением стоп-приказа становится значение,