#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
{
public class EEdgeScalpingUnlocked : Strategy
{
private double StopLoss, ProfitTarget;
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
Description = @"Enter the description for your new custom Strategy here.";
Name = "EEdgeScalpingUnlocked";
Calculate = Calculate.OnBarClose;
EntriesPerDirection = 1;
EntryHandling = EntryHandling.AllEntries;
IsExitOnSessionCloseStrategy = true;
ExitOnSessionCloseSeconds = 30;
IsFillLimitOnTouch = false;
MaximumBarsLookBack = MaximumBarsLookBack.TwoHundredFiftySix;
OrderFillResolution = OrderFillResolution.Standard;
Slippage = 0;
StartBehavior = StartBehavior.WaitUntilFlat;
TimeInForce = TimeInForce.Gtc;
TraceOrders = true;
RealtimeErrorHandling = RealtimeErrorHandling.StopCancelClose;
StopTargetHandling = StopTargetHandling.PerEntryExecution;
BarsRequiredToTrade = 20;
// Disable this property for performance gains in Strategy Analyzer optimizations
// See the Help Guide for additional information
IsInstantiatedOnEachOptimizationIteration = true;
}
else if (State == State.Configure)
{
}
else if (State == State.DataLoaded)
{
ClearOutputWindow();
}
}
protected override void OnBarUpdate()
{
if (BarsInProgress != 0)
return;
if (CurrentBars[0] < 3)
return;
// Set 1
if ((Close[0] > Close[1])
&& (Close[1] > Close[2])
&& ((Close[0] - (Open[0])) >= 5)
&& ((Close[1] - (Open[1])) >= 5) && Position.MarketPosition == MarketPosition.Flat )
{
Print(Time[0] + " Adding Long Position");
Draw.ArrowUp(this, @"EEdgeScalping Arrow up_1", true, 0, (Low[0] - 1) , Brushes.Lime);
EnterLong(Convert.ToInt32(DefaultQuantity), "");
StopLoss = 0;
ProfitTarget = 0;
}
if (Position.MarketPosition == MarketPosition.Long)
{
Print(Time[0] + " Setting ProfitTarget and StopLoss");
if (ProfitTarget == 0 || ProfitTarget < Close[2])
{
if (ProfitTarget == 0)
{
ProfitTarget = Position.AveragePrice + 10;
}
else
{
ProfitTarget = Close[2];
}
Print(Time[0] + " Setting ProfitTarget to " + ProfitTarget);
SetProfitTarget("", CalculationMode.Price, ProfitTarget);
}
if (StopLoss == 0 || Open[2] > StopLoss)
{
StopLoss = Open[2];
Print(Time[0] + " SettingStopLoss to " + StopLoss);
SetStopLoss("", CalculationMode.Price, StopLoss, false);
}
}
}
}
}
I am not sure why my code is not entering if (Position.MarketPosition == MarketPosition.Long) -when I am adding Long Position.
Please see the log.
12/13/2023 5:40:00 AM Adding Long Position 12/13/2023 5:45:00 AM Setting ProfitTarget and StopLoss 12/13/2023 5:45:00 AM Setting ProfitTarget to 16630.75 12/13/2023 5:45:00 AM SettingStopLoss to 16606.5 12/13/2023 5:50:00 AM Setting ProfitTarget and StopLoss 12/13/2023 5:50:00 AM SettingStopLoss to 16611.5 12/13/2023 5:55:00 AM Adding Long Position 12/13/2023 7:45:00 AM Adding Long Position 12/13/2023 11:10:00 AM Adding Long Position 12/13/2023 11:25:00 AM Adding Long Position 12/13/2023 11:40:00 AM Adding Long Position 12/13/2023 11:45:00 AM Adding Long Position 12/13/2023 12:35:00 PM Adding Long Position 12/13/2023 12:40:00 PM Adding Long Position 12/13/2023 4:20:00 PM Adding Long Position 12/14/2023 12:30:00 AM Adding Long Position 12/14/2023 5:45:00 AM Adding Long Position 12/14/2023 8:50:00 AM Adding Long Position 12/14/2023 11:05:00 AM Adding Long Position 12/14/2023 11:20:00 AM Adding Long Position 12/14/2023 11:25:00 AM Adding Long Position 12/14/2023 11:30:00 AM Adding Long Position 12/14/2023 3:20:00 PM Adding Long Position 12/15/2023 3:15:00 AM Adding Long Position 12/15/2023 6:00:00 AM Adding Long Position 12/15/2023 6:05:00 AM Adding Long Position 12/15/2023 6:40:00 AM Adding Long Position 12/15/2023 6:45:00 AM Adding Long Position 12/15/2023 7:10:00 AM Adding Long Position 12/15/2023 7:55:00 AM Adding Long Position 12/15/2023 8:25:00 AM Adding Long Position 12/15/2023 8:30:00 AM Adding Long Position 12/15/2023 10:30:00 AM Adding Long Position 12/15/2023 11:10:00 AM Adding Long Position 12/15/2023 12:55:00 PM Adding Long Position 12/17/2023 11:45:00 PM Adding Long Position 12/18/2023 12:40:00 AM Adding Long Position 12/18/2023 7:00:00 AM Adding Long Position 12/18/2023 7:05:00 AM Adding Long Position 12/18/2023 8:15:00 AM Adding Long Position 12/18/2023 8:20:00 AM Adding Long Position 12/18/2023 8:35:00 AM Adding Long Position 12/18/2023 9:10:00 AM Adding Long Position 12/18/2023 11:45:00 AM Adding Long Position 12/19/2023 3:30:00 AM Adding Long Position 12/19/2023 4:20:00 AM Adding Long Position 12/19/2023 6:40:00 AM Adding Long Position 12/19/2023 7:15:00 AM Adding Long Position 12/19/2023 7:55:00 AM Adding Long Position 12/19/2023 8:45:00 AM Adding Long Position 12/19/2023 10:30:00 AM Adding Long Position 12/19/2023 1:00:00 PM Adding Long Position 12/20/2023 6:35:00 AM Adding Long Position 12/20/2023 6:40:00 AM Adding Long Position 12/20/2023 6:45:00 AM Adding Long Position 12/20/2023 7:10:00 AM Adding Long Position 12/20/2023 7:25:00 AM Adding Long Position 12/20/2023 9:45:00 AM Adding Long Position 12/21/2023 1:15:00 AM Adding Long Position 12/21/2023 3:10:00 AM Adding Long Position 12/21/2023 5:40:00 AM Adding Long Position 12/21/2023 5:45:00 AM Adding Long Position 12/21/2023 7:20:00 AM Adding Long Position 12/21/2023 7:25:00 AM Adding Long Position 12/21/2023 8:05:00 AM Adding Long Position 12/21/2023 8:30:00 AM Adding Long Position 12/21/2023 11:00:00 AM Adding Long Position 12/21/2023 11:35:00 AM Adding Long Position 12/21/2023 12:20:00 PM Adding Long Position 12/21/2023 12:25:00 PM Adding Long Position 12/21/2023 12:30:00 PM Adding Long Position 12/21/2023 12:55:00 PM Adding Long Position 12/22/2023 12:35:00 AM Adding Long Position 12/22/2023 5:45:00 AM Adding Long Position 12/22/2023 6:45:00 AM Adding Long Position 12/22/2023 11:45:00 AM Adding Long Position 12/22/2023 11:50:00 AM Adding Long Position 12/22/2023 11:55:00 AM Adding Long Position 12/22/2023 12:00:00 PM Adding Long Position 12/26/2023 1:35:00 AM Adding Long Position 12/26/2023 7:40:00 AM Adding Long Position 12/26/2023 8:15:00 AM Adding Long Position 12/26/2023 8:35:00 AM Adding Long Position 12/26/2023 9:50:00 AM Adding Long Position 12/26/2023 12:30:00 PM Adding Long Position 12/26/2023 12:35:00 PM Adding Long Position 12/27/2023 10:10:00 AM Adding Long Position 12/27/2023 11:25:00 AM Adding Long Position 12/27/2023 11:30:00 AM Adding Long Position 12/27/2023 12:05:00 PM Adding Long Position 12/27/2023 1:05:00 PM Adding Long Position 12/28/2023 7:30:00 AM Adding Long Position 12/28/2023 10:40:00 AM Adding Long Position 12/28/2023 12:45:00 PM Adding Long Position 12/28/2023 1:05:00 PM Adding Long Position Enabling NinjaScript strategy 'EEdgeScalpingUnlocked/312501231' : On starting a real-time strategy - StartBehavior=WaitUntilFlat EntryHandling=All entries EntriesPerDirection=1 StopTargetHandling=By strategy position ErrorHandling=Stop strategy, cancel orders, close positions ExitOnSessionClose=True / triggering 30 seconds before close SetOrderQuantityBy=Strategy ConnectionLossHandling=Recalculate DisconnectDelaySeconds=10 CancelEntriesOnStrategyDisable=False CancelExitsOnStrategyDisable=False Calculate=On bar close IsUnmanaged=False MaxRestarts=4 in 5 minutes

Comment