[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 333
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Спорить не буду! Попробуете - поймете в чем дело. Просто пишу для тех, кто сталкнется с этой проблеммой. ТАМ ОБРАТНОЕ ИНДЕКСИРОВАНИЕ. поэтому график перевернут во времени. Выкладываю текст индикатора. ПРАВИЛЬНЫЙ. Посмотрите на график очень интересные входы можно по нему обнаружить. Мне показалось он раньше и точнее входит чем МАСД
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
double Buf_0[1000],Bears_array[1000],Bulls_array[1000],Line1[1000],Line2[1000];
int init()
{
SetIndexBuffer(0,Buf_0);
SetIndexStyle (0,DRAW_HISTOGRAM,STYLE_SOLID,2);
return;
}
extern double PeriodPower=13;
extern double MA_Period=5;
int start()
{
int i=Bars-IndicatorCounted()-1;
while(i>=0)
{
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
ArraySetAsSeries(Bears_array,true); // Применено для синхронизации индексирования в функции iMAOnArray
ArraySetAsSeries(Bulls_array,true);
Line1[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_SMMA,i);
Line2[i]=iMAOnArray(Bulls_array,0,MA_Period,0,MODE_SMMA,i);
Buf_0[i]=(Line2[i]+Line1[i])/Point/10;
i--;
}
return;
}
Спорить не буду! Попробуете - поймете в чем дело. Просто пишу для тех, кто сталкнется с этой проблеммой. ТАМ ОБРАТНОЕ ИНДЕКСИРОВАНИЕ. поэтому график перевернут во времени. Выкладываю текст индикатора. ПРАВИЛЬНЫЙ. Посмотрите на график очень интересные входы можно по нему обнаружить. Мне показалось он раньше и точнее входит чем МАСД
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
double Buf_0[1000],Bears_array[1000],Bulls_array[1000],Line1[1000],Line2[1000];
int init()
{
SetIndexBuffer(0,Buf_0);
SetIndexStyle (0,DRAW_HISTOGRAM,STYLE_SOLID,2);
return;
}
extern double PeriodPower=13;
extern double MA_Period=5;
int start()
{
int i=Bars-IndicatorCounted()-1;
while(i>=0)
{
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
ArraySetAsSeries(Bears_array,true); // Применено для синхронизации индексирования в функции iMAOnArray
ArraySetAsSeries(Bulls_array,true);
Line1[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_SMMA,i);
Line2[i]=iMAOnArray(Bulls_array,0,MA_Period,0,MODE_SMMA,i);
Buf_0[i]=(Line2[i]+Line1[i])/Point/10;
i--;
}
return;
}
Можно изголяться, а можно нормально делать.
Индикатор может содержать до 8 буферов. Часть может использоваться для промежуточных расчетов.
Хотя если для себя и производительность не критична, то да, можно и так делать.
Можно изголяться, а можно нормально делать.
Индикатор может содержать до 8 буферов. Часть может использоваться для промежуточных расчетов.
Хотя если для себя и производительность не критична, то да, можно и так делать.
Понятие нормально относительно. Так же как и понятие правильно. Это уже больше философские вопросы. Я же старался реализовать алгоритм ОПТИМАЛЬНО. Чтобы индюк строился за ОДИН цикл. На мой взгляд это наименьшим образом загружает железо ПРИ ТОМ ЖЕ ДОСТОВЕРНОМ РЕЗУЛЬТАТЕ.
Ну а точ то буферов 8, а в военное время их число может достигать аж 54 с половиной, так это любой сапер знает. :-)
Понятие нормально относительно. Так же как и понятие правильно. Это уже больше философские вопросы. Я же старался реализовать алгоритм ОПТИМАЛЬНО. Чтобы индюк строился за ОДИН цикл. На мой взгляд это наименьшим образом загружает железо ПРИ ТОМ ЖЕ ДОСТОВЕРНОМ РЕЗУЛЬТАТЕ.
Ну а точ то буферов 8, а в военное время их число может достигать аж 54 с половиной, так это любой сапер знает. :-)
Можно сделать и за один цикл все, и количество буферов использовать по минимуму, но это уже совсем другой разговор.
Любая операция с массивом (не буфером) занимает продолжительное время. И потому проще и быстрее было сделать несколько циклов, чем все совать в один.
Быстрее в смысле работы индикатора
Можно сделать и за один цикл все, и количество буферов использовать по минимуму, но это уже совсем другой разговор.
Любая операция с массивом (не буфером) занимает продолжительное время. И потому проще и быстрее было сделать несколько циклов, чем все совать в один.
Быстрее в смысле работы индикатора
Уважаемый Vinin, Скажите а Вы пытались посмотреть что рисует предложенная Вами идея?
Можно сделать и за один цикл все, и количество буферов использовать по минимуму, но это уже совсем другой разговор.
Любая операция с массивом (не буфером) занимает продолжительное время. И потому проще и быстрее было сделать несколько циклов, чем все совать в один.
Быстрее в смысле работы индикатора
Уважаемый Vinin, Скажите а Вы пытались посмотреть что рисует предложенная Вами идея?
int start()
{
int i, limit=Bars-IndicatorCounted()-1;
for (i=limit;i>=0;i--){
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
}
for (i=limit;i>=0;i--){
MA_Bears[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_EMA,i);
MA_Bulls[i]=iMAOnArray(Bulls_array,100,MA_Period,0,MODE_SMA,i);
}
return;
}
Я понял, что в первом цикле вы формируете массив быков и медведей. Во втором цикле эти два массива сглаживаете. Тогда если так все шоколадно то просто посмотрите на результат этого сглаживания и все поймете.И сравните, если не трудно с ОРИГИНАЛЬНЫМИ Быками и Медведями ЗА ТОТ ЖЕ ПЕРИОД.
Посмотрите внимательно на СГЛАЖЕННЫЙ ГРАФИК
Я вообще говорил о подобном коде индикатора.
Согласен. Все нормально выводит и все правильно. Просто мне надо было сам вывод на экран
Buf_0[i]=(Line2[i]+Line1[i])/Point/10;
Делать в отдельном цикле. Ваш вариант мне более предпочтительней потому как цикл FOR больше по душе. Спасибо за помощь и внимание.