Условие равенства верно при неравных значениях. Почему? - страница 2

 
shev1404:

Я на свой вопрос не ответил к сожалению...

Здесь всё верно. Магик не меняется в функции.И еще момент, магики у меня не позиции Buy и Sell разделяют, а стратегии...

Если обратиться к моему первоначальному посту, то там я указал две функции:

1. 'OpenNextBuyPositionBySignal' - открытие позиций Buy по сигналу и соответственно в ней будет проверка 'IsSetBuy'. Позиция Buy может открыться как после Buy, так и после Sell. 

2. 'OpenNextSellPositionBySignal' - открытие позиций Sell по сигналу и соответственно в ней будет проверка 'IsSetSell'. Позиция Sell может открыться как после Sell, так и после Buy. 

Пожалуйста не спешите отвечать - перечитайте внимательно.

А главное это: "То есть что Вы делаете: Ваша ошибка в том, что Вы ПЕРЕЗАПИСЫВАЕТЕ переменную m_position!!!"

 
Vladimir Karputov:

Пожалуйста не спешите отвечать - перечитайте внимательно.

А главное это: "То есть что Вы делаете: Ваша ошибка в том, что Вы ПЕРЕЗАПИСЫВАЕТЕ переменную m_position!!!"

Я не спешу, я хочу понять... Вроде опыт многолетний, а с таким столкнулся впервые.

Каким образом я её ПЕРЕЗАПИСЫВАЮ? Я что-то вашу логику не улавливаю? Объясните? Я всего лишь в цикле к ней обращаюсь и получаю информацию. Основная проверка идет на соответствие магика, то есть позиции с другим магиком в переборе участвовать не должны. Так? Или я уже ничего не понимаю после вашего вывода.

 
shev1404:
А что брать за отправную точку?

Брать заранее известное состояние позиции в определенный момент времени или заранее известное отсутствие позиции, что, в принципе, одно и то же. Далее считать все самостоятельно.

 
shev1404:

Я не спешу, я хочу понять... Вроде опыт многолетний, а с таким столкнулся впервые.

Каким образом я её ПЕРЕЗАПИСЫВАЮ? Я что-то вашу логику не улавливаю? Объясните? Я всего лишь в цикле к ней обращаюсь и получаю информацию. Основная проверка идет на соответствие магика, то есть позиции с другим магиком в переборе участвовать не должны. Так? Или я уже ничего не понимаю после вашего вывода.

Итак первый обход цикла - тут пока всё верно, 

void OpenNextBuyPositionBySignal(CTrade &m_trade,long magic,double ExtDP,double iuv,double imv,int itp,int isl,double etp,double esl,double ev,double &rev,string numstr,ulong &last_pt)
  {
   for(int i=PositionsTotal()-1; i>=0; i--)
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
         if(m_position.Symbol()==m_symbol.Name())
           {
            Print("#2214! magic: ",magic);
            if(m_position.PositionType()==POSITION_TYPE_SELL  && m_position.Magic()==magic)
              {
               Print("#2214! magic: ",magic);
               Print("#2218! m_position.Magic(): ",m_position.Magic());
               if((m_position.Profit()+m_position.Swap()+m_position.Commission())<0)
                 {
                  if(IsSetBuy(magic,ExtDP)==true)
                    {

а вот тут уже идёт второй обход цикла - в результате Вы сравниваете теплое с квадратным.


Плюс Вы в своём советнике (даю 100%) разбрасываете magic направо и налево: "Этой позиции хочу и даю такой-то magic, а вот этой позиции - дам совсем другой magic).

 
Vladimir Karputov:

Итак первый обход цикла - тут пока всё верно, 

а вот тут уже идёт второй обход цикла - в результате Вы сравниваете теплое с квадратным.


Плюс Вы в своём советнике (даю 100%) разбрасываете magic направо и налево: "Этой позиции хочу и даю такой-то magic, а вот этой позиции - дам совсем другой magic).

Не соглашусь насчет направо и налево... 4 стратегии - 4 магика. Отдельно они работают хорошо, а когда включаем все стратегии, то в некоторые моменты (в том то и дело, что не во все), когда открываются дополнительные позиции, происходит этот не прятный сбой.

"а вот тут уже идёт второй обход цикла - в результате Вы сравниваете теплое с квадратным." - Согласен, что это может быть лишним, но магик не меняется? С чем зашел, с тем и должен выйти.

Хотя этот лишний цикл не лишний. Если я между однонаправленными позициями выдерживаю дистанцию, то в момент открытия противоположного направления мне дистанцию выдерживать не нужно(здесь идет проверка как раз по своему направлению).
 
shev1404:

Не соглашусь насчет направо и налево... 4 стратегии - 4 магика. Отдельно они работают хорошо, а когда включаем все стратегии, то в некоторые моменты (в том то и дело, что не во все), когда открываются дополнительные позиции, происходит этот не прятный сбой.

"а вот тут уже идёт второй обход цикла - в результате Вы сравниваете теплое с квадратным." - Согласен, что это может быть лишним, но магик не меняется? С чем зашел, с тем и должен выйти.

Хотя этот лишний цикл не лишний. Если я между однонаправленными позициями выдерживаю дистанцию, то в момент открытия противоположного направления мне дистанцию выдерживать не нужно(здесь идет проверка как раз по своему направлению).

Дайте пожалуйста весь код. Укажите на каком символе, таймфрейме, с какое по какое время провести тест. Укажите где возникает ошибка (дату). Я посмотрю более детально.

 
Vladimir Karputov:

Дайте пожалуйста весь код. Укажите на каком символе, таймфрейме, с какое по какое время провести тест. Укажите где возникает ошибка (дату). Я посмотрю более детально.

Извините, но не могу. Этот советник работает на реальном счете уже два месяца, но каждая стратегия в своем окне. Так проблем не возникает. А вот в кучу - беда.

Всё равно спасибо за помощь, появились некоторые соображения, попробую, отпишусь.

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