Помоги пожалуйста написать ф-цию, которая не давала бы выставлять в одном месте больше одного отложенного ордера.
Пробовал. Постоянно выполняется условие истина или ложь. Сравнивание ведется по первой попавшийся сделке. Как сделать, чтобы оно сначала проверило все существующие ордера, а потом только принимало решеныя.
Может выбирал не правильный оператор?
Сравнивать надо разность цен с некоторой дельтой иначе например при 5-знаке никогда не попадёшь на эту цену, но в районе 1-го 5-значного пункта будет 10 ордеров.
Как это реализовать?
Находил готовые ф-ции, но они никуда не годные. Например:
void SchOrders()
{
// для начала работы счётчиков мы их обнуляем
SchBuyStop=0; SMB=Symbol();
for(x=OrdersTotal()-1;x>=0;x--)
{//Начало цикла
if (OrderSelect(x, SELECT_BY_POS, MODE_TRADES))
{//начало работы с выбранным ордером
if(OrderType()==OP_BUYSTOP)
SchBuyStop++;
}//конец работы с выбранным ордером
}//Конец цикла
// Функция возвращает истину - есть ордер около текущей цены, ложь - нет ордера. // Без проверок на магик и символ и корректности выбора ордера, т.е. для тестера bool DoesOrderExist(double delta) { for(int i=OrdersTotal()-1; i>=0; i--) OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if (OrderType() == OP_SELLSTOP && MathAbs(OrderOpenPrice()-Bid) < delta*Point) // Этот ордер в пределах 5 пунктов от текущей цены return(true); if (OrderType() == OP_BUYSTOP && MathAbs(OrderOpenPrice()-Ask) < delta*Point) // Этот ордер в пределах 5 пунктов от текущей цены return(true); } return(false); }
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Пацаны, очень нада. Пожалуйста. Уже два месяца не могу закончить прогу.