Добрый день. Функция MiniMaxOrderPrice(Symbol(), -1, OP_BUYSTOP, 1 )
корректно выдает тикер ордера, кот. в текущий момент находится дальше других ордеров от текущей цены.
Мне нужно удалить этот "дальний" ордер БАЙСТОП, если число выставленных ордеров превысит заданное значение .
Я делаю вот так:
//--------Удаление лишних ордеров--------------if( NumberOfOrders(NULL,OP_BUYSTOP,-1)>Количество_ордеров_ ){//если число ордеров больше заданногоfor(int v=0; v<OrdersTotal(); v++){if(OrderSelect(v,SELECT_BY_TICKET, MODE_TRADES)){// перебираем по тикетуif(OrderSymbol()==Symbol()){if(OrderType()==OP_BUYSTOP){выбираем байстопы
if(OrderTicket()== MiniMaxOrderPrice(Symbol(),-1,OP_BUYSTOP,1))//если тикет равен тикету самого дальнего ордера, - удаляем его{OrderDelete(OrderTicket(),Yellow);return(0);}}}}}}
Но к сож. удаляется (если удаляется) вовсе не самый дальний ордер.
Хотя в комменте и визуально на графике я вижу, что функция
MiniMaxOrderPrice(Symbol(), -1,OP_BUYSTOP,1)
возвращает тикет именно самого дальнего.
Но удаляется, почему то ближний. А потом, после нескольких удалений и вовсе начинаются ошибки удаления ордеров 4108 (неправильный тикет/неизвестный тикет.)
Видимо в код вкралась ошибка в 2-3 последних строках.... !
Добрый день. Функция MiniMaxOrderPrice(Symbol(), -1, OP_BUYSTOP, 1 )
корректно выдает тикер ордера, кот. в текущий момент находится дальше других ордеров от текущей цены.
Мне нужно удалить этот "дальний" ордер БАЙСТОП, если число выставленных ордеров превысит заданное значение .
Я делаю вот так:
Но к сож. удаляется (если удаляется) вовсе не самый дальний ордер.
Хотя в комменте и визуально на графике я вижу, что функция
возвращает тикет именно самого дальнего.
Но удаляется, почему то ближний. А потом, после нескольких удалений и вовсе начинаются ошибки удаления ордеров 4108 (неправильный тикет/неизвестный тикет.)
Видимо в код вкралась ошибка в 2-3 последних строках.... !
Пож. подскажите, где тут может быть ошибка ... ??
int DeleteTicket=MiniMaxOrderPrice(Symbol(),-1,OP_BUYSTOP,1);OrderSelect(DeleteTicket,SELECT_BY_TICKET);OrderDelete(OrderTicket(),Yellow);
Можно примерно так сделать, хотя не уверен что это лучший вариант
Подскажите пожалуйста такое дело. Если я открою кучу графиков и на каждый график закину советник, каждый из них будет работать или только тот что в активнов окне графика???
Да, - скорее всего так и будет. Будут работать все эксперты, во всех окнах.
Кроме того, посмотрите в парамеры эксперта.
Там должОн быть предусмотрен параметр Magic ИЛИ ЧТО НИБ. ПОХОЖЕЕ.
Т.е. это тот параметр, по которому эксперт отличает "чужие" ордера и позиции от своих !
Вот как сказал поэт ! -
Коль человек мне верен -- он мой брат, Неверный брат -- мой враг, будь проклят он стократ. Лекарство иногда опасней, чем отрава, Болезни иногда излечивает яд. (О.Х.)
Иначе говоря, На ордера, выставленные другим экспертом, с другим магиком, каждый конкретный эксперт не обращает внимания. А выставляет и "подхватывает для модификации" или закрывает только свои, с конкретно им же заданным магиком!
Интерестно, а если у каждого будет свой магик и выставить допустимую только одну позицию одновременно, эксперт будет открыавть позицию, если уже открыта позиция
Независимо от того есть ли в терминале открытые позиции по данному инструменту. Открытые вручную или другим экспертом.
Но если магик этих открытых позиций не совпадает с магиком конкретного рассматриваемого советника, то этот советник откроет свою позицию, со своим магиком! Невзирая на наличие других (с иным магиком) позиций по данному инструменту.
Добрый день. Функция MiniMaxOrderPrice(Symbol(), -1, OP_BUYSTOP, 1 )
корректно выдает тикер ордера, кот. в текущий момент находится дальше других ордеров от текущей цены.
Мне нужно удалить этот "дальний" ордер БАЙСТОП, если число выставленных ордеров превысит заданное значение .
Я делаю вот так:
Но к сож. удаляется (если удаляется) вовсе не самый дальний ордер.
Хотя в комменте и визуально на графике я вижу, что функция
возвращает тикет именно самого дальнего.Но удаляется, почему то ближний. А потом, после нескольких удалений и вовсе начинаются ошибки удаления ордеров 4108 (неправильный тикет/неизвестный тикет.)
Видимо в код вкралась ошибка в 2-3 последних строках.... !
Пож. подскажите, где тут может быть ошибка ... ??
Добрый день. Функция MiniMaxOrderPrice(Symbol(), -1, OP_BUYSTOP, 1 )
корректно выдает тикер ордера, кот. в текущий момент находится дальше других ордеров от текущей цены.
Мне нужно удалить этот "дальний" ордер БАЙСТОП, если число выставленных ордеров превысит заданное значение .
Я делаю вот так:
Но к сож. удаляется (если удаляется) вовсе не самый дальний ордер.
Хотя в комменте и визуально на графике я вижу, что функция
возвращает тикет именно самого дальнего.Но удаляется, почему то ближний. А потом, после нескольких удалений и вовсе начинаются ошибки удаления ордеров 4108 (неправильный тикет/неизвестный тикет.)
Видимо в код вкралась ошибка в 2-3 последних строках.... !
Пож. подскажите, где тут может быть ошибка ... ??
М-да...
Похоже сортировка по тикету в данной ситуации дело мутное и не совсем корректное.
Путается программа в тикетах! Задерживается с выходом. Удаляет ордера невпопад...
Попробую выставлять ордера с разными магиками. И потом сортировать по магику со всеми вытекающими..
Если не жалко, то могу весь код посмотреть, проверить. vinin@mail.ru
Ок! Благодарю. Сейчас уберу в коде сопли, причешу и пришлю.
Подскажите пожалуйста такое дело. Если я открою кучу графиков и на каждый график закину советник, каждый из них будет работать или только тот что в активнов окне графика???
Да, - скорее всего так и будет. Будут работать все эксперты, во всех окнах.
Кроме того, посмотрите в парамеры эксперта.
Там должОн быть предусмотрен параметр Magic ИЛИ ЧТО НИБ. ПОХОЖЕЕ.
Т.е. это тот параметр, по которому эксперт отличает "чужие" ордера и позиции от своих !
Вот как сказал поэт ! -
Коль человек мне верен -- он мой брат,
Неверный брат -- мой враг, будь проклят он стократ.
Лекарство иногда опасней, чем отрава,
Болезни иногда излечивает яд. (О.Х.)
Иначе говоря, На ордера, выставленные другим экспертом, с другим магиком, каждый конкретный эксперт не обращает внимания. А выставляет и "подхватывает для модификации" или закрывает только свои, с конкретно им же заданным магиком!
Вот так...
Интерестно, а если у каждого будет свой магик и выставить допустимую только одну позицию одновременно, эксперт будет открыавть позицию, если уже открыта позиция
другим советником?
Вопрос сформулирован туманно, но я его понял.
Ответ: - Да! - разумеется, будет открывать! Ибо сказано:
Кто в чаше жизни капелькой блеснет?
Ты или я? Блеснет и пропадет.
А виночерпий жизни, - миллионы
Лучистых брызг и пролил, и прольет.(0.Х.)
//-------------------------------------------------------------
Независимо от того есть ли в терминале открытые позиции по данному инструменту. Открытые вручную или другим экспертом.
Но если магик этих открытых позиций не совпадает с магиком конкретного рассматриваемого советника, то этот советник откроет свою позицию, со своим магиком! Невзирая на наличие других (с иным магиком) позиций по данному инструменту.