Отсортировать ордера по тикетам или ценам.
Отсортировать ордера по тикетам или ценам.
Тикет не могу выдернуть
Мне нужен тикет селловских ордеров ближайших к цене бай ордера
И закрытия я делаю по их тикету
Сделать массив структур: тикет, направление, цена.
И в нём смотреть бай и ордера вокруг него.
...или же создавать два массива Тикет_Бай иТикет_Селл.
Сделать массив структур: тикет, направление, цена.
И в нём смотреть бай и ордера вокруг него.
...или же создавать два массива Тикет_Бай иТикет_Селл.
Даже не соображу как это реализовать.
Вот ордер бай я могу выцепить любой из серии и знать его цену открытия, а рядом стоящие селл не знаю как извлечь их тикеты.
Требуется закрыть позиции селл из серии 1 или 2 (сигнал для закрытия есть и функция закрытия есть)
Как выбрать тикет этих позиций для закрытия если сетка строится не по порядку?
Нужен тикет двух позиций селл ближайших к цене открытия бай.
Выбирать все байки подряд
Далее по дельте плюс/минус 1/2 к шагу сетки найти ближние селлки к выбранному баю и закрыть
Будет цикл в цикле
У Вас закроются все селлки в итоге
Надо закрыть только 2 селл за бай ордером (там-сям)
Надо закрыть только 2 селл за бай ордером (там-сям)
Если закрыть селлки 1-ой серии, то одна из них принадлежит 2-ой серии.
Соответственно, если нет условия по закрытию ровно 2-х селоок, то закроется одна оставшаяся селлка во 2-ой серии
У Вас 3 селлки, т.е. закроются все.
Ужесточайте условия закрытия на свой вкус.
Но определение близлежащих к баю селлок одно и то же: (+/-)Step*1.5
Надо закрыть только 2 селл за бай ордером (там-сям)
Вот набросал процедуру поиска тикетов ордеров
// buyPrice - цена, выше которой нужно найти тикеты двух ближайших Sell ордеров void GetTicketsSell( double buyPrice, int& firstSellTicket, int& secondSellTicket ) { // массив для сортировки тикетов ордеров Sell в порядке возрастания цен открытия // в первом столбце - цена, во втором - тикет ордера double SortSell[ 30, 2]; int i, n_Sell; bool result; // заполнение массива тикетов ордеров на продажу n_Sell = 0; for ( i = 0; i < OrdersTotal(); i ++ ) { if ( OrderSelect( i, SELECT_BY_POS) ) if ( OrderSymbol() == Symbol() && OrderType() == OP_SELL ) { SortSell[ n_Sell, 0 ] = OrderOpenPrice(); SortSell[ n_Sell, 1 ] = OrderTicket(); n_Sell ++; } } // сортируем тикеты ордеров Sell в порядке возрастания цен открытия ArraySort( SortSell, n_Sell ) ; // поиск ближайших ордеров на продажу выше цены buyPrice result = false; for ( i = 0; i < n_Sell; i ++ ) { if ( buyPrice < SortSell[ i, 0 ] ) { result = true; break; // выходим, если нашли ближайший } } // обрабатываем результат поиска if ( result ) // найден, по крайней мере, один ордер { firstSellTicket = (int) SortSell[ i, 1 ]; // второй ордер существует, если i < n_Sell - 1 if ( i < n_Sell - 1 ) secondSellTicket = (int) SortSell[ i + 1, 1 ]; else secondSellTicket = -1; } else // выше цены нет ордеров на продажу { firstSellTicket = -1; secondSellTicket = -1; } }
Почему void GetTicketsSell?
Как мне узнать № ближайших тикетов?
Мне известна только цена открытия ордера бай
А почему так жестко массив задан?
double SortSell[ 30, 2];
ArrayResize можно применить в первом цикле
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Требуется закрыть позиции селл из серии 1 или 2 (сигнал для закрытия есть и функция закрытия есть)
Как выбрать тикет этих позиций для закрытия если сетка строится не по порядку?
Нужен тикет двух позиций селл ближайших к цене открытия бай.