При исполнении эксперта со временем заканчивается память и компьютер зависает, что делать?

 
Создал эксперта решил для повышения эффективности тестировать стратегии и торговать на всех парах. Эксперт использует пользовательский индикатор для принятия решений. Так как пар много он часто загружает индикатор, скорее всего в этом и проблема... загрузив его так пару тысяч раз естественно возникает проблема, есть ли решение чтобы эксперт торговал сразу на всех парах используя польз.индикаторы и при этом не сжерал память? пишу быстро пока не завис :)
 
а памяти-то сколько у компьютера? 128 мегабайт поди? Добавьте пару гиг...
 

О! Ким, коль застала вас тут -- прошёл слух, что в вашей библиотеке есть функция, позволяющая узнать: была последняя сделка в "+" или в "-". Вроде всё пробежала -- не нашла?..

 
Спасибо! :)))
 

Можно я,можно ?

//+----------------------------------------------------------------------------+
// Возвращает знак прибыли последней позиции                                   +  
//-----------------------------------------------------------------------------+
int GetProfitLastClosePos(string Sy="",int Magik=-1){
int i, count=0;double profit=0;
if(Sy=="0"){Sy=Symbol();}
  for(i=OrdersHistoryTotal()+1;i>=0;i--){
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){
      if(OrderSymbol()==Sy){
        if(OrderType()==0||OrderType()==1){
          if(OrderMagicNumber()==Magik||Magik==-1){
            if(OrderCloseTime()>count){
              count=OrderCloseTime();
              profit=OrderProfit();
            }
          }
        }
      }
    }
  }
if(profit>0){return(1);}  
if(profit<0){return(-1);}
return(0);
}
 
:)))
 
xrust писал (а) >>

Можно я,можно ?

тут есть подводный камень у подобных функций!

если в один момент времнни одновременно закрылось два ордера! 

один из которых  закрылся в + а другой в -,

чисто теоритически  возможно, в практике такое маловероятно!  но на ГЕПЕ возможно!

квант времени для оценки хотя бы минута ( если не пипсарь )

--

такую сделку  рассматривать не как два ордера а как один!  и суммарно выводить профит

---

обычно если неприятность не должна случится она случается  

(С) ЗАКОН МЕРФИ

 
YuraZ писал(а) >>

тут есть подводный камень у подобных функций!

если в один момент времнни одновременно закрылось два ордера!

один из которых закрылся в + а другой в -,

чисто теоритически возможно, в практике такое маловероятно! но на ГЕПЕ возможно!

квант времени для оценки хотя бы минута ( если не пипсарь )

--

такую сделку рассматривать не как два ордера а как один! и суммарно выводить профит

---

обычно если неприятность не должна случится она случается

(С) ЗАКОН МЕРФИ

В таком случае

//+----------------------------------------------------------------------------+
// Возвращает знак прибыли последней позиции                                   +  
//-----------------------------------------------------------------------------+
int GetProfitLastClosePos(string Sy="",int Magik=-1){
int i, count=0;double profit=0;
if(Sy=="0"){Sy=Symbol();}
  for(i=OrdersHistoryTotal()+1;i>=0;i--){
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){
      if(OrderSymbol()==Sy){
        if(OrderType()==0||OrderType()==1){
          if(OrderMagicNumber()==Magik||Magik==-1){
            if(OrderCloseTime()>=count){ Получаем суммарный прфит одновременно закрытых ордеров
              count=OrderCloseTime();
              profit=OrderProfit();
            }
          }
        }
      }
    }
  }
if(profit>0){return(1);}  
if(profit<0){return(-1);}
return(0);
}
 
YuraZ писал(а) >>
квант времени для оценки хотя бы минута
поправлю... секунда
 
Да секунда, а я ошибся в коде, суммарного не получим, надо подумать