Помогите с функцией TotalHistoryCenter() ....

 

Проблема такая :

В эксперте есть функция которая при срабатывании TP и SL позиции отслеживает её и закрывает все ордера.

Функцию выкладываю ниже:

//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия : 19.05.2008 |
//| Описание : Возвращает флаг закрытия последней позиции по тейку. |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| sy - наименование инструмента ("" - любой символ, |
//| NULL - текущий символ) |
//| op - операция (-1 - любая позиция) |
//| mn - MagicNumber (-1 - любой магик) |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByTake(string sy="", int op=-1, int mn=777) 
{
  datetime t;
  double ocp, otp;
  int dg, i, j=-1, k = OrdersHistoryTotal();

  if ((kol_buy()== 0)&&(kol_sell()== 0)) // Мои критерии срабатывания функции

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) 
  {
  if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) 
  {
  if (OrderSymbol()==sy || sy=="") 
  {
  if (OrderType()==OP_BUY || OrderType()==OP_SELL) 
  {
  if (op<0 || OrderType()==op) 
  {
  if (mn<0 || OrderMagicNumber()==mn) 
  {
  if (t<OrderCloseTime()) 
  {
  t=OrderCloseTime();
  j = i;
  }
  }
  }
  }
  }
  }
  }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) 
  {
  dg=MarketInfo(sy, MODE_DIGITS);
  if (dg==0) if (StringFind(OrderSymbol(), "")<0) dg=4; else dg=2;
  ocp=NormalizeDouble(OrderClosePrice(), dg);
  otp=NormalizeDouble(OrderTakeProfit(), dg);
  if ((ocp==otp)&&((kol_buy()== 8)||(kol_sell()== 8))) return(True); // Мои критерии срабатывания функции

  }
  return(False);
}
Как указано у меня есть свои критерии срабатывания данной функции.

Когда позиция с Magic 777 система закрывает по TP, данная функция отслеживает это действие и  возвращает значение TRUE в эксперт.

Но проблема в том что это значение не обнуляется в FALSE и постоянно остается в TRUE.

Каким образом можно сделать чтобы данная функция забывала последнюю закрытую позицию с Magic 777 по TP.

Помогите а то сам ни как понять не могу как это можно реализовать !!!

 
jonrus писал(а) >>

Проблема такая :

В эксперте есть функция которая при срабатывании TP и SL позиции отслеживает её и закрывает все ордера.


А зачем вообще изменять функцию KimIV, ведь Ваши критерии можно обработать вне функции?

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