Скачать MetaTrader 5

Не совсем работает скрипт, расчетать среднюю волатильность по инструменту

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

Ребят, только осваиваю 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
Модератор
15068
Victor Nikolaev  
winner2008:

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

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

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

Спс!


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

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


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

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

Vladimir
248
Vladimir  

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

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

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

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

Всеволод
648
Всеволод  
Может оформить индикатор?
Vladimir
248
Vladimir  

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

Alexey Viktorov
11260
Alexey Viktorov  
winner2008:

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

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


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

Vladimir
248
Vladimir  

AlexeyVik:

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

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

Спс!

Всеволод
648
Всеволод  

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

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

Victor Nikolaev
Модератор
15068
Victor Nikolaev  
winner2008:


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

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


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

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