The methods that are invoked in OnRender() are surrounded by try catch blocks to avoid an exception causing the strategy to crash.
The following error occurred causing the strategy to disable while running in simulation trading mode:
04/06/2021 15:25 | Default | Disabling NinjaScript strategy 'MNQInfinity3EngineRealtimeStrategyMLNet4Gradient/234252824' |
04/06/2021 15:25 | NinjaScript | Failed to call OnRender for 'MNQInfinity3EngineRealtimeStrategyMLNet4Gradient' : 'Index was outside the bounds of the array.' |
protected override void OnRender(ChartControl chartControl, ChartScale chartScale)
{
if (CurrentBar < 20)
return;
if (State == State.Historical)
return;
if (Bars == null || chartControl == null)
return;
if (!IsVisible)
return;
// RenderTarget is always full panel, so we need to be mindful which sub ChartPanel we're dealing with
// always use ChartPanel X, Y, W, H - as ActualWidth, Width, ActualHeight, Height are in WPF units, so they can be drastically different depending on DPI set
if (!IsInHitTest)
{
previousAntialiasMode = RenderTarget.AntialiasMode;
try
{
DrawRenkoSignals(chartControl, chartScale);
}
catch (Exception ex)
{
LogOnRenderErrors(string.Concat("DrawRenkoSignals: ", ex.Message, " Time = ", DateTime.Now.ToString()));
}
try
{
DrawBullishEnd(chartControl, chartScale);
}
catch (Exception ex)
{
LogOnRenderErrors(string.Concat("DrawBullishEnd:", ex.Message, " Time = ", DateTime.Now.ToString()));
}
try
{
DrawBullishPB(chartControl, chartScale);
}
catch (Exception ex)
{
LogOnRenderErrors(string.Concat("DrawBullishPB:", ex.Message, " Time = ", DateTime.Now.ToString()));
}
try
{
DrawBearishEnd(chartControl, chartScale);
}
catch (Exception ex)
{
LogOnRenderErrors(string.Concat("DrawBearishEnd:", ex.Message, " Time = ", DateTime.Now.ToString()));
}
try
{
DrawBearishPB(chartControl, chartScale);
}
catch (Exception ex)
{
LogOnRenderErrors(string.Concat("DrawBearishPB:", ex.Message, " Time = ", DateTime.Now.ToString()));
}
try
{
DrawDottedLines(chartControl, chartScale);
}
catch (Exception ex)
{
LogOnRenderErrors(string.Concat("DrawDottedLines:" , ex.Message, " Time = ", DateTime.Now.ToString()));
}
RenderTarget.AntialiasMode = previousAntialiasMode;
}
base.OnRender(chartControl, chartScale);
}
Comment