Счётчик частичных закрытий ордера

 

Возможно ли подсчитать сколько было частичных закрытий у ордера?

Например есть ордер 0.1 лотом и тикетом #1,
закрыли часть лота, осталось 0.07 лота и тикет стал #2
далее закрыли ещё часть лота, осталось 0.03 лота и тикет стал #3

Как узнать что у ордера было 3 частичных закрытия?

 
Попробуйте через
 
Yevhenii Levchenko #:
Попробуйте через

Как это применить в мт4 ?

 
forex2030 #:

Как это применить в мт4 ?

В mt4 же нет частичного закрытия...

 
Yevhenii Levchenko #:

В mt4 же нет частичного закрытия...

Есть, закрывать можно частями меньшего лота.
 
forex2030 #:
Есть, закрывать можно частями меньшего лота.
В mt4 нет частичного закрытия... Такое возможно в мт5, в неттинговом типе счета (а в хедж счете мт5 такого тоже нет)... Если вы открываете именно в мт4 встречные сделки - это локирование.
 

Через поле комментария. В нем будет ссылка на ордер, объем которого был отщипнут от текущего рабочего ордера. Вот пример ордера после частичного закрытия:


По этому тикету (после from #) в истории счета нужно найти ордер 626283964. К примеру, он будет таким:

А дальше начинается самое интересное. Нужно продолжить поиск в истории счета, чтобы найти ссылки на ордер 626283964. Действительно, имеется такая ссылка:

Повторяется такой же поиск, но уже для тикета 626283940. Если нет больше таких ордеров, то поиск окончен. 

Также еще можно ориентироваться на одинаковое время открытия ордеров. Это поможет остановить поиск, не доходя до самого начала истории счета.

 
Ihor Herasko #:

Через поле комментария. В нем будет ссылка на ордер, объем которого был отщипнут от текущего рабочего ордера. 

Но как посчитать сколько было частичных закрытий у начального ордера?

Если например взять переменную типа:

int res=0;
void start() 
{
if(было закрытие)  res++;
}

то после перезагрузки терминала счётчик будет =0

 
Yevhenii Levchenko #:

В mt4 же нет частичного закрытия...

в смысле?

я использую МТ4 и использую частичное закрытие

 
forex2030 #:

Но как посчитать сколько было частичных закрытий у начального ордера?

Если например взять переменную типа:

int res=0;
void start() 
{
if(было закрытие)  res++;
}

то после перезагрузки терминала счётчик будет =0

в комментарии указывается тикет частично закрытого ордера

анализируйте комментарий и все будет

 
forex2030 #:

Но как посчитать сколько было частичных закрытий у начального ордера?

Если например взять переменную типа:

int res=0;
void start() 
{
if(было закрытие)  res++;
}

то после перезагрузки терминала счётчик будет =0

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

Это делается либо в OnInit, либо в OnTick. В OnTick для однократности делается так:

void OnTick()
{
   static bool bIsFirst = true;
   if (bIsFirst)
   {
      CountOrders();                            // Это собственная функция расчета ордеров, закрытых частично
      bIsFirst = false;
   }
}