Вопрос про ордера и MailSend

 

Господа, у меня к вам вопрос.

в кратце опишу ситуацию:

есть советник, который работает... открывает, закрывает, модифицирует ордера (порой доходит до 10 открытых ордеров).

Возможно ли в другом советнике (создать отдельно), который бы мониторил состояние ордеров?

я пытался найти список команд, которые показывали бы хотя какие ордера есть, но так и не нашёл.

т.е. я хочу допустим примерный смысл получить в новом советнике:

1. каждый тик мониторить ордера. список открытых ордеров

2.1. если появляется новый ордер (дата открытия текущий тик, таким образом отлавлю новые ордера) отослать информацию о нём на мыло (с отсылко и текстом проблем нет)

2.2. если закрывается (отсутствие ордера среди номеров, которые были "текщий тик - 1") отослать инф о закрытом на мыло

3. произошла модификация (значения ордера из "текущий тик-1" не равны значению "текущий тик") и так же отослать инф об изминении

Но вот команду которая работает со списком ордеров на аккаунте я не смогу найти, а они есть вообще? Или какие варианты могут быть?

Ведь есть же информация об аккаунте и т.д.

PS: скрипты и вставку в исходники не предлагать (доступа к исходникам советника нету)

 
Xalegi писал(а) >>

я пытался найти список команд, которые показывали бы хотя какие ордера есть, но так и не нашёл.

Где искали? Фактически в любом советнике есть контроль или учет ордеров. Поищете статью "Учет ордеров в большой программе" (кажется так)

Xalegi писал(а) >>

...

дата открытия текущий тик

...

"текущий тик-1" не равны значению "текущий тик"

Если выбросить из воспаленного воображения понятия типа "ордер открытый на текущем тике" все реализовывается элементарно... Ордер может открываться минуту, за эту минуту пройдет десяток тиков.

 

2Figar0 эмм.. хорошо.. ТИК это обобщённое значение тогда будет.. допустим не тик, а "5 минут"

по поводу Учёт ордеров и т.д. в самом советнике, где открываются ореда они может быть и учитываются.. но повторю.. мне нужно отдельно от советника в котором идёт работа с ордерами...

т.е. отдельный советник, который бы мониторил и работал с ордерами (не с их значениями а чтоб слал мне информацию об имзминениях по ордерам)

и ещё раз повторю.. ну нет у меня доступа к исходникам где включаются, выключаются ордера... я бы тогда вопрос не задавал.

 

ой... я палено...

2Фигаро.. огромнейшее спасибо, что ткнули меня прямо в точку:

мне нужна Terminal() !!!! вот вечером я и займусь ею... ыыыы

 
Xalegi писал(а) >>

2Figar0 эмм.. хорошо.. ТИК это обобщённое значение тогда будет.. допустим не тик, а "5 минут"

по поводу Учёт ордеров и т.д. в самом советнике, где открываются ореда они может быть и учитываются.. но повторю.. мне нужно отдельно от советника в котором идёт работа с ордерами...

т.е. отдельный советник, который бы мониторил и работал с ордерами (не с их значениями а чтоб слал мне информацию об имзминениях по ордерам)

и ещё раз повторю.. ну нет у меня доступа к исходникам где включаются, выключаются ордера... я бы тогда вопрос не задавал.

Ордера могут быть открыты хоть руками, хоть скриптами, хоть советниками без исходного кода, не имеет принципмального значения. Паралельно вешается на график советник которые мониторит, модифицирует, удаляет закрывает эти ордера... Главное самому не запутаться.

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

Прочитав две ниже приведенные статьи Вы сможете ответить на свои вопросы.

'Управление ордерами – это просто'

'Учёт ордеров в большой программе'

 

Блин, простецкие вопросы.

//+------------------------------------------------------------------+ 
int kolvo_poz;
int Kolvo_Orders()
{
   for(int cnt=0;cnt<OrdersTotal();cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderMagicNumber() == MAGIC )  
        {
         kolvo_poz=kolvo_poz+1;
        }
     }
return(kolvo_poz); 
}
//+------------------------------------------------------------------+

Вот простая функция которая определяет сколько в данный момент ордеров с определённым магиком открыто.

С её помощью легко организовать всё требуемое. ;)

 
//+------------------------------------------------------------------+ 
int kolvo_poz;
int Kolvo_Orders()
{
   kolvo_poz=0;
   for(int cnt=0;cnt<OrdersTotal();cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderMagicNumber() == MAGIC )  
        {
         kolvo_poz=kolvo_poz+1;
        }
     }
return(kolvo_poz); 
}
//+------------------------------------------------------------------+
Забыли обнулить kolvo_poz...
 
Все вышесказанное касается открытия и закрытия ордеров. Если Вы хотите отслеживать модификацию, Вам надо вести собственную базу открытых ордеров в советнике и постоянно ее сличать.
Причина обращения: