« Предыдущий пост | На главную страницу | Следующий пост »

Параметры функции OrderSend()

В прошлом выпуске я рассказал о функции OrderSend(). В этом выпуске я хотел бы остановиться на параметрах этой функции более подробно.

В параметре cmd мы передаем тип приказа:

КонстантаЗначениеОписание
OP_BUY0Открыть позицию на покупку
OP_SELL1Открыть позицию на продажу
OP_BUYLIMIT2Разместить отложенный ордер BUY LIMIT
OP_SELLLIMIT3Разместить отложенный ордер SELL LIMIT
OP_BUYSTOP4Разместить отложенный ордер BUY STOP
OP_SELLSTOP5Разместить отложенный ордер SELL STOP
Таблица 1. Возможные значения параметра cmd функции OrderSend()

Таким образом, для того, чтобы открыть позицию на продажу в качестве параметра cmd надо указать OP_SELL. Для открытия позиции на покупку - OP_BUY. Для установки отложенного ордера надо использовать значения OP_BUYLIMIT, OP_SELLLIMIT, OP_BUYSTOP или OP_SELLSTOP в зависимости от типа размещаемого отложенного ордера.

При открытии позиции в качестве параметра price надо использовать текущий Bid (если cmd равен OP_SELL) или текущий Ask (если cmd равен OP_BUY):

  • функция Bid возвращает текущий Bid по инструменту, к которому "прикреплен" эксперт;
  • функция Ask возвращает текущий Ask по инструменту, к которому "прикреплен" эксперт;
  • функция MarketInfo(string symbol, int type) c параметром type, равным MODE_BID или MODE_ASK, возвращает текущий Bid или Ask по инструменту, который передан ей в качестве параметра symbol.

Важно:
Ни в коем случае нельзя использовать цену, которую Вы рассчитали по какой-то формуле, или цену, которую Вы не привели (нормализовали) к тому количеству знаков после запятой, сколько должно быть у данного инструмента.

Для того, чтобы "нормализовать" цену, надо использовать функцию NormalizeDouble():

   double NormalizeDouble ( double value, int digits )

Эта функция округляет вещественное число value с точностью до digits знаков после запятой. Число цифр после десятичной точки должно быть в диапазоне 0 .. 8.

В случае использования "неправильной" цены в параметре price будут выданы следующие коды ошибок:

  • ERR_INVALID_PRICE (129) - если цена не была "нормализована" или такой цены вообще не было в потоке;
  • ERR_REQUOTE (138) - если цена сильно устарела (независимо от значения параметра slippage);

Если же цена устарела, но еще присутствует в потоке, то будет совершена сделка по текущей цене, если текущая цена находится в диапазоне price +/- slippage.

В следующем выпуске я расскажу об оставшихся параметрах функции OrderSend().



Все статьи по теме "Пишем советников для MetaTrader 4".

« Предыдущий пост | На главную страницу | Следующий пост »

Разместите свой комментарий по теме "Параметры функции OrderSend()"

Подписаться на мою рассылку



Размещение статьи "Параметры функции OrderSend()" на Вашем сайте

Размещение статьи "Параметры функции OrderSend()" на Вашем сайте возможно при условии выполнениия следующих условий:

  • Запрещается изменение оригинального текста без согласия автора - Андрея Ведихина.
  • Должен быть указан первоисточник. В случае публикации в интернете Вы должны разместить следующий код гиперссылки без изменений:
  • Запрещается коммерческое использование материалов, взятых с блога "Интернет-трейдинг на форекс / forex". Доступ к ним должен быть свободным, без взимания какой-либо платы, без обязательной регистрации и/или заполнения опросного листа (анкеты) и т.д.

В случае выполнения данных условий не требуется согласия автора блога "Интернет-трейдинг на форекс / forex" на размещение статьи "Параметры функции OrderSend()" на Вашем сайте.

Журнал FOREX MAGAZINE:



Архив номеров FOREX MAGAZINE
Котировки Forex:

Счетчики:

Авторские права © 2005-2006 Андрей Ведихин

Условия использования материалов блога "Интернет-трейдинг на форекс / forex"

Контакты с автором:


Движок сайта:
Movable Type 3.31