Скачать MetaTrader 5

не работает индикатор в mt4

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

Здравствуйте, при установке индикатора на платформу мт4 он не работает,  устанавливал индикатор в сам терминал: Файл/Открыть каталог данных/папка MQL4/индикаторы, затем перегружал мт4 индикатор на графике отображает пустое окно. Помогите пожалуйста.

 

Vladimir Karputov
Модератор
71895
Vladimir Karputov  
richard13:

Здравствуйте, при установке индикатора на платформу мт4 он не работает,  устанавливал индикатор в сам терминал: Файл/Открыть каталог данных/папка MQL4/индикаторы, затем перегружал мт4 индикатор на графике отображает пустое окно. Помогите пожалуйста.

 


Что такое "... отображает пустое окно..."? Вставьте, пожалуйста, картинку.
Pavel Monogarov
211
Pavel Monogarov  
Картинку вставил ниже графика окно индикатора
Файлы:
obraz.png 15 kb
Vladimir Karputov
Модератор
71895
Vladimir Karputov  
richard13:
Картинку вставил ниже графика окно индикатора

Неправильный алгоритм индикатора. Нужно вставить в индикатор

#property strict

Нужно проверить вкладку терминала "Эксперты" - а нет ли в ней сообщений об ошибках

Pavel Monogarov
211
Pavel Monogarov  

а где вставить он у меня на мт4 альпари работал а на инстафорекс перестал

Vladimir Karputov
Модератор
71895
Vladimir Karputov  
richard13:

а где вставить он у меня мт4 альпари работал а на инстафорекс перестал

Код нужно редактировать в редакторе кода - MetaEditor'e.
Pavel Monogarov
211
Pavel Monogarov  

во вкладке эксперты сообщение на этот индикатор:

 2015.12.28 23:58:18.307 MACD-2_1 USDCHF,H4: initialized


Vladimir Karputov
Модератор
71895
Vladimir Karputov  
richard13:

во вкладке эксперты сообщение на этот индикатор:

 2015.12.28 23:58:18.307 MACD-2_1 USDCHF,H4: initialized


Нужно внести изменение в код индикатора и

#property strict
должно помочь.
Pavel Monogarov
211
Pavel Monogarov  
Karputov Vladimir:

Нужно внести изменение в код индикатора и

должно помочь.

вставил код в этом месте

 

#property  indicator_separate_window
#property strict

 выдает ошибку

 2015.12.29 18:54:32.507 cannot open file 'C:\Users\admin\AppData\Roaming\MetaQuotes\Terminal\580D3FDDA6592DA6F2939EE43EEDCE3E\MQL4\indicators\3color_MACD.ex4' [2]

полностью код 

//+------------------------------------------------------------------+
//|                                                  3color_MACD.mq4 |
//|               MACD:  Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//|             3color:  Copyright © 2005,          Nikolay Kositsin |
//+------------------------------------------------------------------+
#property  copyright "Copyright © 2004, MetaQuotes Software Corp."
#property  link      "http://www.metaquotes.net/"
//---- indicator settings
#property  indicator_separate_window
#property strict
#property  indicator_buffers 5
#property  indicator_color1  MediumBlue
#property  indicator_color2  Red
#property  indicator_color3  Gray
#property  indicator_color4  LimeGreen
#property  indicator_color5  DarkSlateBlue
//---- indicator parameters
extern int FastEMA=5;
extern int SlowEMA=34;
extern int SignalSMA=5;
extern int CountBars=300;
extern int Line=3;
//---- indicator buffers
double     ind_buffer1[];
double     ind_buffer2[];
double     ind_buffer3[];
double     ind_buffer4[];
double     ind_buffer5[];

double minuse;
double Vol;
double Zml;
double Color1;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
  
//---- indicator buffers mapping
   IndicatorBuffers(5);
   if(!SetIndexBuffer(0,ind_buffer1) &&
      !SetIndexBuffer(1,ind_buffer2) &&
      !SetIndexBuffer(2,ind_buffer3) &&
      !SetIndexBuffer(3,ind_buffer4) &&
      !SetIndexBuffer(4,ind_buffer5))
       Print("cannot set indicator buffers!");
