В журнал эксперта заглянуть не пробовали? Там должна была вывестись
ошибка деления на 0 (zero divide). В этом всё и дело. Поэтому нужна либо
проверка условия Close[j+1]>0, либо j<Bars-1 (хотя тут рациональнее
просто задать правильные границы цикла, чтобы до Bars-1 и не доходило)
Огромное человеческое, впредь буду внимательнее.
Что означает фраза в описании.
double iMAOnArray( | double array[], int total, int period, int ma_shift, int ma_method, int shift) |
Параметры:
array[] | Массив с данными. | |
total | Количество элементов для вычисления. 0 означает все элементы массива. | |
period | Период усреднения для вычисления скользящего среднего. | |
ma_shift | Сдвиг индикатора относительно ценового графика. | |
ma_method | Метод усреднения. Может быть любым из значений методов скользящего среднего (Moving Average). | |
shift | Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад). |
total кол-во элементов для вычисления если можно на пальцах .
тоже самое и с iStdDevOnArray
У меня тоько одно предположение , что при 0 функция прогоняет весь массив , хотя нужно посчитать среднее на i - того элемента.
Если речь идет о total, то это означает, что расчет мувинга ведется от 0 элемента массива array до total-1 (общее количество расчитываемых элементов равно total). При total=0 расчет ведется на всем размере массива array.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Господа , как это все работает . Вроде не тупой по специальности элекиронщик , с программированием знаком . Но логику Mql понять не могу .
Простейший код . Вывести среднее приращение цены в процентах.
//+------------------------------------------------------------------+
//| $DlinaSvechi. mq4 |
//| Alex |
//| al53yandex. ru |
//+------------------------------------------------------------------+
#property copyright "Alex"
#property link "al53yandex.ru"
#property indicator_separate_window
//#property indicator_chart_window
//#property indicator_minimum 0
//#property indicator_maximum 0.005
#property indicator_buffers 3
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Green
//---- input parameters
extern int Sredn=10;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double Mass[1000];
double Mass1[1000];
double Mass2[1000];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,ExtMapBuffer3);
ArraySetAsSeries(Mass,true);
ArraySetAsSeries(Mass1,true);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
double DlSv=0,aaa,bbb,ccc,ddd;
if(counted_bars > 0) counted_bars--;
int limit = Bars - counted_bars;
for(int j=0;j<=limit;j++)
{
Mass[j]=(Close[j]-Close[j+1])/Close[j+1]*100;
}
for (int i=0;i<=limit;i++)
{
ExtMapBuffer2[i]=iMAOnArray(Mass, 0, Sredn, 0,MODE_SMA, i);
}
//----
//----
return(0);
}
Не работает .если вот эту строку Mass[j]=(Close[j]-Close[j+1])/Close[j+1]*100; поменять на Mass[j]=(Close[j]-Close[j+1]) то работает ; Но мне нужно относительное
И еще плз какие еще баги есть .