Помогите написать Простейший индикатор - страница 2

 
Не получается символы связать. Помогите
 
Arsen_Syharev:
Не получается символы связать. Помогите
Показывайте, что не получается.
 
Vitalie Postolache:
Показывайте, что не получается.
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int i,limit;



   for(i=limit;i<rates_total ;i++)
     {
      //---- Upper Fractal
      if(Buy1>0 && Buy2>0)
         buf_1[0] = Low[0] - 10 * Point;
     
     }

   return(rates_total);
  }
Мудрил мудрил, так и не че и не получилось
 
Arsen_Syharev:
Мудрил мудрил, так и не че и не получилось

Не удивительно, значение лимита-то нигде не указано. Хот бы ноль было там, чтоли. Ну и в цикле в качестве  индекса массива надо уже не цифру одну и ту же указывать, а счётчик цикла, иначе какой в цикле смысл?

И индикаторы тоце в цикл запихивать надо, чтобы для каждого бара их значение считать.

Вот пример, если по-простому:

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   int limit=0;

    double Buy1=0;
    double Sell1=0;  

   for(int i=limit;i<rates_total-2 ;i++)
     {
       Buy1=iFractals(Symbol1,240,MODE_LOWER,i+2);
       Sell1=iFractals(Symbol1,240,MODE_UPPER,i+2);

       buf_1[i] = 0;
       buf_2[i] = 0;
       
       if(Buy1>0) buf_1[i] = Low[i] - 10 * Point;
       if(Sell1>0) buf_2[i] = High[i] + 10 * Point;
     }

   return(rates_total);
  }
 
Vitalie Postolache:

Не удивительно, значение лимита-то нигде не указано. Хот бы ноль было там, чтоли. Ну и в цикле в качестве  индекса массива надо уже не цифру одну и ту же указывать, а счётчик цикла, иначе какой в цикле смысл?

И индикаторы тоце в цикл запихивать надо, чтобы для каждого бара их значение считать.

Вот пример, если по-простому:

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
   int limit=0;

    double Buy1=0;
    double Buy2=0;  

   for(int i=limit;i<rates_total-2 ;i++)
     {
       Buy1=iFractals(Symbol1,240,MODE_LOWER,i+2);
       Buy2=iFractals(Symbol2,240,MODE_LOWER,i+2);

       buf_1[i] = 0;
       buf_2[i] = 0;
       
       if(Buy1>0 && Buy2>0 ) buf_1[i] = Low[i] - 10 * Point;
      
     }

   return(rates_total);
  }
При совпадении фракталов индикатор либо не показывает значение либо показывает неправильно.
 

Читайте, наконец, документацию по языку и разбирайте готовые примеры многовалютных индикаторов из кодобазы. Условие, написанное выше, обречено на несовпадение, искать верхний фрактал на одном символе с нижним фракталом на другом - это что-то с чем-то...

Да и Low[] никогда не покажет цену другого символа, для этого есть iLow(), как есть аналоги и для остальных цен (это я так понял, что под "неправильно" имелось в виду, что показание индикатора не соотносится с котировкой?).

 
Vitalie Postolache:

Читайте, наконец, документацию по языку и разбирайте готовые примеры многовалютных индикаторов из кодобазы. Условие, написанное выше, обречено на несовпадение, искать верхний фрактал на одном символе с нижним фракталом на другом - это что-то с чем-то...

Да и Low[] никогда не покажет цену другого символа, для этого есть iLow(), как есть аналоги и для остальных цен (это я так понял, что под "неправильно" имелось в виду, что показание индикатора не соотносится с котировкой?).

Я исправил второй символ, он тоже ищет верхний фрактал. Например в 8:00 появился верхний фрактал на первом и втором символе, а индикатор нарисовал стрелку на баре 12:00 либо вообще не нарисовал. А цена Low[] как я понимал нужна только для того чтобы обозначить где будет стрелка
 
Подскажите почему при появлении нового бара стрелки сдвигаются.
 
Arsen_Syharev:
Подскажите почему при появлении нового бара стрелки сдвигаются.

Потому-что на разных символах не одновременно новые бары открываются.

Попробуйте начать с написания  действительно простейшего индикатора, работающего на своем символе и таймфрейме. То, что вы здесь пытаетесь сделать не является простейшим индикатором.

 
Deema_5:

Добрый день. Напишите, пожалуйста, индикатор.

Подобие: LotRuler

Условие:  создание линий с задаваемым шагом от линии цены bid (ask) (вверх и вниз) выраженную в тиках изменения цены. По возможности добавьте и пользовательскую линию, как в индикаторе LotRuler - [PENDING], с именем, например: [TIKING]

Выводимые параметры: шаг, цвет, ширина (в тиках), положение на экране (может кому будет удобно иное размещение по оси х)

Применение: зрительное представление расстояний до нанесенных линий сопротивления, поддержки или любых других от текущей цены (либо от пользовательской линии). Упрощает анализ расстояний в окне терминала.

Спасибо!

<delete>
Тема называется "Помогите...", а не "Сделайте за меня". Начните сами писать, пари возникновении ошибок обращайтесь за помощью.
Причина обращения: