Overlay chart clock Indicator
A single-file NinjaScript Indicator that formats Time[0] and updates one stable chart label.
using System;
using System.ComponentModel.DataAnnotations;
using System.Windows.Media;
using NinjaTrader.NinjaScript;
using NinjaTrader.NinjaScript.DrawingTools;
namespace NinjaTrader.NinjaScript.Indicators
{
public class ChartClockIndicator : Indicator
{
[NinjaScriptProperty]
[Display(Name = "Show seconds", GroupName = "Parameters", Order = 0)]
public bool ShowSeconds { get; set; }
[NinjaScriptProperty]
[Range(0, 100)]
[Display(Name = "Label offset ticks", GroupName = "Parameters", Order = 1)]
public int LabelOffsetTicks { get; set; }
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
Name = "ChartClockIndicator";
Calculate = Calculate.OnEachTick;
IsOverlay = true;
DrawOnPricePanel = true;
ShowSeconds = false;
LabelOffsetTicks = 4;
}
}
protected override void OnBarUpdate()
{
string format = ShowSeconds ? "HH:mm:ss" : "HH:mm";
string label = Time[0].ToString(format);
double y = Close[0] + LabelOffsetTicks * TickSize;
Draw.Text(this, "ChartClock", label, 0, y, Brushes.DodgerBlue);
}
}
}