EasyLanguage研究所

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

口座の残高や買付可能額を取得できるAccountsProviderクラスについて

オブジェクト指向EasyLanguageで利用可能なAccountsProviderクラスを使うと、口座の情報を取得できます。

具体的には、トレードステーションに初期搭載されている「トレードマネージャー」の「口座状況」タブで確認できる情報が中心、といえば分かりやすいと思います。

以下、AccountsProviderクラスを使って取得できる情報をPrint出力してみた結果です。(Updateされるごとに出力しているので見辛いかもしれませんが・・)

using elsystem;
using tsdata.trading;

Vars:
	AccountsProvider oAP(NULL);
	
method void AnalysisTechnique_Initialized( elsystem.Object sender, elsystem.InitializedEventArgs args ) 
begin
	Try
		oAP = AccountsProvider.Create();
		oAP.Updated += AccountsProvider_Updated;
		oAP.Load = true;
		
	Catch (Exception ex)
		Print( "Error: ", "	",  string.format("{0} | {1}[StackTrace]{2}", "	",  ex.Source, ex.Message, ex.StackTrace) );
	End;
end;

method void AccountsProvider_Updated(  elsystem.Object sender, tsdata.trading.AccountUpdatedEventArgs args ) 
vars:
	Account oAccount;
	
begin
	Try

		oAccount = oAP.Account[0];
		
		ClearPrintLog();
		
		Print("=======================");
		Print("口座情報");
		Print("=======================");
		Print("口座ID", "	", oAccount.AccountID);
		Print("口座名", "	",  oAccount.Name);
		Print("口座ステータス", "	",  oAccount.Status);
		Print("口座タイプ", "	",  oAccount.Type.ToString());
		Print();
		Print("=======================");
		Print("営業日開始時点");
		Print("=======================");
		Print("現金残高", "	",  oAccount.BDCashBalance);
		Print("未実現損益", "	",  oAccount.BDUnrealizedPL);
		Print("有効証拠金", "	",   oAccount.BDAccountEquity);
		Print("純資産額", "	",  oAccount.BDAccountNetWorth);
		Print("デイトレード 取引限度額", "	",  oAccount.BDDayTradingBuyingPower);
		Print("オプション取引限度額", "	",  oAccount.BDOptionBuyingPower);
		Print("オプション清算額", "	",  oAccount.BDOptionLiquidationValue);
 		Print("オーバーナイト買付可能額", "	",  oAccount.BDOvernightBuyingPower);
 		Print();
		Print("=======================");
 		Print("リアルタイム");
		Print("=======================");
		Print("口座エクイティ", "	",  oAccount.RTAccountEquity);
		Print("純資産額", "	",  oAccount.RTAccountNetWorth);
		Print("現金残高", "	",  oAccount.RTCashBalance);
		Print("約定金額合計 (保有分) ", "	",  oAccount.RTCostOfPositions);
		Print("デイトレード取引限度額", "	",  oAccount.RTDayTradingBuyingPower);
		Print("リアルタイム必要証拠金", "	",  oAccount.RTInitialMargin);
		Print("最低必要保証金額", "	",  oAccount.RTMaintenanceMargin);
		Print("オプション買付可能額", "	",  oAccount.RTOptionBuyingPower);
		Print("オプション清算価値", "	",  oAccount.RTOptionLiquidationValue);
		Print("オーバーナイト買付可能額", "	",  oAccount.RTOvernightBuyingPower);
		Print("買付可能額", "	",  oAccount.RTPurchasingPower);
		Print("実現損益", "	",  oAccount.RTRealizedPL);
		Print("未実現損益", "	",  oAccount.RTUnrealizedPL);
		Print();
		Print("=======================");
		Print("その他");
		Print("=======================");
		Print("今日のリアルタイム取引エクイティ", "	",  oAccount.TodaysRTTradeEquity);
		Print("入金予定額", "	",  oAccount.UnclearedDeposits);
		Print("未受渡金", "	",  oAccount.UnsettledFund);
		Print("口座でデイトレードが許可されるか?", "	",  oAccount.CanDayTrade);
		Print("トレーダーがパターンデイトレーダーか?", "	",  oAccount.IsDayTrader);
		Print("オプショントレード許可レベル", "	",  oAccount.OptionsApprovalLevel);
		Print("過去4日間の取引数", "	",  oAccount.FourDaysTradeCount);
		
	Catch (Exception ex)
		Print( "Error: ", "	",  string.format("{0} | {1}[StackTrace]{2}", "	",  ex.Source, ex.Message, ex.StackTrace) );
	End;
End;

リアルタイムの資金残高や買付可能額が取得できるのが使えそうなポイントかなと思います。

AccountsProviderクラスは、オブジェクトさえ用意してあげれば通常のストラテジー用EasyLanguageでも使う事ができるので、例えば資金管理も考慮に入れたストラテジー開発がしたい場合などに活用できそうです。

気になる方は、ぜひ使ってみてください。