So-net無料ブログ作成

前回の記事一部修正 [修正]

3938LINEでNullObjectExceptionのエラーが出てデータが取得できていませんでした。
売上予想がない状況で、PostDateが取得できた場合に使用するDateTime「dd」がnullであるにもかかわらずプロットしようとしていることが原因でした。

売上予想のない銘柄あるいは指標は、売上予想とPSRを0として発表日を「予想なし?」と表示することにしました。

加えて、Reitでは売上予想はあるもののPSRは0と取得されるので「0」の色表示を工夫しました。


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:予想売上
	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;
		//ReitはPSR 0の様だ
		zika = sales * psr;
		Switch(zika)
		Begin
		Case 0:
			Plot1( zika, "時価総額", DarkGray, GetBackgroundColor );
		Case is < 5000:
			Plot1( zika, "時価総額", Red, GetBackgroundColor );
		Case is < 10000:
			Plot1( zika, "時価総額", Yellow, GetBackgroundColor );
		Default:
			Plot1( zika, "時価総額", default, GetBackgroundColor );
		End;
		If zika > 0 then
			Plot4( zika / Close * 100, "株数(万)", default , GetBackgroundColor )
		else
			Plot4( zika / Close * 100, "株数(万)", DarkGray , GetBackgroundColor );
		Plot5(dd.ToString(), "発表日", white, GetBackgroundColor );
	End
	Else
	Begin	//売上予想なし
		Plot5("予想なし?", "発表日", lightgray, GetBackgroundColor );
	End;
	Switch(psr)
	Begin
		Case 0 :
			Plot2(psr, "PSR(予)", DarkGray, GetBackgroundColor );
		Case is < 0.5:
			Plot2( psr, "PSR(予)", Red, GetBackgroundColor );
		Case is < 2.5:
			Plot2( psr, "PSR(予)", Yellow, GetBackgroundColor );
		Default:
			Plot2( psr, "PSR(予)", Default, GetBackgroundColor );
	End;
	If sales > 0 then
		Plot3(sales, "売上高(予)", white, GetBackgroundColor )
	else
		Plot3(sales, "売上高(予)", DarkGray, GetBackgroundColor );
End;

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


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

nice! 0

コメント 0

コメントを書く

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

トラックバック 0

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