MetaTrader5で、すべてのチャートのオートスクロール (AutoScroll) をONにするスクリプトを作った。

タイトルのまんまですが、MetaTrader5で、すべてのチャートのオートスクロール(AutoScroll)をONにするスクリプトを作りました。

理由

チャートを振り返るとき、すべてのチャートの時間軸を同期させる「ssyncscroll」というスクリプトを使用しています。
このスクリプトは、複数の時間足 (5分足、15分足、1時間足など) のチャートを表示して、特定の時間軸でのチャートを見直すのにちょうど良いスクリプトです。
過去の時間軸を見直す場合、オートスクロール機能が邪魔になるため、このスクリプトはチャートのオートスクロール機能をOFFにします。
ssyncscrollを使い終わったあと、すべてのチャートのオートスクロール機能をONにするのは、少々面倒です。
そのため、すべてのチャートのオートスクロール機能をONにするスクリプトを作りました。

スクリプトについて

スクリプト自体は、ssyncscrollの内容を真似ています。
たとえば、ChartGetIDListという関数がありますが、これはssyncscrollでも使用されています。
このChartGetIDList関数ですべてのチャートのIDを取得し、それぞれのチャートに対して、オートスクロール機能をONにします。

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long h[];
   ChartGetIDList(h);
   //--- enable auto scrolling
   for(int i=0;i<ArraySize(h);i++)
     {
         ChartSetInteger(h[i],CHART_AUTOSCROLL,true);
     }
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| ChartGetIDList                                                   |
//+------------------------------------------------------------------+
int ChartGetIDList(long   &aList[])
  {
   ArrayResize(aList,0);
   long p_handle=0;
   long handle=ChartNext(p_handle);
   while(handle!=-1)
     {
      p_handle=handle;
      ArrayResize(aList,ArraySize(aList)+1);
      aList[ArraySize(aList)-1]=handle;
      handle=ChartNext(p_handle);
     }
   return(ArraySize(aList));
  }
//+------------------------------------------------------------------+

はじめてMQL5でスクリプトを作るので、見様見真似の状態です。
なにかあれば、改善点などあれば連絡いただければと思います。