//---- drawing settings
    
   Color1= C'128,0,255';                                            
   SetIndexStyle(0,DRAW_HISTOGRAM, STYLE_SOLID, 2, Color1); 
   SetIndexStyle(1,DRAW_HISTOGRAM, STYLE_SOLID, 2);
   SetIndexStyle(2,DRAW_HISTOGRAM, STYLE_SOLID, 3);
   SetIndexStyle(3,DRAW_LINE, STYLE_DASHDOTDOT,1);   

   SetIndexDrawBegin(0,Bars-CountBars);
   SetIndexDrawBegin(1,Bars-CountBars);
   SetIndexDrawBegin(2,Bars-CountBars);
   SetIndexDrawBegin(3,Bars-CountBars+SignalSMA); 
     
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+1);

//---- name for DataWindow and indicator subwindow label
   IndicatorShortName("MACD("+FastEMA+","+SlowEMA+","+SignalSMA+")");
   SetIndexLabel(0,"MACDUp");
   SetIndexLabel(1,"MACDDown");
   SetIndexLabel(2,"MACDStr");
   SetIndexLabel(3,"Signal");
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
int start()   
   {
//---- drawing settings
   int limit;  
   int counted_bars=IndicatorCounted(); 
//---- check for possible errors
   if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
   
   for(int i=0; i<limit; i++)      
   
      ind_buffer5[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);      
      
//---- Three Colour MACD mapping 
     for(i=0; i<limit; i++)
   {          
       Vol = ind_buffer5[i];     minuse = Vol - ind_buffer5[i+1];  
     
           if(minuse>0.0){ind_buffer1[i]=Vol; ind_buffer2[i]=0.0; ind_buffer3[i]=0.0;} 
     else {if(minuse<0.0){ind_buffer1[i]=0.0; ind_buffer2[i]=Vol; ind_buffer3[i]=0.0;}
     else                {ind_buffer1[i]=0.0; ind_buffer2[i]=0.0; ind_buffer3[i]=Vol;}} 
 //---- 
   } 
        
//---- signal line counted in the 2-nd buffer
   for(i=0; i<limit; i++)
      ind_buffer4[i]=iMAOnArray(ind_buffer5,Bars,SignalSMA,0,MODE_SMA,i);
//---- done
   return(0);
  }

Dmitry Fedoseev
47141
Dmitry Fedoseev  

Стрикт уберите, с ним вообще замучаетесь, не нужно его без лишней необходимости и если не новый индикатор пишите.

Проблема здесь:

   if(!SetIndexBuffer(0,ind_buffer1) &&
      !SetIndexBuffer(1,ind_buffer2) &&
      !SetIndexBuffer(2,ind_buffer3) &&
      !SetIndexBuffer(3,ind_buffer4) &&
      !SetIndexBuffer(4,ind_buffer5))
       Print("cannot set indicator buffers!");

Дело в  том, что раньше вычислялось все выражение. Т.е. для каждого буфера вызывалась SetIndexBuffer() и все работало. Теперь вычисление логических выражений оптимизировано. При вызове первой  SetIndexBuffer() становится понятно, что все выражение не будет true, поэтому заканчивается его вычисление и не вызывается  SetIndexBuffer() для остальных буферов.

Pavel Monogarov
211
Pavel Monogarov  
Dmitry Fedoseev:

Стрикт уберите, с ним вообще замучаетесь, не нужно его без лишней необходимости и если не новый индикатор пишите.

Проблема здесь:

Дело в  том, что раньше вычислялось все выражение. Т.е. для каждого буфера вызывалась SetIndexBuffer() и все работало. Теперь вычисление логических выражений оптимизировано. При вызове первой  SetIndexBuffer() становится понятно, что все выражение не будет true, поэтому заканчивается его вычисление и не вызывается  SetIndexBuffer() для остальных буферов.

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

Заранее спасибо 

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