protected override void CalcBar() { slope_roc.Value = (current_regression[0] - past_regression[0]) - (current_regression[1] - past_regression[1]); stdev.Call(); //Output.WriteLine("zscore={0}, slope_roc.Value={1}", stdev[0], slope_roc.Value); bool close_long, close_short, open_long, open_short; close_long = (slope_roc.Value > take_profit_zscore) || (slope_roc.Value < -bias_reset_zscore); close_short = (slope_roc.Value < -take_profit_zscore) || (slope_roc.Value > bias_reset_zscore); if (!trade_enabled && ((slope_roc[0] > 0.0 && slope_roc[1] < 0.0) || (slope_roc[0] < 0.0 && slope_roc[1] > 0.0))) { trade_enabled = true; } open_long = (slope_roc.Value > bias_reset_zscore) && trade_enabled; open_short = (slope_roc.Value < -bias_reset_zscore) && trade_enabled; if (StrategyInfo.MarketPosition == 0) { if (open_long) { long_order.Send(); } if (open_short) { short_order.Send(); } } else if (StrategyInfo.MarketPosition < 0) { if (close_short) { close_short_order.Send(); trade_enabled = false; } } else if (StrategyInfo.MarketPosition > 0) { if (close_long) { close_long_order.Send(); trade_enabled = false; } } }