Здравствтуйте! Помогите с алгоритмом. Нужно чтобы выполнялся цикл в цикле. Внешний цикл это каждый тик, а внутренний цикл это новый бар. Привожу пример (не рабочий). Сам не могу разобраться, мозгов почему то не хватает))
//+------------------------------------------------------------------+ //| ddd.mq5 | //| Copyright 2017, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2017, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property indicator_chart_window //--- input parameters input int Input1; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ datetime gdt_BarOpenTime = 0; int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- int limit; if(prev_calculated==0)limit=1; else limit=prev_calculated-1; for(int i=limit;i<rates_total && !IsStopped();i++) { if (gdt_BarOpenTime != Time[0]) { gdt_BarOpenTime = Time[0]; for(int i=limit;i<rates_total-1 && !IsStopped();i++) Print("внутренний цикл - новый бар"); } Print("внешний цикл - новый тик"); } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+
Что-то в таком духе, но там у вас странные вычисления...
Только нужно не
Time[0]
а
Time[rates_totla-1]
так как по-умолчанию в индикаторе mql5 в массивах в OnCalculate() самый правый бар на графике соответствует индексу rates_total-1.
Что-то в таком духе, но там у вас странные вычисления...
Спасибо! но немножко не так, это я неправильно задал вопрос, прошу прощения. Попробую обьяснить болле нагляднее.
Я пишу индикатор в котором отслеживаю два сигнала.
Первый сигнал отслеживаю по закрытию бара - т.е. предпоследний бар
Второй сигнал отслеживаю на текущем баре - т.е. текущий бар
И вот теперь как создать условие при появлении нового бара и второе условие при появлении нового тика
В реальном времени у меня получилось, а вот как на истории это сделать..?
Это я насчет странных вычислений, как Вы сказали...)))
Спасибо большое за помощь!
Только нужно не
а
так как по-умолчанию в индикаторе mql5 в массивах в OnCalculate() самый правый бар на графике соответствует индексу rates_total-1.
да, да, так надо time[rates_total-1]...
хотя тут не видно, что это мт5...
..
хотя тут не видно, что это мт5...
Вот же - всё видно:
//+------------------------------------------------------------------+ //| ddd.mq5 | //| Copyright 2017, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ ...
Вот же - всё видно:
да, да, соколинный глаз, ты прав ! как всегда !
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствтуйте! Помогите с алгоритмом. Нужно чтобы выполнялся цикл в цикле. Внешний цикл это каждый тик, а внутренний цикл это новый бар. Привожу пример (не рабочий). Сам не могу разобраться, мозгов почему то не хватает))