double temp = CA[i+1]+K*(MA-CA[i+1]);
UpBuffer[i] = temp;
DnBuffer[i] = EMPTY_VALUE;
} else {
DnBuffer[i] = temp;
UpBuffer[i] = EMPTY_VALUE;
}
CA[i]= temp;
Да и кривая индюка может быть строго в горизонтальном положении, поэтому кое где возможно два подряд бара одинакового цвета
to Reshetov
Не ну этот индикатор меня устраивает мне интересно почему так происходит? И если так сделать, то имхо желтая линия будет поверх остальных, кстати тож вопрос?
Вот это да пол года не програмил, а теперь вспомнил, что значения указываются по барам. Спасибо Vinin
Замените
SetIndexStyle(0,DRAW_LINE); SetIndexStyle(1,DRAW_LINE); SetIndexStyle(2,DRAW_LINE);
на
SetIndexStyle(0,DRAW_LINE); SetIndexStyle(1,DRAW_ARROW); SetIndexStyle(2,DRAW_ARROW);
и все увидите.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Короче есть индикатор,
//---- indicators
SetIndexStyle(0,DRAW_LINE);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(0,CA);
SetIndexBuffer(1,UpBuffer);
SetIndexBuffer(2,DnBuffer);
SetIndexDrawBegin(0,Ma_Period);
SetIndexDrawBegin(1,Ma_Period);
SetIndexDrawBegin(2,Ma_Period);
его основное тело:
int start() {
double K, v1, v2, MA;
int counted_bars = IndicatorCounted();
if(counted_bars < 0) return(-1);
if (counted_bars > 0) counted_bars--;
int i, limit;
limit=Bars - counted_bars-1;
for(i=limit;i>=0;i--) {
математические вычисления и т.д.
CA[i]=CA[i+1]+K*(MA-CA[i+1]); // у индикатора 3 буфера: CA[i], DnBuffer[i] и UpBuffer[i] у каждого свой цвет:
СА[i] имеет цвет желтый (нейтральный), другие два красный (продажа) и зелёный (покупка).. Индикатор не перерисовывается!!!
DnBuffer[i] = EMPTY_VALUE; // здесь как я понимаю эти два буфера принимают значения равные 0 (если не прав поправте)
UpBuffer[i] = EMPTY_VALUE;
if (CA[i]-CA[i+1] > 0) UpBuffer[i] = CA[i]; //а здесь если условие выполнено, то кривая индикатора должна окраситься в соотвествии с цветом буфера
if (CA[i+1]-CA[i] > 0) DnBuffer[i] = CA[i];
но происходит немного другое при изменении направления кривой цвет индикатора на баре меняется на желтый (буфер СА) и только на следующем баре на цвет буфера (DnBuffer[i] или UpBuffer[i])
Сам индикатор отличный получился, менять его не надо, надо снимать с него показания, т.е. какого цвета линия. Так вот обращаюсь допустим к, буферу UpBuffer[i] через iCustom и
сравниваю == EMPTY_VALUE. И если равен то рисую кривую, тож через айкаст буфер СА[i]... Так вот на графике получаются разрывы. Ну картинка приведена ниже(второй)... Я думаю это одно и тож.
ПОМОГИТЕ РАЗОБРАТЬСЯ!!!!
}
return(0);
}