Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Может сделать обработку ордера сразу же после открытия, тогда и искать ничего не надо будет.
Что вы имеете ввиду?
Хоть скажите, это спомошью масивов делаеться?
Что вы имеете ввиду?
Имеется в виду, что один и тот же советник и открывает ордера, и выполняет над ним какую-то задачу.
Если только искать ордер и над ним издеваться, то скрипт будет выглядеть примерно так:
Имеется в виду, что один и тот же советник и открывает ордера, и выполняет над ним какую-то задачу.
Если только искать ордер и над ним издеваться, то скрипт будет выглядеть примерно так:
Огромное Спасибо . Теперь главное разобраться самому в этом коде до мельчайших деталей.
Может сделать обработку ордера сразу же после открытия,
Имеется в виду, что один и тот же советник и открывает ордера, и выполняет над ним какую-то задачу.
Если только искать ордер и над ним издеваться, то скрипт будет выглядеть примерно так:
//+------------------------------------------------------------------+
//| Order_act.mq4 |
//| |
//| |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""
int Order_array[200];
int Total=0;
int j,pos,count,order_tick,type;
bool found;
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
// создаем список ордеров (туда входят и открытые, и отложенные)
Total=OrdersTotal();
for(pos=0;pos<Total;pos++)
{
if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true)
{ Order_array[pos]=OrderTicket();}
}
// проверочная часть скрипта
int i=0;
while ( !IsStopped() )
{
count=OrdersTotal();
for(pos=0;pos<count;pos++)
{
if(OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)==true)
{
found=false;
order_tick=OrderTicket();
for (j=0;j<Total;j++)
{
if (order_tick==Order_array[j]) {found=true;}
}
if (!found)
{
type=OrderType();
if ((type==OP_BUY) || (type==OP_SELL))
{
Total++; // в случае,если есть новый открытый
Order_array[Total-1]=order_tick; //ордер - добавляем в список
Alert("Новый открытый ордер"); // и делаем с ним что хотим
}
}
}
// если планируется, что скрипт будет работать долго или открываемся часто
// удаляем из списка все закрытые ордера чтобы не было переполнения.
// А чтобы работало быстрее, количество записей можно уменьшить (лишь бы не превысило
// максимально возможного числа открытых и отложенных поз.
if (Total>190)
{
for (j=0;j<Total;j++)
{
if(OrderSelect(Order_array[j],SELECT_BY_TICKET)==true)
{
if (OrderCloseTime()!=0)
{
Alert("нашли закрытый в списке и удалили");
for (i=j+1;i<Total;i++) {Order_array[j]=Order_array[i];}
Total--;
}
}
}
}
Sleep(100);
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
А он будет учитывать ордера, которые открыты системой ?