using System;
using NinjaTrader.Cbi;
using NinjaTrader.Gui.Tools;
using NinjaTrader.NinjaScript;
using NinjaTrader.Data;
using NinjaTrader.Gui.Chart;
using NinjaTrader.NinjaScript.DrawingTools;
using System.Windows.Media;
#endregion
namespace NinjaTrader.NinjaScript.Indicators
{
public class FillPriceMinusOpenPrice : Indicator
{
private double fillPrice = 0.0;
private string orderName = "";
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
Description = @"An indicator that posts the value of an order fill price minus the open price of the one-minute bar on the chart.";
Name = "FillPriceMinusOpenPrice";
Calculate = Calculate.OnEachTick;
IsOverlay = true;
}
}
protected override void OnBarUpdate()
{
if (CurrentBar < 1)
return;
}
protected override void OnExecutionUpdate(Execution execution, double price, int quantity, MarketPosition marketPosition, string orderId, DateTime time)
{
if (execution.Order != null && execution.Order.OrderState == OrderState.Filled)
{
fillPrice = price;
orderName = execution.Order.Name;
double openPrice = Open[0]; // Capture the open price of the current bar
double value = fillPrice - openPrice;
// Draw the text on the chart
Draw.Text(this, "OrderFillValue_" + CurrentBar, orderName + ": " + value.ToString("F2"), 0, High[0] + 2 * TickSize, Brushes.White);
}
}
}
}
region NinjaScript generated code. Neither change nor remove.
namespace NinjaTrader.NinjaScript.Indicators
{
public partial class Indicator : NinjaTrader.Gui.NinjaScript.IndicatorRenderBase
{
private FillPriceMinusOpenPrice[] cacheFillPriceMinusOpenPrice;
public FillPriceMinusOpenPrice FillPriceMinusOpenPrice()
{
return FillPriceMinusOpenPrice(Input);
}
public FillPriceMinusOpenPrice FillPriceMinusOpenPrice(ISeries<double> input)
{
if (cacheFillPriceMinusOpenPrice != null)
for (int idx = 0; idx < cacheFillPriceMinusOpenPrice.Length; idx++)
if (cacheFillPriceMinusOpenPrice[idx] != null && cacheFillPriceMinusOpenPrice[idx].EqualsInput(input))
return cacheFillPriceMinusOpenPrice[idx];
return CacheIndicator<FillPriceMinusOpenPrice>(new FillPriceMinusOpenPrice(), input, ref cacheFillPriceMinusOpenPrice);
}
}
}
namespace NinjaTrader.NinjaScript.MarketAnalyzerColumns
{
public partial class MarketAnalyzerColumn : MarketAnalyzerColumnBase
{
public Indicators.FillPriceMinusOpenPrice FillPriceMinusOpenPrice()
{
return indicator.FillPriceMinusOpenPrice(Input);
}
public Indicators.FillPriceMinusOpenPrice FillPriceMinusOpenPrice(ISeries<double> input )
{
return indicator.FillPriceMinusOpenPrice(input);
}
}
}
namespace NinjaTrader.NinjaScript.Strategies
{
public partial class Strategy : NinjaTrader.Gui.NinjaScript.StrategyRenderBase
{
public Indicators.FillPriceMinusOpenPrice FillPriceMinusOpenPrice()
{
return indicator.FillPriceMinusOpenPrice(Input);
}
public Indicators.FillPriceMinusOpenPrice FillPriceMinusOpenPrice(ISeries<double> input )
{
return indicator.FillPriceMinusOpenPrice(input);
}
}
}
#endregion

Comment