Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Знаете ли вы, что MQL5 является объектно-ориентированным языком?
Artem Kolosov
194
Artem Kolosov 2015.10.26 01:03 

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

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

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

Vasyl Nosal
18222
Vasyl Nosal 2015.10.26 11:49  

Дык.

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

Artem Kolosov
194
Artem Kolosov 2015.10.26 18:16  

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

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

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

   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 2015.10.26 18:36  
varyar84:

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

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

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

Действительно, причем здесь статические переменные?
Сначала исправьте ошибки в коде, а потом уж и на форум можно вылезать.
Artem Kolosov
194
Artem Kolosov 2015.10.26 18:58  
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
18222
Vasyl Nosal 2015.10.26 20:29  
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 2015.10.29 11:05  
varyar84:

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

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

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