int iBarShift( | string symbol, int timeframe, datetime time, bool exact=false) |
Накидали, два раза "ку" :)
Кстати с моим циклом ничего не вышло
лимит при первом просчете выдавал 0, незнаю в чем ошибся
extern datetime draw_begin = D'2000.01.31 00:00'; int start() { int counted_bars=IndicatorCounted(); //---- last counted bar will be recounted if(counted_bars>0) counted_bars--; int limit; if(counted_bars==0) { for(int e = Bars-1; e >= 0; e--) { if(draw_begin < Time[e]) continue; else { limit = e-MA_Period; break; } } } else limit=Bars-counted_bars-1;Хотелось с этим бы тоже разобраться, найти свою ошибку
Всё намного проще, есть вот такая функция:
void SetIndexDrawBegin( int index, int begin)
Установка порядкового номера бара от начала данных, с которого должна начинаться отрисовка указанной линии индикатора. Отрисовка индикатора производится слева направо. Значения индикаторного массива, находящиеся левее указанного бара, не будут рисоваться на графике и отображаться в окне DataWindow. По умолчанию устанавливается значение 0.
ЗЫ: С кодом вы загнули :) Ничего не понял.
Взял код из стандартного MACD:
...
int limit;
int counted_bars=IndicatorCounted();
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
int begin_bar=iBarsShift(NULL,0,draw_begin); //добавил
if (limit>begin_bar) limit=begin_bar; //добавил
for(int i=0; i<limit; i++)
...
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Можно ли осуществить обратное, то есть при заданном времени опредилить номер бара.
Хочу встроить время начало отрисовки в индикатор
пока пришла толька одна мысль искать циклом