MQL4 - automated forex trading   /  

Форум

как заставить индиатор считать

К списку тем  | 1 2 Авторизуйтесь или зарегистрируйтесь, чтобы создать новую тему

avatar
40
logoped 15.05.2006 16:04 

Господа разработчики!

Как заставитьработать пользовательский индикатор в автономном режиме.

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

В обычном режиме с тиками он давно у меня работает без проблем.

Бесплатная Groupware для групп разработчиков

Установите систему групповой работы TeamWox и объедините усилия всех разработчиков. Это поможет вашей команде работать быстрее и организованнее. Благодаря TeamWox станет намного проще ставить задачи и контролировать их выполнение.


avatar
Модератор
33759
Rosh 15.05.2006 16:39 
Тут я упоминал подобные проблемы - http://www.alpari-idc.ru/ru/experts/articles/13.html

avatar
40
logoped 15.05.2006 17:09 

Roch спасибо. Я посмотрел, но это по моему не то.

Он не хочет работать именно в автономном режиме, т.е. когда тиков в принципе нет.

Да и соревноваться ему не с кем, он там один открывается. Тут какая-то системная коза.


avatar
Модератор
33759
Rosh 15.05.2006 17:17 
Так не бывает, либо выкладываешь код и мы видим что ты в теме, либо тихо сам с собою.
ЗЫ Индикатор, в отличие от совтеника в текущей реализации терминала не дожидается прихода тика для инициации, поэтому есть сомнения в компетенции.


avatar
40
logoped 15.05.2006 17:27 
Rosh писал (а):
Так не бывает, либо выкладываешь код и мы видим что ты в теме, либо тихо сам с собою.
ЗЫ Индикатор, в отличие от совтеника в текущей реализации терминала не дожидается прихода тика для инициации, поэтому есть сомнения в компетенции.

Я воспользовался твоей методой и расставил принты . Все по тексту программы проходит, а рисовать не хочет.

Она его прорисовала на экране только после перекомпиляции.

Даже при изменении параметров не перерисовывает. Точно системная коза.

Может кто из разработчиков откликнется.



avatar
40
logoped 15.05.2006 17:29 

Даже интересней. При изменении параметров она его стирает, а заново не рисует.


avatar
4815
SK. 15.05.2006 19:36 
Rosh писал (а):
ЗЫ Индикатор, в отличие от совтеника в текущей реализации терминала не дожидается прихода тика для инициации, поэтому есть сомнения в компетенции.

А как он..?

То есть, первый раз старт() запускается без тика, а потом потиково?


avatar
91
ustim 16.05.2006 09:22 
когда я прикрепляю какой-нибудь индюк к автономке, я всегда передергиваю внешние переменные через свойства индюка и он отрисовывается без проблем (правда иногда МТ не хотел рисовать (ну плющило его), тогда - перезагрузка терминала, и если в индюке боков нет, он обязательно отрисовывался. )

avatar
40
logoped 16.05.2006 14:01 

При перезагрузке МТ4 не отрисоваываетсяна экране, на изменение внешних перменных он не реагирует

Поставил в индикаторе промежуточные принты. Все проходит, все считает, нормально завершается, но не отрисовывается.

Этот же индикатор в реальном режиме работает без проблем.

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

При изменении внешних переменных рисунок стирается и не обновляется

Разработчики АУ... 100% ваш глюк.


avatar
Модератор
3646
Renat 16.05.2006 20:20 
Может все таки выложить полный код индикатора - сразу все станет ясно.
Без полного исходного кода сложно отвечать.

avatar
40
logoped 17.05.2006 14:57 
Renat писал (а):
Может все таки выложить полный код индикатора - сразу все станет ясно.
Без полного исходного кода сложно отвечать.


Я же говорю с кодом проблем нет , все заморочки только в автоносном режиме.

Там просто мусора много, но если без этого нельзя..

 
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_buffers 5
#property indicator_color1 Red
#property indicator_color2 Lime
#property indicator_color3 DeepSkyBlue
#property indicator_color4 BlueViolet
#property indicator_color5 Yellow
#property indicator_level1 50
#property indicator_level2 80
#property indicator_level3 20
//---- input parameters
 
extern int K_Red=13;
extern int D_Red=8;
extern int Slow_Red=3;
 
extern int K_Green=13;
extern int D_Green=8;
extern int Slow_Green=3;
 
extern int K_Blue=113;
extern int D_Blue=13;
extern int Slow_Blue=3;
 
extern int K_Violet=55;
extern int D_Violet=13;
extern int Slow_Violet=8;
 
extern int ZoomYellow=10;
extern int MaxBarsInFile = 0; // Count Bars for loading into file.
extern int DepthNet = 1; // глубина сети
 
//---- buffers
double M1Buffer[];
double m5Buffer[];
double m15Buffer[];
double m60Buffer[];
double sumBuffer[];
double sum15Buffer[];
//----
int draw_begin1=0;
int Count_Bars=0;
int draw_begin3=0;
int draw_begin4=0;
double i_m5; double i_m15; double i_m60; double zaym;
string name1="";
string name2="";
string name3="";
string name4="";
   int GoodFile=0;
 
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
  Print("Прошли инит");
//---- 2 additional buffers are used for counting.
   IndicatorBuffers(6);
//---- indicator lines
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0, M1Buffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1, m5Buffer);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2, m15Buffer);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3, m60Buffer);
   SetIndexStyle(4,DRAW_LINE);
   SetIndexBuffer(4, sumBuffer);
   SetIndexBuffer(5, sum15Buffer);
//   ArraySetAsSeries(M1Buffer,true);
//   ArraySetAsSeries(m5Buffer,true);
//   ArraySetAsSeries(m15Buffer,true);
//   ArraySetAsSeries(m60Buffer,true);
//---- name for DataWindow and indicator subwindow label
   name1="s"+K_Red+"."+Slow_Red;
   name2="m"+D_Green+"."+Slow_Green;
   name3="s"+K_Blue+"."+Slow_Blue;
   name4="s"+K_Violet+"."+Slow_Violet;
   string short_name="St_"+name1+"_"+name2+"_"+name3+"_"+name4;
   IndicatorShortName(short_name);
   SetIndexLabel(0,name1);
   SetIndexLabel(1,name2);
   SetIndexLabel(2,name3);
   SetIndexLabel(3,name4);
   SetIndexLabel(4,"Sum_dif");
//----
   draw_begin1=K_Violet;
//   draw_begin1=100;
   SetIndexDrawBegin(0,draw_begin1);
   SetIndexDrawBegin(1,draw_begin1);
   SetIndexDrawBegin(2,draw_begin1);
   SetIndexDrawBegin(3,draw_begin1);
   SetIndexDrawBegin(4,draw_begin1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Stochastic oscillator                                            |
//+------------------------------------------------------------------+
int start()
  {
   int    i,k;
   int    counted_bars=IndicatorCounted();
   double price;
  Print("Прошли старт");
//----
//   if (Period()<>"M1") return(0);
   if (Bars<=draw_begin1) return(0);
   if (Bars>=counted_bars) Count_Bars=counted_bars-draw_begin1; else Count_Bars=Bars-draw_begin1;
//---- initial zero
   if(counted_bars<1)
     {
      for(i=1;i<=Count_Bars;i++) 
         { M1Buffer[Bars-i] = 0; m5Buffer[Bars-i]=0;
            m15Buffer[Bars-i]=0; m60Buffer[Bars-i]=0;
         }
    }
   i=Count_Bars;i_m5=0;i_m15=0;i_m60=0;zaym=0;
   while(i>=0)
     {
      M1Buffer[i]=iStochastic( NULL,0,K_Red,D_Red,Slow_Red, MODE_SMMA,0,MODE_MAIN,i) ;
      m5Buffer[i]=iStochastic(NULL,0,K_Green,D_Green,Slow_Green,MODE_SMMA,0,MODE_SIGNAL,i) ;
      m15Buffer[i]=iStochastic(NULL,0,K_Blue,D_Blue,Slow_Blue,MODE_SMMA,0,MODE_MAIN,i) ;
      m60Buffer[i]=iStochastic(NULL,0,K_Violet,D_Violet,Slow_Violet,MODE_SMMA,0,MODE_SIGNAL,i) ;
      sum15Buffer[i]=(((sum15Buffer[i]-sum15Buffer[i+1])*10)+50
                                          +m15Buffer[i+1]+m15Buffer[i+2])/3;
      sumBuffer[i]= ((((m60Buffer[i]- m60Buffer[i+1]))*ZoomYellow)+50
                                           +sumBuffer[i+2]+sumBuffer[i+1])/3;
      i--;
      }
Print("Конец старта"); 
return(0); 
} 
//+------------------------------------------------------------------+

К списку тем   | 1 2  

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