задача: соединить Close ТОЛЬКО БЫЧЬИХ баров. Как это сделать???

 

Уже 4 часа бьюсь над задачей соединить Close ТОЛЬКО БЫЧЬИХ баров. Как это сделать???

В виде линии на самом ценовом графике индикатор должен отрисовать линию, соединияющую цены Close у БЫЧЬИХ баров.

Все перепробовал, но каждый раз выходит не то что нужно.

PLS HELP!!!

 
4 часа? Тогда-вот: https://forum.mql4.com/ru/42300
 
vit-fx:

Уже 4 часа бьюсь над задачей соединить Close ТОЛЬКО БЫЧЬИХ баров. Как это сделать???

В виде линии на самом ценовом графике индикатор должен отрисовать линию, соединияющую цены Close у БЫЧЬИХ баров.

Все перепробовал, но каждый раз выходит не то что нужно.

PLS HELP!!!

Попробуйте сделать гениально. Возьмите код встроенной машки и добавьте туда исключение медвежьих свечей.

Затем набросьте на график с перидом 1 и по ценам Close и... наслаждайтесь результатом.

 
tara:
4 часа? Тогда-вот: https://forum.mql4.com/ru/42300


и что здесь должно было быть? ответа на мой вопрос там не нашел.
 
vit-fx:


и что здесь должно было быть? ответа на мой вопрос там не нашел.

Толстый намёк что место этому вопросу в той ветке по всей видимости :)
 

Бычий это или медвежий бар можно определить только после закрытия, значит такой индикатор будет отрисовываться с задержкой на 1 бар. Какой в этом смысл?

Можно посмотреть на результат четырехчасовых "мучений"?

Я лично вижу такой вариант:

for(int i=1; i<=limit; i++) 
if(Open[i]<Close[i]) ExtBuffer[i]=Close[i];
 
OnGoing:

Попробуйте сделать гениально. Возьмите код встроенной машки и добавьте туда исключение медвежьих свечей.

Затем набросьте на график с перидом 1 и по ценам Close и... наслаждайтесь результатом.

      if (Open[i] < Close[i]) out_0[i] = Close[i];

можно и так, только будет так же, как предлагаете Вы:

Close подряд идущих бычьих баров будут соединены линией, а если между ними появляется медвежий - сразу разрыв линии.

как избежать этого разрыва?

 
vit-fx:

можно и так, только будет так же, как предлагаете Вы:

Close подряд идущих бычьих баров будут соединены линией, а если между ними появляется медвежий - сразу разрыв линии.

как избежать этого разрыва?


А что вы хотели вместо разрыва? Появиться могут и 10 медвежьих баров, тренд поменялся, тогда как? И что конкретно должно получиться в итоге?
 
суть ошибки
 
int init()
{
   return(0);
}


int deinit()
{
   ObjectsDeleteAll( );
   return(0);
}


int start()
{
   int prevSh = Bars - 1;
   for( int sh = Bars - 1; sh > 0; sh -- )
   {
      datetime timePrev = Time[ prevSh ];
      double pricePrev = Close[ prevSh ];
      
      if( Close[ sh ] > Open[ sh ] )
      {
         string nm = "" + prevSh + ":" + sh;
         datetime timeNow = Time[ sh ];
         double priceNow = Close[ sh ];
         ObjectCreate( nm, OBJ_TREND, 0, timePrev, pricePrev, timeNow, priceNow );
         ObjectSet( nm, OBJPROP_RAY, false );
         ObjectSet( nm, OBJPROP_COLOR, Black );
                 
         prevSh = sh;
      }
   }
   return(0);
}//+------------------------------------------------------------------+

Оптимизацию по скорости расчетов сделаете сами. Это только набросок.

Нулевой бар не обрабатывается.

Первый "бычий" в истории - всегда самый ранний, с номером Bars - 1. Но это, думаю, вам не сильно помешает.

Да, еще: это советник!

 
а вот что должно быть
Причина обращения: