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

ニュース3 [ショウミー]

時間により、フォントと背景を2段階に変更し、経過すると外観をデフォルトに戻るように変更しました。設定時間以上経過した場合には、強調表示を戻すように考えてみました。
レーダースクリーンのデフォルトの足は5分足のようですが、5分以上経過しても、コードが再実行されていないように思えます。

他にいい方法がるかもしれませんが、タイマーイベントで時間経過を監視することにしました。

using tsdata.marketdata;
using elsystem;

Input: MakeupHour(1)	//背景を黄色にする期間(時間)
	, MakeupHour2(12);	//フォントを赤にする期間(時間)	
Vars: NewsProvider NewsProvider1(null)
	, Timer Timer1(null)
	, DateTime lastDate(null);		//最終ニュース日付時間

Method void PlotColorChange()
Begin
	If lastDate = null then
		Setplotbgcolor(1, GetBackgroundColor)
	Else
	Begin
		If lastDate > DateTime.Now - TimeSpan.Create(MakeupHour, 0, 0) then
		Begin		//1時間以内のフォントと背景色
			Setplotcolor(1, red);
			Setplotbgcolor(1, yellow);
		End
		Else if lastDate > DateTime.Now - TimeSpan.Create(MakeupHour2, 0, 0) then
		Begin		//12時間以内のフォントと背景色
			Setplotcolor(1, red);
			Setplotbgcolor(1, GetBackgroundColor);
		End
		Else
		Begin
			Setplotcolor(1, white);
			Setplotbgcolor(1, GetBackgroundColor);
		End;
	End;
End;

Method void NewsProvider1_Updated( elsystem.Object sender, NewsUpdatedEventArgs args ) 
Begin
	If args.Data <> null then
	Begin
		args.Data.PublishDate.AddHours(9);
		//If Symbol = "7974-TS" then print(args.Data.PublishDate.ToString(), "  ", args.Data.SourceFeed.Description, "  ", args.Data.Title);
		If lastDate = null then
			lastDate = args.Data.PublishDate
		Else
		Begin
			If args.Data.PublishDate > lastDate then lastDate = args.Data.PublishDate;
		End;
		Plot1(lastDate.Format("%m/%d %H:%M"), "news"); 
		PlotColorChange();

	End;
End ;

Method void Timer1_Elapsed( elsystem.Object sender, elsystem.TimerElapsedEventArgs args ) 
Begin
	PlotColorChange();
End;

Once begin
	//SetPlotType(1, ptDateTime);	//これはなくてもいいようだ
	NewsProvider1 = NewsProvider.Create();
	NewsProvider1.Updated += NewsProvider1_Updated;
	NewsProvider1.Symbol = Symbol;
	Timer1 = Timer.Create();
	Timer1.Elapsed += Timer1_Elapsed;
	Timer1.Interval = 1000 * 10 * 15;	//15sec間隔でタイマーイベント
	Timer1.Enable = true;
	
	NewsProvider1.Load = true;
End;

//レーダースクリーンのデフォルト足は5分足?の様だがこれはうまくいかない
{
	print(Symbol, " now:", DateTime.Now.ToString(), " last:", lastDate.ToString());
	If lastDate <> null then
	Begin
		If lastDate < DateTime.Now -  TimeSpan.Create(1, 0, 0) then
		Begin
			Setplotbgcolor(1, GetBackgroundColor);
		End;
	End;
}

とりあえず、デフォルトのままであれば、1時間以内のニュースが背景黄色の赤フォント、12時間までが赤フォントのみにしています。
この時間は、MakeupHourとMakeupHour2をダイアログから変更できます。



よくわかりませんが、一部の配信元の取得ができないこともあるようです。

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

nice! 0

コメント 0

コメントを書く

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

トラックバック 0

この記事のトラックバックURL:

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