diff --git a/Strategies/ArchReactor/AR_gbrm_CL_BB_MACD.cs b/Strategies/ArchReactor/AR_gbrm_CL_BB_MACD.cs new file mode 100644 index 0000000..a65764f --- /dev/null +++ b/Strategies/ArchReactor/AR_gbrm_CL_BB_MACD.cs @@ -0,0 +1,81 @@ +#region Using declarations +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Input; +using System.Windows.Media; +using System.Xml.Serialization; +using NinjaTrader.Cbi; +using NinjaTrader.Gui; +using NinjaTrader.Gui.Chart; +using NinjaTrader.Gui.SuperDom; +using NinjaTrader.Gui.Tools; +using NinjaTrader.Data; +using NinjaTrader.NinjaScript; +using NinjaTrader.Core.FloatingPoint; +using NinjaTrader.NinjaScript.Indicators; +using NinjaTrader.NinjaScript.DrawingTools; +#endregion + +//This namespace holds Strategies in this folder and is required. Do not change it. +namespace NinjaTrader.NinjaScript.Strategies.ArchReactor +{ + public class AR_gbrm_CL_BB_MACD : ArchReactorAlgoBase + { + private Bollinger Bollinger1; + private MACD MACD1; + protected override void OnStateChange() + { + base.OnStateChange(); + + if (State == State.SetDefaults) + { + Description = @"This is a strategy by user gbrm to be used in 5 min CL."; + Name = "AR_gbrm_CL_BB_MACD"; + StrategyName = "AR_gbrm_CL_BB_MACD"; + Credits = "Strategy provided by discord user gbrm"; + } + } + + protected override void OnBarUpdate() + { + base.OnBarUpdate(); + } + + #region Strategy Management + protected override void initializeIndicators() { + Bollinger1 = Bollinger(2, 20); + AddChartIndicator(Bollinger1); + + MACD1 = MACD(12, 26, 9); + AddChartIndicator(MACD1); + + } + + protected override bool validateEntryLong() { + if (Open[0] < Bollinger1.Middle[0] + && Close[0] > Bollinger1.Middle[0] + && MACD1.Diff[0] > 0){ + return true; + } + return false; + } + + protected override bool validateEntryShort() { + if (Open[0] > Bollinger1.Middle[0] + && Close[0] < Bollinger1.Middle[0] + && MACD1.Diff[0] < 0){ + return true; + } + return false; + } + + #endregion + } +} + diff --git a/Strategies/ArchReactor/ArchReactorAlgoBase.cs b/Strategies/ArchReactor/ArchReactorAlgoBase.cs index 52778f3..a280efd 100644 --- a/Strategies/ArchReactor/ArchReactorAlgoBase.cs +++ b/Strategies/ArchReactor/ArchReactorAlgoBase.cs @@ -128,13 +128,14 @@ abstract public class ArchReactorAlgoBase : Strategy, ICustomTypeDescriptor { private int Session4Count; private int SessionNumber; private bool isPnlAchieved; + private bool ManuallyDisabled = false; protected override void OnStateChange() { switch (State) { case State.SetDefaults: Description = @"ArchReactorAlgoBase"; Name = "ArchReactorAlgoBase"; - BaseAlgoVersion = "1.5"; + BaseAlgoVersion = "1.6"; StrategyVersion = "1.0"; Author = "archReactor"; Credits = "archReactor"; @@ -336,6 +337,7 @@ protected void Button1Click(object sender, RoutedEventArgs e) button.Background = Brushes.Gray; button.BorderBrush = Brushes.Black; IsStratEnabled = false; + ManuallyDisabled = true; return; } @@ -345,7 +347,8 @@ protected void Button1Click(object sender, RoutedEventArgs e) button.Name = "StrategyButtonEnabled"; button.Background = Brushes.Aquamarine; button.BorderBrush = Brushes.Black; - IsStratEnabled = true; + IsStratEnabled = true; + ManuallyDisabled = false; return; } //Draw.TextFixed(this, "infobox", "Button 1 Clicked", TextPosition.BottomLeft, Brushes.Green, new Gui.Tools.SimpleFont("Arial", 25), Brushes.Transparent, Brushes.Transparent, 100); @@ -769,7 +772,8 @@ protected bool validateTimeControlsAndTradeCount() { && Times[0][0].TimeOfDay <= Stop_Time_1.TimeOfDay && Session1Count < MaxTradesPerSession) { SessionNumber = 1; - return true; + return true; + } if (Time_2 == true && Times[0][0].TimeOfDay >= Start_Time_2.TimeOfDay @@ -848,12 +852,11 @@ private void validateStrategyPnl() { private void validateMaxTradesPerSession() { if (State == State.Realtime) { - if (isPnlAchieved == false) { + if (isPnlAchieved == false && ManuallyDisabled == false) { if (Time_1 == true && Times[0][0].TimeOfDay >= Start_Time_1.TimeOfDay && Times[0][0].TimeOfDay <= Stop_Time_1.TimeOfDay - && Session1Count < MaxTradesPerSession) { - + && Session1Count < MaxTradesPerSession) { enableDisableStrat(true); } else if (Time_2 == true