я что, не в тот форум обратился?
"Джентельменов до хрена, местов нет" (с) Анекдот один.
времени нет....
то, что видно сразу - замени
то, что видно сразу - замени
i=Bars-0;
while ( i >= 0 )
{
....
i --;
}
на это:
int counted_bars=IndicatorCounted();
if ( counted_bars < 0 ) { Print( "counted_bars < 0 !" ); return(-1); }
if ( Bars < 100 ) { Print( "Bars < 100 !" ); return(-1); }
if ( counted_bars > 0 ) { counted_bars -- ; }
int limit = Bars - counted_bars;
for ( int i = limit; i >= 0; i -- )
{
...
}
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Есть задача - обозначить кружком цвета магенты фрактал, у кото есть общие бары с другим фракталом и красным, у которого нет. Приведённый ниже код работает. И даже всё правильно считает. До поры до времяни, а потом кружочки появляются как салют рандомом. Помогите найти ошибку. Т.е. мне кажется я даже вижу где она ( while(i>=0) ), но как исправить не знаю.
#property indicator_chart_window // an indicator is drawn in the main chart window #property indicator_buffers 2 #property indicator_color1 Red #property indicator_color2 Magenta #define SZ 5 double Arseny0[]; double Arseny1[]; double Fractal_bufer[SZ]; extern int CurPos = 0; int init() { // 129 - единица в кружочке // 130 - двойка в кружочке IndicatorDigits(Digits); SetIndexStyle(0,DRAW_ARROW); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(0,129); SetIndexArrow(1,130); SetIndexBuffer(0,Arseny0); SetIndexBuffer(1,Arseny1); ArrayInitialize(Fractal_bufer , 0.0000) ; return(0); } int start() { int i, k=0; double frac_a, frac_b; bool bool_a, bool_b; i=Bars-0; while(i>=0) { if(CurPos >4)CurPos=0; frac_a = iFractals(NULL,0,MODE_UPPER,i); frac_b = iFractals(NULL,0,MODE_LOWER,i); bool_a = frac_a != 0.00; bool_b = frac_b != 0.00; if(bool_a == 0.0 && bool_b != 0.00) Fractal_bufer[CurPos % SZ] = Low[i]-0.0005; else if(bool_a != 0.0 && bool_b == 0.00) Fractal_bufer[CurPos % SZ] = High[i]+0.0005; else if(bool_a != 0.0 && bool_b != 0.00) Fractal_bufer[CurPos % SZ] = High[i]+0.0005; else Fractal_bufer[CurPos % SZ] = 0.00; if( Fractal_bufer[(CurPos + 3) % SZ] != 0.0 && Fractal_bufer[(CurPos + 4) % SZ] == 0.0 && Fractal_bufer[(CurPos + 0) % SZ] == 0.0 && Fractal_bufer[(CurPos + 1) % SZ] == 0.0 && Fractal_bufer[(CurPos + 2) % SZ] == 0.0 ) { Arseny0[i+2] = Fractal_bufer[(CurPos + 3) % SZ]; } if( Fractal_bufer[(CurPos + 3) % SZ] != 0.0 && Fractal_bufer[(CurPos + 4) % SZ] != 0.0 || Fractal_bufer[(CurPos + 0) % SZ] != 0.0 || Fractal_bufer[(CurPos + 1) % SZ] != 0.0 || Fractal_bufer[(CurPos + 2) % SZ] != 0.0 ) { Arseny1[i+2] = Fractal_bufer[(CurPos + 3) % SZ]; } CurPos++; i--; } return(0); }с уважением, Сеня.