![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
у меня проблемма в сглаживании при написании пользовательского индикатора.
вот допустим такой код:
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Blue
#property indicator_level1 50
#property indicator_level2 -50
#property indicator_levelcolor Silver
#property indicator_levelwidth 1
#property indicator_levelstyle 2
extern double
Period_R=100,
Period_S=5,
Period_SL=3;
double MainBuffer[];
double SignalBuffer[];
double HLM[1000];
double HMU[1000];
double LMD[1000];
double EMA_R[1000];
double EMA_S[1000];
int init()
{
//---- indicator lines
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2,Lime);
SetIndexBuffer(0, MainBuffer);
SetIndexStyle(1,DRAW_LINE,STYLE_DOT,1,Blue);
SetIndexBuffer(1, SignalBuffer);
//----
return(0);
}
int start()
{
int i, k, p=0,
counted_bars=IndicatorCounted();
double Min, DMin, DMax,
Max;
//----
ArraySetAsSeries( EMA_R, true);
ArraySetAsSeries( HLM, true);
i=Bars-counted_bars-1;
while(i>=0)
{
//---------Сложный моментум HLM------------------------
//-HMU---------------------------------
if ((High[i]-High[(i+1)])>0) HMU[i]=High[i]-High[(i+1)]; else HMU[i]=0;
//-LMD---------------------------------
if ((Low[i]-Low[(i+1)])<0) LMD[i]=-(Low[i]-Low[(i+1)]); else LMD[i]=0;
//-HLM------------------------------------
HLM[i]=HMU[i]-LMD[i];
i--;
}
if(counted_bars>0) counted_bars--;
int limit=Bars-counted_bars;
for(i=0; i<limit; i++) EMA_R[i]=iMAOnArray(HLM,Bars,Period_R,0,MODE_EMA,i);
for(i=0; i<limit; i++) MainBuffer[i]=iMAOnArray(EMA_R,Bars,Period_S,0,MODE_EMA,i)*100000;
for(i=0; i<limit; i++) SignalBuffer[i]=iMAOnArray(MainBuffer,Bars,Period_SL,0,MODE_EMA,i);
return;
}
мне надо сгладить данные массива HLM[i] и т.п
почему мне приходиться задавать размер массивам
double HLM[1000];
double HMU[1000];
double LMD[1000];
double EMA_R[1000];
double EMA_S[1000];
если этого не делать то значений в массиве MainBuffer и SignalBuffer нету.
и еще....
при использовании функции вызова пользовательского индикатора например: DTI=iCustom(NULL,0,"DTI",0,1); когда я обращаюсь вот к этому индикатору (код выше) значения DTI не верное.