Уже 4 часа бьюсь над задачей соединить Close ТОЛЬКО БЫЧЬИХ баров. Как это сделать???
В виде линии на самом ценовом графике индикатор должен отрисовать линию, соединияющую цены Close у БЫЧЬИХ баров.
Все перепробовал, но каждый раз выходит не то что нужно.
PLS HELP!!!
Попробуйте сделать гениально. Возьмите код встроенной машки и добавьте туда исключение медвежьих свечей.
Затем набросьте на график с перидом 1 и по ценам Close и... наслаждайтесь результатом.
4 часа? Тогда-вот: https://forum.mql4.com/ru/42300
и что здесь должно было быть? ответа на мой вопрос там не нашел.
и что здесь должно было быть? ответа на мой вопрос там не нашел.
Толстый намёк что место этому вопросу в той ветке по всей видимости :)
Бычий это или медвежий бар можно определить только после закрытия, значит такой индикатор будет отрисовываться с задержкой на 1 бар. Какой в этом смысл?
Можно посмотреть на результат четырехчасовых "мучений"?
Я лично вижу такой вариант:
for(int i=1; i<=limit; i++)
if(Open[i]<Close[i]) ExtBuffer[i]=Close[i];
Попробуйте сделать гениально. Возьмите код встроенной машки и добавьте туда исключение медвежьих свечей.
Затем набросьте на график с перидом 1 и по ценам Close и... наслаждайтесь результатом.
if (Open[i] < Close[i]) out_0[i] = Close[i];
можно и так, только будет так же, как предлагаете Вы:
Close подряд идущих бычьих баров будут соединены линией, а если между ними появляется медвежий - сразу разрыв линии.
как избежать этого разрыва?
можно и так, только будет так же, как предлагаете Вы:
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. Но это, думаю, вам не сильно помешает.
Да, еще: это советник!
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Уже 4 часа бьюсь над задачей соединить Close ТОЛЬКО БЫЧЬИХ баров. Как это сделать???
В виде линии на самом ценовом графике индикатор должен отрисовать линию, соединияющую цены Close у БЫЧЬИХ баров.
Все перепробовал, но каждый раз выходит не то что нужно.
PLS HELP!!!