Gatti

 
Уровень 5

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Индикатор информер волатильности

Прошу сделать индикатор-информер, основанный на индиаторе ATR. Каждые полчаса он сканирует валютные пары из обзора рынка, и фиксирует пять валютных пар с наименьшим показанием индикатора ATR. В настройках тайм-фрейм с которого берем показания индикатора
  • +2
  • Просмотров: 3746
  • 19 августа 2016, 18:45
  • Gatti
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
советник EAsmFisher
Следующая запись в группе  
Советник по стратегии
19 августа 2016
20 августа 2016

Брокер для ваших роботов, 15 лет на рынке

Комментарии (9)

+
+1
Мультивалютный индикатор отказываюсь делать в рамках «стола заказов».
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 19 августа 2016, 22:59
+
0
( 
avatar

  11  Nbg Сообщений: 3

  • 19 августа 2016, 23:17
+
0
*think*  первое сообщение) 8-) 
avatar

  7  Vitalik5675 Сообщений: 282

  • 20 августа 2016, 00:32
+
0
Завтра посмотрю. Если получится быстро сделать, будет индикатор.
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 21 августа 2016, 18:47
+
+1
Реализация в 2 строчки, а сколько всего перелопатил *think* 




//+------------------------------------------------------------------+
//|                                                     MultInfo.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

string s1="";
string s2="";
string symb[5];
double MinAtr[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   double atr=0;
/*
1. Заносим в массив атр 5 символов
2. Сортируем по возрастанию
3. Смотрим 6-й, если он меньше последнего
4. Заменяем последний 
5. Сортируем по возрастанию
6. Перебор до i<SymbolsTotal(true)

*/

/*  
   for(int i=0;i<5;i++)
     {
      //заносим 5 атр в массив
      MinAtr[i]=NormalizeDouble(iATR(SymbolName(i,true),0,14,0),Digits);
      //сортируем
      ArraySort(MinAtr,WHOLE_ARRAY,0,MODE_ASCEND);
     }
 
   for(int i=4;i<SymbolsTotal(true);i++)
     {
      atr=NormalizeDouble(iATR(SymbolName(i,true),0,14,0),Digits);
      if(atr<MinAtr[i]) MinAtr[3]=atr;
      ArraySort(MinAtr,WHOLE_ARRAY,0,MODE_ASCEND);
     }
    
   for(int i=0;i<SymbolsTotal(true);i++)
     {
      //поиск 1-го минимального атр
      s1=SymbolName(i,true);
      atr=iATR(s1,0,14,0);
      MinAtr1=atr;
      if(atr<MinAtr1) MinAtr1=atr;
     }
*/
   int k=SymbolsTotal(true);

   for(int i=0;i<k;i++)
     {
      ArrayResize(MinAtr,k);
      MinAtr[i]=NormalizeDouble(iATR(SymbolName(i,true),0,14,0),Digits);
     }
     
   //сортируем
   ArraySort(MinAtr,WHOLE_ARRAY,0,MODE_ASCEND);

   Comment("\n ATR "+SymbolName(0,true)+": ",NormalizeDouble(iATR(SymbolName(0,true),0,14,0),Digits),
           "\n ATR "+SymbolName(1,true)+": ",NormalizeDouble(iATR(SymbolName(1,true),0,14,0),Digits),
           "\n ATR "+SymbolName(2,true)+": ",NormalizeDouble(iATR(SymbolName(2,true),0,14,0),Digits),
           "\n ATR "+SymbolName(3,true)+": ",NormalizeDouble(iATR(SymbolName(3,true),0,14,0),Digits),
           "\n ATR "+SymbolName(4,true)+": ",NormalizeDouble(iATR(SymbolName(4,true),0,14,0),Digits),
           "\n ATR "+SymbolName(5,true)+": ",NormalizeDouble(iATR(SymbolName(5,true),0,14,0),Digits),
           "\n ATR "+SymbolName(6,true)+": ",NormalizeDouble(iATR(SymbolName(6,true),0,14,0),Digits),
           "\n ************************",
           "\n Min ATR: ",string(MinAtr[0])+" ",string(MinAtr[1])+" ",string(MinAtr[2])+" ",string(MinAtr[3])+" ",string(MinAtr[4])+" ");

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


Редактирован: 22 августа 2016, 09:58
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 22 августа 2016, 09:54
+
0
СПАСИБО*drinks* 
avatar

  5  Gatti Автор Сообщений: 53

  • 22 августа 2016, 11:44
+
0
Символы было бы хорошо чтобы красным цветом писал, чтобы не сливалось
avatar

  5  Gatti Автор Сообщений: 53

  • 22 августа 2016, 12:05
+
0
Остальное добавлю, когда будет 3-й уровень, чтобы труд был оплачен.
avatar

  35  AM2 Сообщений: 16266 - Андрей

  • 22 августа 2016, 13:01
+
0
С выходом!*good* 
avatar

  19  Kashtan Сообщений: 739 - Игорь

  • 22 августа 2016, 21:24

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