EasyLanguage研究所

マネックス証券が提供する株式トレード&分析ツール「トレードステーション」専用のプログラミング言語、EasyLanguageについて。特にオブジェクト指向型EasyLanguage(OOEL)の情報を中心に。

Average関数とAverageFC関数の処理速度を比較してみた

EasyLanguageで移動平均線の値を計算する時などに利用するAverage関数ですが、

・通常版のAverage関数
・高速版のAverageFC関数

という2種類が存在します。

「FC系の方がメモリは多少食うが処理速度が早い」とマニュアルに記載されていたので、普段はAverageFC関数を使うようにしているのですが、実際どのくらい計算速度に差が出るのかな?とふと気になったので検証してみました。

以下のようテストコードでストラテジーを作成。

using elsystem;

Vars:
	StopWatch varSw(NULL),
	varAvg(0);
	
Once Begin
	ClearPrintLog;
	
	varSw = StopWatch.Create();
	varSw.Start();
End;

Once ( LastBarOnChartEx ) Begin
	For Value0 = 0 To 999999 Begin
		varAvg = Average( Close, 100 );
		//varAvg = AverageFC( Close, 100 );
	End;
	
	varSw.Stop();
	print( (varSw.ElapsedMilliseconds/1000).ToString(), " 秒" );
End;


適用したチャートの最終足で、Average関数もしくはAverageFC関数を100万回計算して、掛かった時間を算出するコードです。

これを適当なチャートに適用して結果を測定。毎回測定値は微妙に変わりますが、だいたい結果は以下になりました。

Average関数 4.289秒
AverageFC関数 0.029秒

かなり結果に差が出ましたね。

TradeStation付属マニュアルを見ると、AverageFC関数の方がAverage関数に比べてわずかにメモリーを使用するとの事ですが、特に気にするレベルの話でもなさそうなので今後もFC付き関数の方を使っていきたいと思います。