Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Опубликовал программу в Маркете? Опубликуй ее и в блоге - виджет поможет!
Vladimir
248
Vladimir 2014.03.12 17:29 

Ребят, только осваиваю mql, написал скрипт который должен выводить среднюю волатильность по инструменту, но почему-то не работает.

Код настолько простой, но все равно решил закомментить:

int    quantityBars  = 0;            //количество баров
double Mass[100];                    //временный размер массива
double averageVolatily = 0;          //средняя волатильность

//+------------------------------------------------------------------+

void OnInit()
{
   quantityBars = iBars(Symbol(),0);

   ArrayResize(Mass,quantityBars);          //ресайз под кол-во баров
   //Не совсем практично получается так массив устанавливать
   //но изначально присвоить массиву размер iBars мне не удалось  
 
   return;
}
//+------------------------------------------------------------------+
void OnStart()
{
    for(int i=0;i<quantityBars;i++)            //Получаем волатильность каждого бара
     {
         Mass[i] = High[i] - Low[i];
     }
   
   for(int j=0;j<Mass[quantityBars];j++)      //Получаем общую сумму
     {
         averageVolatily += Mass[j]; 
     }
     
   Comment(quantityBars,"\n",(averageVolatily/quantityBars));   //Выводим среднее
   

   return;
}

Выдает значение 0. В чем причина? И дайте пожалуйста какие-нибудь советы новичку, как делать правильно и как делать не надо..

Спс!

Victor Nikolaev
Модератор
14038
Victor Nikolaev 2014.03.12 18:10  
winner2008:

Ребят, только осваиваю mql, написал скрипт который должен выводить среднюю волатильность по инструменту, но почему-то не работает.

Код настолько простой, но все равно решил закомментить:

Выдает значение 0. В чем причина? И дайте пожалуйста какие-нибудь советы новичку, как делать правильно и как делать не надо..

Спс!


Что-то у Вас со вторым циклом не то. Попробуйте расшифровать что написали в коде. Особое внимание уделите заголовку цикла. Типам переменных и их значениям
Vladimir
248
Vladimir 2014.03.12 18:53  
Vinin:

Что-то у Вас со вторым циклом не то. Попробуйте расшифровать что написали в коде. Особое внимание уделите заголовку цикла. Типам переменных и их значениям


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

Все равно не врубаюсь..

Vladimir
248
Vladimir 2014.03.12 19:43  

Да, дурак, согласен! Скажите, а есть ли в mql что нибудь наподобие length из С#? Моё условие можно было бы написать там так: for(int j=0; j<Mass[Lenght]; j++), или можно написать так в мт:

for(int j=0; j<Mass[ArraySize(Mass)]; j++) ???

Еще скажите пожалуйста, как правильно мне надо было задавать цикл с 0 бара или с первого? В моем же коде получается, что я анализирую еще не сформировавшийся нулевой бар?

Можно ли как то установить размер массива сразу правильный, без лишнего кода?

Всеволод
648
Всеволод 2014.03.12 22:31  
Может оформить индикатор?
Vladimir
248
Vladimir 2014.03.13 08:34  

Да мне не нужен постоянный пересчет, можете пожалуйста на мои вопросы выше ответить?

Alexey Viktorov
5175
Alexey Viktorov 2014.03.13 10:01  
winner2008:

Да мне не нужен постоянный пересчет, можете пожалуйста на мои вопросы выше ответить?

Можно, если ты расскажешь что это будет в итоге? Индикатор? Тогда ты его совсем не правильно начал писать. Советник? Зачем писать в советник то, что лучше посчитать в индикаторе и iCustom() получить значение на любом баре...


ps; Индикатор постоянно не пересчитывает. Считается только текущий бар.

Vladimir
248
Vladimir 2014.03.13 11:03  

AlexeyVik:

ps; Индикатор постоянно не пересчитывает. Считается только текущий бар.

Спасибо, я этого не знал.. В самом первом сообщении я писал, что это скрипт, а список интересующих меня вопросов я укзал 3-мя сообщениями выше.

Спс!

Всеволод
648
Всеволод 2014.03.13 15:37  

https://www.mql5.com/ru/forum/136801

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

Victor Nikolaev
Модератор
14038
Victor Nikolaev 2014.03.13 15:59  
winner2008:


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

Все равно не врубаюсь..


Экспериментируй. Это индикатор

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