889
}
} // Конец тела цикла
Легко заметить, что каждая из рассматриваемых функций (OrderTakeProfit (), OrderProfit()
и OrderLots() не имеет настраиваемых параметров, т.е. не предусматривает указание,
например, номера ордера, чтобы возвращаемое функцией значение соответствовало
характеристике конкретного ордера.
Чтобы вычислить искомые характеристики какого-то одного ордера (в данном случае -
заявленную цену одного из стоп-приказов, прибыль по ордеру и количество лотов),
сначала необходимо выделить этот ордер, сообщив таким способом программе, для какого
именно из ордеров будут производиться вычисления. Для этого перед вычислениями
характеристик ордера, нужно исполнить функцию OrderSelect() (см. Закрытие и удаление
ордеров). Торговые функции, исполненные после этого, будут возвращать значения,
соответствующие характеристикам выбранного ордера.
Немаловажное значение имеет правильная оценка программистом той или иной
характеристики ордера. Например, при решении задачи о порядке закрытия ордеров,
необходимо задаться какими-то критериями, чтобы вычислить, какой из ордеров
необходимо закрыть раньше, а какой после. Рассмотрим небольшую задачу.
Задача 40. В торговле имеются два ордера Buy, открытых по одному
финансовому инструменту. Первый ордер открыт по цене 1.2000, на 0.5
лота, второй ордер открыт по цене 1. 3000 на 1 лот. Текущая цена 1.3008.
Сработал торговый критерий закрытия ордеров типа Buy. Требуется
принять правильное решение, а именно, решить какой из ордеров нужно
закрыть первым, а какой - вторым.
Очевидно, что прибыль по первому ордеру составляет 108 пунктов, а по второму 8.
Несмотря на то, что первый ордер открыт на меньшее количество лотов, прибыль у него
больше, чем у второго, а именно, у первого $540, а у второго $80. На первый взгляд может
показаться, что сначала нужно закрыть первый ордер, т.к. у него больше прибыли. Однако
это решение является ошибочным. Для принятия правильного решения необходимо
рассмотреть возможный сценарий развития событий.