Скачать MetaTrader 5

Статические переменные в индикаторе

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Artem Kolosov
194
Artem Kolosov  

В индикаторе используются static  статические переменные, в результате индикатор работает только в реале, по истории не строит график.

Подскажите, можно как то сделать чтобы индикатор просчитывал значения на истории, хотя бы на ограниченном количестве баров?

Каким способом можно решить эту задачу?

Vasyl Nosal
18746
Vasyl Nosal  

Дык.

При чём здесь статические переменные? 

Artem Kolosov
194
Artem Kolosov  

При том что именно из за них так работает индикатор.

По другому реализовать у меня не получилось.

Вот пример кода.

   double st1=iStochastic(NULL,StochTF,StochKperiod,StochDperiod,StochSlowing,ModeAverage,1,MODE_MAIN,i+1); // Значение Stochastic на предыдущем баре

      static double StochOverbought=0;
      static double StochOversold=0;
      static double StochMedian=0;


      if(st1>80)
       {StochOverbought=1; StochOversold=1}
      if(st1<20)
       {StochOversold=1; StochOverbought=0}

      if(st1>50)
       {StochMedian=1;}
      else
       {StochMedian=0;}

      if(StochOverbought=1 && StochMedian=0) 
      {Buf_0[i]=1}

      if(StochOversold=1 && StochMedian=1) 
      {Buf_1[i]=1}


Viktor
228
Viktor  
varyar84:

В индикаторе используются static  статические переменные, в результате индикатор работает только в реале, по истории не строит график.

Подскажите, можно как то сделать чтобы индикатор просчитывал значения на истории, хотя бы на ограниченном количестве баров?

Каким способом можно решить эту задачу?

Действительно, причем здесь статические переменные?
Сначала исправьте ошибки в коде, а потом уж и на форум можно вылезать.
Artem Kolosov
194
Artem Kolosov  
prorab:
Действительно, причем здесь статические переменные?
Сначала исправьте ошибки в коде, а потом уж и на форум можно вылезать.

Я привел упрощенный пример моего кода.

Сори за ошибки, поторопился.

 

   double st1=iStochastic(NULL,StochTF,StochKperiod,StochDperiod,StochSlowing,ModeAverage,1,MODE_MAIN,i+1); // Значение Stochastic на предыдущем баре

      static double StochOverbought=0;
      static double StochOversold=0;
      static double StochMedian=0;


      if(st1>80)
       {StochOverbought=1; StochOversold=1;}
      if(st1<20)
       {StochOversold=1; StochOverbought=0;}

      if(st1>50)
       {StochMedian=1;}
      else
       {StochMedian=0;}

      if(StochOverbought==1 && StochMedian==0) 
      {Buf_0[i]=1;}

      if(StochOversold==1 && StochMedian==1) 
      {Buf_1[i]=1;}
Vasyl Nosal
18746
Vasyl Nosal  
varyar84:

Я привел упрощенный пример моего кода.

Сори за ошибки, поторопился.

 

 

 

1) 

if(st1>80)

 {StochOverbought=1; StochOversold=1;}

???

2)  

 static double StochOverbought=0;

   static double StochOversold=0;

 static double StochMedian=0;

Зачем заводить статик если ты их обнуляешь????????????? 

Viktor
228
Viktor  
varyar84:

Я привел упрощенный пример моего кода.

Сори за ошибки, поторопился.

В упрощенном примере одну ошибку (1) вам показали.
Чтобы найти остальные, надо видеть весь код. 
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий