на инициализации такое возможно. мне кажется, подобный вопрос уже обсуждали
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
//+------------------------------------------------------------------+ //| fAMA.mq4 | //| Copyright © 2005, Profi_R | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, Profi_R" #property link "rvm_fam@fromru.com" #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Black //---- input parameters extern int Range=8; extern int FastMA=2; extern int SlowMA=20; extern int filter=60; extern int n=6; extern int h=20; //---- buffers double fAMA[]; double mAMA[]; int d_b;//объявление переменной short_name целочисленного типа double k1,k2; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { int cb; string short_name; //объявление переменной short_name типа "строковый" //---- indicators IndicatorBuffers(2); SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,fAMA); SetIndexBuffer(1,mAMA); //---- name for DataWindow and indicator subwindow label //переменной short_name присваиваем строковое значение равное выражению short_name="fAMA("+Range+","+FastMA+","+SlowMA+","+filter+","+n+","+h+")"; //для отображения на графике присвоим индикатору краткое наименование IndicatorShortName(short_name); SetIndexLabel(0,short_name);//Установим метку для буфера //---- if(filter>0) d_b=SlowMA; else d_b=Range; SetIndexDrawBegin(0,d_b); //установка начальной точки прорисовки для 0 буфера //---- if(Bars<=d_b) { Alert("Недостаточно данных!!! ",Bars,";",d_b,";",Range); return(0); } k1=2.0/(SlowMA+1); k2=2.0/(FastMA+1)-k1; /* for(cb=Bars-1;cb>=Bars-d_b;cb++) { if(cb>=Bars-Range) { mAMA[Bars-Range]=Close[Bars-Range]; } else { CycleAMA(cb); } }*/ //Print(Bars,";",d_b,";",k1,";",k2,";",Range); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { //---- return(0); }выяснилось следующее: бросаем индикатор на график вроде все ok, нажимаем в МЕ F5, срабатывает алерт
. Почему это Bars стало вдруг равно 0. С чем связана такая реакция? Условия для срабатывания алерта отсутствуют баров на графике предостаточно. Попутно - как видно на картинке, окно "Алерта".
некорректно сохраняется "Активная рабочая область". Ссори нужно было обрезать.