タイトルのまんまですが、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でスクリプトを作るので、見様見真似の状態です。
なにかあれば、改善点などあれば連絡いただければと思います。