Можно попробовать функцию
Функция PriceOpenLastPos().
Эта функция возвращает цену открытия последней открытой позиций. Отбор учитываемых позиций задаётся внешними параметрами:
sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. Значение NULL означает текущий инструмент.
op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
//+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 19.02.2008 | //| Описание : Возвращает цену открытия последней открытой позиций. | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - любой символ, | //| NULL - текущий символ) | //| op - операция (-1 - любая позиция) | //| mn - MagicNumber (-1 - любой магик) | //+----------------------------------------------------------------------------+ double PriceOpenLastPos(string sy="", int op=-1, int mn=-1) { datetime t; double r=0; int i, k=OrdersTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (t<OrderOpenTime()) { t=OrderOpenTime(); r=OrderOpenPrice(); } } } } } } } return(r); }
Можно попробовать функцию
Функция PriceOpenLastPos().
Эта функция возвращает цену открытия последней открытой позиций. Отбор учитываемых позиций задаётся внешними параметрами:
sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. Значение NULL означает текущий инструмент.
op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
Ок! Спасибо попробую что-нибудь из этого выудить …
Но судя по названию эта функция «Возвращает цену открытия последней открытой позиций»!
А у меня 5 отложенных ордера какие-то удаляются, а какие-то остаются и мне нужно
знать, свободна ли цена 107.23 для установки отложника или там уже стоит… Если свободна то ставим если нет то не ставим…
PS – Цена 107.23 взята для примера а так цена движется, только расстояние до уровня установки отложенного ордера константа, ну как обычно…
А что просто написать, например так, нельзя? -
if(OrderSelect ...... { ... ... ... { if ( ! OrderOpenPrice( ) == 107.23 ) { ... ...
Можно попробовать функцию
Функция PriceOpenLastPos().
Лучше возьмите функцию ExistPosByPrice()
А что просто написать, например так, нельзя? -
Нет нельзя, потому что цена движется, а у меня дистанция установки отложника
только константа, а не цена установки отложника не константа! Т.е. если цена сейчас
107.23 то отложник ставиться на 30 пунктов от цены тогда это ровно
107.23 + 0.30 = 107.23 установлен отложенный ордер но в процессе работы
советника этот отложник или остается или удаляется так как цена или
подходит тогда он открывается или уходит тогда он удаляется… так вот
если он был удален а цена вернулась нужно проверить стоит он там или
нет(может не на столько далеко цена уходила и не был удален) что бы не
поставить 2-й отложник с такой же ценой такого же типа.
Full-Zero писал (а): Нет нельзя, потому что цена движется, а у меня дистанция установки отложника
только константа, а не цена установки отложника не константа! Т.е. если цена сейчас
107.23 то отложник ставиться на 30 пунктов от цены тогда это ровно
107.23 + 0.30 = 107.23 установлен отложенный ордер
"кто ясно мыслит, - тот ясно излагает!" (с)
Вообще не понял ничего! Вам бы в госдуме с трибуны выступать... Ну ладно... Попробуйте там с магиками "побаловаться". - для разных типов/видов ордеров (лимитные-стоповые-с рынка-длинные-короткие) предусмотрите разные магики. И потом выбирайте функциями И.КИМА и сравнивайте наличие/отсутствие.
"кто ясно мыслит, - тот ясно излагает!" (с)
Вообще не понял ничего! Вам бы в госдуме с трибуны выступать... Ну ладно... Попробуйте там с магиками "побаловаться". - для разных типов/видов ордеров (лимитные-стоповые-с рынка-длинные-короткие) предусмотрите разные магики. И потом выбирайте функциями И.КИМА и сравнивайте наличие/отсутствие.
Прикольно!!! Самому смешно!!!
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Подскажите, как написать код, что бы перед установкой отложенного ордера была проверка, а не стоит ли там уже такой ордер с такой же ценой ну, например по ене 107.23. Если стоит по этой цене 107.23 то ничего не делаем если нет, то ставим.
Обычно перебирают все ордера так
for ( int z =OrdersTotal - 1; z >= 0; z -- )
…
Далаее сравнимают меджик номбер
…
Далее символ ….
А как сюда вставить OrderOpenPrice не доходит…