902
Ранее упоминалось, что каких-либо жёстких правил для составления алгоритмов
программ не существует. Вместе с тем, подавляющее большинство алгоритмов
предполагает принятие торговых решений в зависимости от текущего состояния ордеров.
В одних случаях, например, для открытия рыночного ордера требуется, чтобы на момент
осуществления торговой операции других рыночных ордеров не было. В других случаях,
для установки отложенного ордера необходимым условием может являться отсутствие
стоп-приказов на рыночном ордере. Известны также алгоритмы, предполагающие
установку одновременно двух разнонаправленных отложенных ордеров.
Чтобы удовлетворить требования той или иной тактики или стратегии к моменту
принятия торгового решения, необходимо знать текущее состояние: какие рыночные и
отложенные ордера имеются и какие у них характеристики. Для этого можно
использовать один из двух вариантов решения.
В соответствии с первым вариантом необходимый фрагмент программного кода (в
котором выполняется анализ ордеров) прописывается непосредственно в том месте
программы, где нужно выяснить текущий набор ордеров и их характеристики. Такое
решение технически осуществимо, но оказывается неэффективным, когда необходимо
внести изменения в алгоритм. В этом случае программист вынужден анализировать все
места программы, где анализируется состояние ордеров, и вносить изменения в каждом
месте. Второй, более эффективный вариант решения, заключается в том, чтобы один раз
создать универсальную функцию учёта ордеров и использовать её всякий раз, когда
требуется обновить информацию о текущем состоянии ордеров. Такое решение, с одной
стороны, позволяет значительно сократить код программы, а с другой стороны,
предоставляет программисту возможность использовать готовую функцию при
составлении других программ.
Для того чтобы правильно составить функцию учёта ордеров, необходимо решить, какие
параметры нужно учитывать. В большинстве случаев для принятия торговых решений
требуются значения следующих параметров:
общее количество ордеров;
количество ордеров каждого типа (например, сколько имеется ордеров Buy, сколько
SellStop, BuyLimit и т.д.);
все характеристики каждого из ордеров (номер ордера, StopLoss и TakeProfit ордера,
количество лотов и т.д.).