So-net無料ブログ作成
検索選択

時価総額の取得(ファイナル) 2017-3-13変更 [ファンダメンタル]

目的は時価総額を取得することです。
一般のFundamentalFieldには「MKTCAP」という時価総額のフィールドがありますが残念ながら11月の頃に色々と試しましたがこのデータは取得できませんでした。

2017-3-13 変更
ひでぼー さんから「CAB_SHARES_AFTER_TRANSFER」で発行済み株式数が取得でき、現在値をかけて時価総額を取得できるというコメントをいただいたので変更してみました。
ひでぼー さん、ありがとうございました。

2017-3-18 追記
「CAC_OUTS2」がスキャナーの発行済み株式数と一致するようです。時価総額の取得にはこれを利用してください。
発行株式数検証


日本株のフィールドを探していくと、「CR_PSR」と「CE_PSR」が時価総額を計算できそうな項目が見つかります。
特に、「CE_PSR」は現在の時価総額/売上高予想と説明書きがなされていますので、売上高予想をかけてやれば現時点での時価総額が出るはずです。

前回の、ソニーデバッグで見る限りにおいては、「0」以外は売上高予想は概ね同じような値ですので連結データを表示しているようです。
連結と単独予想が売上予想の時系列に含まれていなければ、直近で0以外の売上高と日付を拾ってこの日付に一致するCE_PSRを取得できれば時価総額が計算できるはずです(充分検証はしていません)。


お待ちかねの結論コードです。

using elsystem;
using tsdata.marketdata;
	
Vars: 	FundamentalQuotesProvider fundamental( null );

method void Fundamental_Updated( elsystem.Object sender, tsdata.marketdata.FundamentalQuoteUpdatedEventArgs args ) 
Vars: double sales, double psr, double zika, DateTime dd, int counter, int counter2;
begin
	If fundamental.HasQuoteData(0) and fundamental.HasQuoteData(1) then	//0:予想売上 1:予想PSR
	Begin
		For counter = 0 to fundamental.Quote[0].Count -1 
		Begin
			sales = fundamental.Quote[0].DoubleValue[counter];
			If sales > 0 then
			Begin
				dd = fundamental.Quote[0].PostDate[counter];
				For counter2 = 0 to fundamental.Quote[1].Count -1
				Begin
					If fundamental.Quote[1].PostDate[counter2] = dd then		//予想売上がプラスの日付とPSRの日付が一致した時
					Begin
						psr = fundamental.Quote[1].DoubleValue[counter2];	//1:PSR
						Break;
					End;
				End;
			End;
			If psr > 0 then break;	//PSRが代入だれていれば抜けないと過去にさかのぼりすぎてしまう
		End;
	End;

	If sales > 0 and psr > 0 then
	Begin
		zika = sales * psr;
		If zika < 5000 then
			Plot1( zika, "時価総額", Red, GetBackgroundColor )
		else if zika < 10000 then
			Plot1( zika, "時価総額", Yellow, GetBackgroundColor )
		Else
			Plot1( zika, "時価総額", default, GetBackgroundColor );
		If psr < 0.5 then
			Plot2( psr, "PSR(予)", Red, GetBackgroundColor )
		Else if psr < 2.5 then
			Plot2( psr, "PSR(予)", Yellow, GetBackgroundColor )
		else
			Plot2( psr, "PSR(予)", Default, GetBackgroundColor );
		Plot3(sales, "売上高(予)", white, GetBackgroundColor );
		Plot4( zika / Close[0] * 100, "株数(万)", default , GetBackgroundColor );
		Plot5(dd.ToString(), "date", white, GetBackgroundColor );
	End;
End;

Once begin
	//gVal = GlobalValue.Create();
	//gVal.Load = true;
	fundamental = FundamentalQuotesProvider.Create();
	fundamental.Symbol = Symbol;
	fundamental.Fields.Add("CE_SALES,CE_PSR");		//順に予想売上、予想PSR
	fundamental.Updated += Fundamental_Updated;
	fundamental.Load = true;
End;

スクリーンショット 2017-01-21 17.10.26.png
PSRはプロパティで数値に変更してください。
色は自分の好みです。

実際に自分が利用しているものとは異なるロジックで新たに作成したものです。
したがって、取得データの検証はほとんどしていません。
各自で確認の上自己責任で利用してください。


【参考】スキャナーを利用した時価総額の確認
スキャナーには時価総額の項目があり、業績(実績、予想、コンセンサス)も表示可能です。
以前検証した限りにおいては、前々回に書いたような業績データが間違って過去データを取得するようなことはなく時価総額も含め正確だったと思います。
時価総額が円で桁数が多すぎで見づらいですが、このデータと比較すると良いかもしれません。




2017-3-13 追記

ひでぼーさんに、「CAB_SHARES_AFTER_TRANSFER」で発行済み株式数が取得でき時価総額計算に利用できるとのコメントをいただきました。
この方法であれば、予想EPSが発表されていない銘柄の時価総額も取得できます。

using tsdata.marketdata;

variables:
	FundamentalQuotesProvider FQP( NULL )
	, double zika(0)
	;
	
	FQP = new FundamentalQuotesProvider();
	FQP.Symbol = Symbol;
	
	FQP.Fields.Add("CAB_SHARES_AFTER_TRANSFER");	
	FQP.Realtime = false;
	FQP.TimeZone = tsdata.common.TimeZone.local;
	FQP.LoadProvider();
	Value99 = FQP.Count; { force provider to load }

	If FQP.HasQuoteData("CAB_SHARES_AFTER_TRANSFER") then
	Begin
		value1 = FQP["CAB_SHARES_AFTER_TRANSFER"].DoubleValueLast;
		Plot1( value1 / 10000, !( "発行株数(万)" ));
		zika = value1 * Close / 1000000;
		If zika < 5000 then
			Plot2( zika, !( "時価総額" ), Red )
		else if zika < 10000 then
			Plot2( zika, !( "時価総額" ), Yellow )
		Else
			Plot2( zika, !( "時価総額" ), default );

		SetPlotBgColor(1, Black);
		SetPlotBgColor(2, Black);

	end;

単位は、発行株式数が万株、時価総額が100万円です。

ひでぼーさん ありがとうございました。

nice!(0)  コメント(3)  トラックバック(0) 
共通テーマ:

nice! 0

コメント 3

ひでぼー

初めまして、レーダースクリーンに時価総額出したくて辿り着きました
参考に色々やってみたところ、ファンダメンタルデータの"CAB_SHARES_AFTER_TRANSFER"名義書換後の株数に発行済株数が入ってました
終値×発行済株数で時価総額表示できました!
ありがとうございました
by ひでぼー (2017-03-12 19:56) 

ひでぼー

こんばんは、全部の銘柄で発行済株数のデータ入ってると思っていましたが、今日225銘柄でも45銘柄ほど入っていないものを確認しました。
今週末はちょっと時間ないので、時間のある時にでも少し調べてみます!
by ひでぼー (2017-03-17 00:11) 

ひでぼー

解決しました!(多分w)
ちょっと疲れて数件しかデータ確認していませんが
結果的には発行済株数のフィールドが違っていました
正しい発行済株数はCAC_OUTS2(NOMURA400タイプの株式発行高数)でした
詳しい顛末を知りたい時はこのツイ以降をご覧ください(´д`)
https://twitter.com/hi_de_bo/status/842749973364060160
by ひでぼー (2017-03-18 00:22) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。