Что не так с советником ? - страница 2

 
Vitalii Ananev:

На каждом тике будет выводить в журнал код типа открытых позиций и отложенных ордеров если они есть. 

...

Более правильнее будет получать необходимую информацию об ордерах непосредственно из терминала именно в момент когда это необходимо. Если вы будет работать с информацией ранее сохраненной в массивах могут возникнуть разные  коллизии. Например ордер уже давно закрыт, а он еще присутствует в вашем массиве, или в результате переинициализации эксперта ваш массив окажется вообще пустой, а на самом деле есть открытые ордера или позиции.

Я похоже действительно какой-то старый способ использовал )

У меня замысел был таков :
 Если тип ордера ==0(т.е. открыт Buy) и есть критерий на закрытие покупки ,
то выдаем сообщение и закрываем .
и так со всеми ОТКРЫТЫМИ ордерами по очереди  ,
отложенные я пытался пропустить 

 
IlyaDemidenko:

Я похоже действительно какой-то старый способ использовал )

У меня замысел был таков :
 Если тип ордера ==0(т.е. открыт Buy) и есть критерий на закрытие покупки ,
то выдаем сообщение и закрываем .
и так со всеми ОТКРЫТЫМИ ордерами по очереди  ,
отложенные я пытался пропустить 

Выше я написал пример. Создайте в редакторе пустой шаблон советника и скопируйте туда этот код вместо if (сигнал на продажу) напишите условия закрытия позиций на покупку.

 

Вот универсальная функция закрытия всех позиций нужного типа

void CloseAllOrder(uint Cmd,int Slipage)
{
  for(int i=OrdersTotal()-1; i>=0; i--)         
  {
     if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) 
     {           { 
      if (OrderType()==(int)Cmd) 
      {
         double Pr = Ask;
         if (OrderType()==OP_BUY)  Pr=Bid;
         if (OrderType()==OP_SELL) Pr=Ask;
         if (OrderClose(OrderTicket(),OrderLots(),Pr,Slipage,clrNONE)) Print("Order closed ",OrderTicket());  
      }
     }
   }
}

Закрыть все покупки 

CloseAllOrder(OP_BUY,30);

Закрыть все продажи 

CloseAllOrder(OP_SELL,30);
Последний параметр в этой функции это допустимое проскальзывание в пунктах.
 
Vitalii Ananev:

Вот универсальная функция закрытия всех позиций нужного типа

Закрыть все покупки 

Закрыть все продажи 

Последний параметр в этой функции это допустимое проскальзывание в пунктах.

Спасибо )
Попробую переписать по новому все ..

 
IlyaDemidenko:

Попробую переписать по новому все ..

Помогу, замучили человека))


Файлы:
MA.mq4  58 kb
 
FXwin:

Помогу, замучили человека))


Эх. Он же только изучает. А получение сразу всего готового не способствует процессу обучения. :)

 
Vitalii Ananev:

Эх. Он же только изучает. А получение сразу всего готового не способствует процессу обучения. :)

Сравнит и хоть будет видеть где были глупости по коду))

 
FXwin:

Сравнит и хоть будет видеть где были глупости по коду))

FXwin Спасибо большое)
Потом посмотрю ,кода свой напишу ))

 
IlyaDemidenko:

FXwin Спасибо большое)
Потом посмотрю ,кода свой напишу ))

Спасибо это мнооого, тыщ пять как раз ;))

шутка, юмор)

Причина обращения: