Полезняшки - скрипт для открытия чартов

24 января 2022, 22:17
Maxim Kuznetsov
0
36

Небольшой скрипт, открывает недостающие пары и применяет туда шаблон.

Полезная штука потому бывает закроешь случайно вкладку-другую, а потом мучительно перебираешь которую из 28 случайно бахнул :-)

Да и сам по себе терминал иногда при перезапусках "забывает" что было открыто.

А так - в случае необходимости запустил скрипт и он всё нужное сделал

//+------------------------------------------------------------------+
//|                                                   OpenMajors.mq5 |
//|                                                Maxim A.Kuznetsov |
//|                                          https://www.luxtrade.tk |
//+------------------------------------------------------------------+
#property copyright "Maxim A.Kuznetsov"
#property link      "https://www.luxtrade.tk"
#property version   "1.00"

// Открывает все недостающие чарты с мажорами
// если задан шаблон, то применяет его
#property script_show_inputs
sinput string TEMPLATE="";

string majors[]={
   "USD",
   "GBP",
   "CHF",
   "AUD",
   "NZD",
   "JPY",
   "CAD"
};
string charts[];
void OnStart()
{
   for(long chart=ChartFirst();chart>=0;chart=ChartNext(chart)) {
      string name=ChartSymbol(chart);
      if (!ArrayContain(charts,name)) ArrayPush(charts,name);
   }
   for(int pos=SymbolsTotal(false);pos>=0;pos--) {
      string name=SymbolName(pos,false);
      if (name=="") continue;
      if (ArrayContain(charts,name)) continue;
      string base=SymbolInfoString(name,SYMBOL_CURRENCY_BASE);
      string quote=SymbolInfoString(name,SYMBOL_CURRENCY_PROFIT);
      if (base!=quote && ArrayContain(majors,base) && ArrayContain(majors,quote)) {
         long chart=ChartOpen(name,PERIOD_M15);
         if (chart!=0) {
            ArrayPush(charts,name);
            if (TEMPLATE!="") {
               ChartApplyTemplate(chart,TEMPLATE);
            }
         }
      }
   }
}
bool ArrayContain(string &arr[],string element)
{
   for(int pos=ArraySize(arr)-1;pos>=0;pos--) {
      if (arr[pos]==element) return true;
   }
   return false;
}
int ArrayPush(string &arr[],string element)
{
   int id=ArraySize(arr);
   if (ArrayResize(arr,id+1)!=id+1) return -1;
   arr[id]=element;
   return id;
}


Файлы: