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

 
forex2030 #:

Считает хорошо, но на втором ордере всё зависло в тестере.

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

 
Ihor Herasko #:

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

Ордер 1
Первое закрытие тикет ордера 2: from #2
Второе закрытие: from #3
Третье закрытие: from #4
Закрытие БУ тикет ордера 5

Ордер 2
Первое закрытие тикет ордера 7: from #7
Второе закрытие: from #8
Закрытие БУ: to #3



 

Алло - учите ликбез - АЛЛО!!!!!!!!!!!!!!!

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

это элементарные вещи

вот кроется бай 3 контракта - по 1 контракту селлами - частично! ПО 1 КОНТРАКТУ КРОЕТСЯ БАЙ 3 КОНТРАКТА СЕЛЛАМИ НА ОТКАТАХ ПО  1 КОНТРАКТУ РОБОТОМ.


 
Ihor Herasko #:

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

Спасибо, всё чисто работает и отлично считает и не подвисает
без этого:

void OnStart()
{
   for (int i = OrdersTotal() - 1; i >= 0; --i)
   {
      if (!OrderSelect(i, SELECT_BY_POS))
         continue;
         
      int nTicket = OrderTicket();
      double fClosedVolume = 0;
      int nCnt = GetCountOfPartiallyClosure(fClosedVolume);
      if (nCnt > 0)
         Print("Order #", nTicket, ", count of partially closure: ", nCnt, ", closed volume: ", DoubleToString(fClosedVolume, 2));         
   }
}
 
forex2030 #:

Спасибо, всё чисто работает и отлично считает и не подвисает
без этого:

Ничего не понял ))

Без чего оно работает? Кроме того, это ведь скрипт. А в тестере скрипт в принципе не запускается.

 
Ihor Herasko #:

Без чего оно работает? Кроме того, это ведь скрипт. А в тестере скрипт в принципе не запускается.

В коде советника проверяю и всё работает отлично))

void OnStart()
{
Print(" Закрытий было =  ",PartCL());
}
//+----------------------------------------------------------+ 
//| Счётчик частичного закрытия                              | 
//+----------------------------------------------------------+ 
int PartCL()
{
   string CommOrd=OrderComment();
   int tik=StringFind(CommOrd,"from #");
   if (tik<0) return(0);
      
   datetime tOrdOP=OrderOpenTime();
   int TikStart=int(StringToInteger(StringSubstr(CommOrd,tik+6)));
   if(!OrderSelect(TikStart,SELECT_BY_TICKET,MODE_HISTORY)) return(1);

   double LtCL=OrderLots();
   int res=1;
   for(i=OrdersHistoryTotal()-1; i>=0; i--){
      if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
      if(TikStart==OrderTicket()) continue;
      if(tOrdOP>OrderCloseTime()) return(res);
      
      CommOrd=OrderComment();
      tik=StringFind(CommOrd,"to #");
      if(tik<0) continue;

      int TikNew=int(StringToInteger(StringSubstr(CommOrd,tik+4)));
      if (TikNew==TikStart){
          res++;
          TikStart=OrderTicket();
          LtCL+=OrderLots();}}
return(res);}