見出し画像

決算発表日

決算発表のあった企業をスキャナーを使って日付でピックアップするために作成しました、中身的には営業利益・進捗の直近決算日と同じです
営業進捗のインジケータでスキャンすると頻繁にトレステがクラッシュするので日付のみのインジケータで試作、クラッシュしなかったら営業利益をスキャンしてる時にクラッシュすることも分かるので!
クラッシュする原因はゆるく追及していきます
なぜかスキャナーで日付を20170804等限定すると「選択された基準を満たす銘柄コードはありませんでした」になるので(EL形式でも同じ)
全銘柄表示させて日付で昇順/降順で並べ替えて必要分ピックアップする方がスキャンも速いと思います
今のところ実績データが作成されるのは決算発表された夜中から翌朝です、朝起きた頃には作成されているでしょう

プログラム

using tsdata.marketdata;
using elsystem;
vars:																					//変数宣言
	FundamentalQuotesProvider FQP( null ),
	DateTime Kessan( null );																//直近決算日
constants:																				//定数宣言
	string KeyActualFieldName( "CR_Op" );													//実績営業利益
method bool GetQuoteVal
( FundamentalQuote fq, DateTime tempdt, out DateTime Kessan )
variables:																				//メソッド内変数宣言
	int fqCount,																			//カウント
	bool QuoteFound,																		//データの存在有無
	DateTime fqDateTime;																	//直近決算日
begin
	if fq = null or tempdt = null then return false;										//データ存在無し、又は現在日なしの時、falseで終了
		QuoteFound = false;																	//データの存在無セット
		Kessan = DateTime.Create( 1900, 1, 1 );												//直近決算日セット1900/01/01
	for fqCount = fq.Count - 1 downto 0 begin												//カウント分繰り返し古いデータから逆順に確認
		fqDateTime = fq.PostDate[fqCount];													//発表日セット
			if tempdt >= fqDateTime and fqDateTime >= Kessan then begin						//現在日時以下、直近本決算日以上の時
				Kessan = fq.PostDate[fqCount];												//直近決算日セット
				QuoteFound = true;															//データの存在有セット
			end;
	end;{ for downto }
	return QuoteFound;																		//データ存在有りはtrue、無しはfalseで終了
end;{ GetQuoteVal method }
once begin
	FQP = new FundamentalQuotesProvider();
	FQP.Symbol = Symbol;
	FQP.Fields += KeyActualFieldName;
	FQP.LoadProvider();
end;{ once }
if GetQuoteVal( FQP[KeyActualFieldName], BarDateTime, Kessan ) then
	if Kessan <> 0 then Plot1( Kessan.ToString(), !( "直近決算日" ) );

サポートされると喜んでアイスを買っちゃいます!٩(๑❛ᴗ❛๑)۶