Сразу прошу извинения за невежество в коде, но уж как есть. Программирование постигал путем воображения так что не обессудьте, а с циклами так у меня всегда беда была. Помогите правильно написать код чтобы линия отображалась как надо, а сейчас она строится в виде прямой.
То есть вывод такой что цикл работает не верно...
// открывается вторичный цикл для подсчета данных за определенное количество баров
Добавь к n букву i
Добавь к n букву i
for (int i = 1000; i > 0; i--) // открывается основной цикл для буффера { for (int ni = 100; ni > 0; ni--) // открывается вторичный цикл для подсчета данных за определенное количество баров { x = x_buf + iClose(Symbol1,NULL,ni); x_buf = x; } line[i] = middle_x = x / 100; // вычисление средней линии и расчет буфферной линии }
так чтоли, не пойму чем это поможет...
Напомнило
n+i
Но и я также подумал сначала.
Напомнило
n+i
Но и я также подумал сначала.
Один хрен ни че не понял...
Напомнило
n+i
Но и я также подумал сначала.
Бога ради напиши по русски что надо сделать, я программист делитант и толком сам не понимаю что творю...
Бога ради напиши по русски что надо сделать, я программист делитант и толком сам не понимаю что творю...
Сначала поясните в чем задумка. Что должен делать сей алгоритм?
В вашем примере line[i] заполняете одними и теми же данными, а именно средним значением цен закрытия за последние 100 баров. По этому и рисуется прямая линия.
Сначала поясните в чем задумка. Что должен делать сей алгоритм?
В вашем примере line[i] заполняете одними и теми же данными, а именно средним значением цен закрытия за последние 100 баров. По этому и рисуется прямая линия.
Это код вычисления кси-квадрата по формуле Пирсона, но со смыслом чтобы в тестере стратегий тоже работал. И в тестере по он работает отлично, но в прошлое по циклу не рисует и линия т-критерия с нулевого бара будет отображаться не правильно, поэтому нужно под цикл пилить... Вот полный цикл доделал. Также возможно проблема в накоплении буферов цикла, но по другому я не умею...
for (int i = 200; i > 0; i--) { for (int n = CountedBars; n > 0; n--) { x = x_buf + iClose(Symbol1,NULL,n); x_buf = x; y = y_buf + iClose(Symbol2,NULL,n); y_buf = y; middle_x = x / CountedBars; middle_y = y / CountedBars; } for (int k = CountedBars; k > 0; k--) { MOxy = MOxy_buf + ((iClose(Symbol1,NULL,k) - middle_x) * (iClose(Symbol2,NULL,k) - middle_y)); MOxy_buf = MOxy; MOx2 = MOx_buf2 + ((iClose(Symbol1,NULL,k) - middle_x) * (iClose(Symbol1,NULL,k) - middle_x)); MOx_buf2 = MOx2; MOy2 = MOy_buf2 + ((iClose(Symbol2,NULL,k) - middle_y) * (iClose(Symbol2,NULL,k) - middle_y)); MOy_buf2 = MOy2; } pear_dub = MOxy / MathSqrt(MOx2 * MOy2); if(t_krit == 0) t_krit = pear_dub; t_krit = pear_dub * 0.01 + t_krit * (1 - 0.01); Pearson[i] = pear_dub; T_Kriteriy[i] = t_krit; // Если он больше значения корреляции, значит значение является статистически верным //--- x = 0; x_buf = 0; y = 0; y_buf = 0; MOxy = 0; MOxy_buf = 0; MOx2 = 0; MOx_buf2 = 0; MOy2 = 0; MOy_buf2 = 0; //--- }
Это код вычисления кси-квадрата по формуле Пирсона, но со смыслом чтобы в тестере стратегий тоже работал. И в тестере по он работает отлично, но в прошлое по циклу не рисует и линия т-критерия с нулевого бара будет отображаться не правильно, поэтому нужно под цикл пилить... Вот полный цикл доделал. Также возможно проблема в накоплении буферов цикла, но по другому я не умею...
Формулу Пирсона не знаю, не вникал. Но при беглом взгляде на код: у вас одна и таже, как в первом примере, ошибка. У вас 200 раз выполняются одни и те же вычисления на одних и тех же данных.
Я предполагаю, что вам надо сначала рассчитать i=200 на одной порции данных, например n=0 до 10, затем i=199 на другой порцией данных n=11 до 20 и так далее.
так чтоли, не пойму чем это поможет...
Так действительно ни чем.
Пробуй так. Если и так не то что надо , то..........
for (int i = 1000; i > 0; i--) // открывается основной цикл для буффера { for (int n = 100; n > 0; n--) // открывается вторичный цикл для подсчета данных за определенное количество баров { x = x_buf + iClose(Symbol1,NULL,n + i); x_buf = x; } line[i] = middle_x = x / 100; // расчет буфферной линии
Формулу Пирсона не знаю, не вникал. Но при беглом взгляде на код: у вас одна и таже, как в первом примере, ошибка. У вас 200 раз выполняются одни и те же вычисления на одних и тех же данных.
Я предполагаю, что вам надо сначала рассчитать i=200 на одной порции данных, например n=0 до 10, затем i=199 на другой порцией данных n=11 до 20 и так далее.
так и надо, для каждого бара из 200 нужны данные с предыдущих 100 баров по 5 направлениям, а по другому не умею.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Сразу прошу извинения за невежество в коде, но уж как есть. Программирование постигал путем воображения так что не обессудьте, а с циклами так у меня всегда беда была. Помогите правильно написать код чтобы линия отображалась как надо, а сейчас она строится в виде прямой.
То есть вывод такой что цикл работает не верно...