EasyLanguage研究所

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

個別銘柄の株価データをPriceSeriesProviderクラスで取得してみる

チャート分析ウィンドウを表示させずに任意の期間で個別銘柄の株価データが取得できる方法を探していたところ、PriceSeriesProviderクラスが使えそうだったので試してみました。

以下サンプルコードです。銘柄コードや足種や期間などを指定して、印刷ログに株価データを出力しています。印刷ログへはタブ区切りで出力しているので、Excelへそのままコピペできます。

(トレーディングアプリとして作成しているので、AnalysisTechniqueのInitializedイベントに「AnalysisTechnique_Initialized」を設定して動かしています)

(例外処理などは省略しています)

using elsystem;
using tsdata.marketdata;

vars:
	PriceSeriesProvider psp(Null),
	varIndex(0);
	
method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args ) 
begin
	
	ClearPrintLog;
	
	psp = PriceSeriesProvider.Create();

	// 銘柄の設定
	psp.Symbol = "1321";
	
	// チャートの設定(足種など)
	psp.Interval.ChartType = DataChartType.Bars;
	psp.Interval.IntervalType = DataIntervalType.Daily;
	psp.Interval.IntervalSpan = 1;
	
	// 期間の設定
	psp.Range.Type = DataRangeType.Years;
	psp.Range.Years = 1;
	psp.Range.LastDate = Datetime.Create(2017,4,30);
	
	psp.LoadProvider();

	// 取得した株価データを印刷ログに出力
	varIndex = 0;
	For Value1 = 0 to psp.Count - 1 Begin
		varIndex = ( psp.Count - 1 ) - Value1;
		
		Print(
			psp.Symbol, "	",
			psp.Time[varIndex].Format("%Y/%m/%d"), "	",
			psp.Open[varIndex].ToString(), "	",
			psp.High[varIndex].ToString(), "	",
			psp.Low[varIndex].ToString(), "	",
			psp.Close[varIndex].ToString(), "	",
			psp.Volume[varIndex].ToString(), "	"
		);
	End;
end;

PriceSeriesProviderのIndex値については、通常OpenやCloseで添え字指定する時と同じように最も新しい足からカウントされるようなので、過去から順にPrint出力するよう調整しています。

For文前にある、銘柄コードや足種や期間をPriceSeriesProviderへ設定している部分を変更すれば、様々な形式の株価データが取得可能になります。

チャート分析ウィンドウ不要でデータ取得できるのは、トレーディングアプリ開発でかなり使えそうです。

シンボルリストダイアログやExcel連携などと組み合わせれば、任意のシンボルリストの過去株価データをExcelファイルに一括出力するようなトレーディングアプリなんかも作れそうですね。

最近大量のバックテストを実施していて、テスト作業をもう少し効率化させるようなトレーディングアプリを作りたいので、PriceSeriesProviderクラスはガンガン使っていくと思います。