liza:
Не могу понять почему эта функция выставляет отложенные ордера через 3 дня после открытия ордера по рынку.
Удивительно что она вообще что-то открывает
Надо просто логику менять.
Вариант 1. 2. - рыночных ордеров нет открытых, отложенников тоже нет (такое возможно, первый запуск или после выходных)
Вариант 3. 4. - Рыночные ордера есть (но он уже есть)
Ордер по рынку уже есть, а отложенные открываются через 3 дня.
liza:
Ордер по рынку уже есть, а отложенные открываются через 3 дня.
Ордер по рынку уже есть, а отложенные открываются через 3 дня.
думаю, что эту функцию запускают через 3 дня после открытия рыночного ордера
она у меня должна запускаться сразу после открытия ордера по рынку -- это локирующая позиция.
liza:
она у меня должна запускаться сразу после открытия ордера по рынку -- это локирующая позиция.
она у меня должна запускаться сразу после открытия ордера по рынку -- это локирующая позиция.
Вы показали функцию. Функция где-то вызывается. Надо показать полностью код советника

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не могу понять почему эта функция выставляет отложенные ордера через 3 дня после открытия ордера по рынку.
void pol(int l, int t)
{
int actTotal = OrdersTotal(), b = 0, s = 0, bs = 0, ss = 0, bl = 0, sl = 0;
for(int i=0; i<actTotal;i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if( OrderSymbol()==Symbol() && OrderMagicNumber() == t)
{
if(OrderType() == OP_BUY) b++;
if(OrderType() == OP_SELL) s++;
if(OrderType() == OP_BUYSTOP) bs++;
if(OrderType() == OP_SELLSTOP) ss++;
}}}
if(b > 0 && s < 1 && b < 2)
{
if(ss < 1)
OrderSend(Symbol(),OP_SELLSTOP,Lots,Ask - l*Point,Slippage, NULL,lpo(t),"",t,0,Pink);
}
else if(s > 0 && b < 1 && s < 2)
{
if(bs < 1)
OrderSend(Symbol(),OP_BUYSTOP,Lots,Bid + l*Point,Slippage,NULL,lpo(t),"",t,0,Gray);
}
}