Не работает функция определения профита(((

 

Всем доброго времени суток. Возился с советником, не мог понять в чем проблема, код получился уже достаточно большой. Решил вывести значения переменных на экран и понял что некоторые переменные не работают. Так я имею 2 одинаковые функции Profit_B() - определяет профит всех Buy позиций (она работает, но почему то выводит профит всех позиций Buy и Sell), и функция Profit_S() - то же самое с позициями Sell (но она не работает). И тут я начал тупить, не смог понять в чем дело. Чтобы проверить - написал простой советник открывающий без всяких манипуляций просто позиции Buy и Sell, в этом советнике функции тоже не работают... Прикрепляю код функций, может кто то знает в чем может быть дело((((     (В итоге переноса функция в другие советники, понял что проблема не в коде советника а именно в функциях, но не могу понять где)

double Profit_B()
  {
   double rez2 = 0;
   for(int j=PositionsTotal()-1; j>=0; j--)
      if(m_position.SelectByIndex(j))
      if (m_position.Type()==POSITION_TYPE_BUY)
        {        
            rez2=rez2+m_position.Profit();
        }
   return(NormalizeDouble(rez2,2));
  }
  
double Profit_S()
  {
   double rez3 = 0;
   for(int j=PositionsTotal()-1; j>=0; j--)
      if(m_position.SelectByIndex(j))
      if (m_position.Type()==POSITION_TYPE_SELL)
        {        
            rez3=rez3+m_position.Profit();
        }
    
   return(NormalizeDouble(rez3,2));
  }
 
Anton Novokhatskii:

Всем доброго времени суток. Возился с советником, не мог понять в чем проблема, код получился уже достаточно большой. Решил вывести значения переменных на экран и понял что некоторые переменные не работают. Так я имею 2 одинаковые функции Profit_B() - определяет профит всех Buy позиций (она работает, но почему то выводит профит всех позиций Buy и Sell), и функция Profit_S() - то же самое с позициями Sell (но она не работает). И тут я начал тупить, не смог понять в чем дело. Чтобы проверить - написал простой советник открывающий без всяких манипуляций просто позиции Buy и Sell, в этом советнике функции тоже не работают... Прикрепляю код функций, может кто то знает в чем может быть дело((((     (В итоге переноса функция в другие советники, понял что проблема не в коде советника а именно в функциях, но не могу понять где)

в результате работы функций Profit_B() - выводит профит всех позиций, а Profit_S() - выводит 0.0

 
Anton Novokhatskii:

Всем доброго времени суток. Возился с советником, не мог понять в чем проблема, код получился уже достаточно большой. Решил вывести значения переменных на экран и понял что некоторые переменные не работают. Так я имею 2 одинаковые функции Profit_B() - определяет профит всех Buy позиций (она работает, но почему то выводит профит всех позиций Buy и Sell), и функция Profit_S() - то же самое с позициями Sell (но она не работает). И тут я начал тупить, не смог понять в чем дело. Чтобы проверить - написал простой советник открывающий без всяких манипуляций просто позиции Buy и Sell, в этом советнике функции тоже не работают... Прикрепляю код функций, может кто то знает в чем может быть дело((((     (В итоге переноса функция в другие советники, понял что проблема не в коде советника а именно в функциях, но не могу понять где)

Непонятно, какого типа m_position? По логике кода должен быть тип CPositionInfo. Если так, то что это за метод - Type()? Такого метода нет в CPositionInfo. Для определения типа позиции используется метод PositionType().

 
Ihor Herasko #:

Непонятно, какого типа m_position? По логике кода должен быть тип CPositionInfo. Если так, то что это за метод - Type()? Такого метода нет в CPositionInfo. Для определения типа позиции используется метод PositionType().

Огромное спасибо))) Не знаю в какой момент я начал писать вместо PositionType() просто Type()  )))) Проблема однозначно решилась))))

Почему то только в этих функциях и есть эта ошибка))) 

 
Anton Novokhatskii #:

Огромное спасибо))) Не знаю в какой момент я начал писать вместо PositionType() просто Type()  )))) Проблема однозначно решилась))))

Почему то только в этих функциях и есть эта ошибка))) 

Просто интересно, как такой код компилировался? Или использовалось наследование от CPositionInfo?

 
Ihor Herasko #:

Просто интересно, как такой код компилировался? Или использовалось наследование от CPositionInfo?

да, использовалось наследование CPositionInfo)