I followed the example given in SamplePriceModification_NT8.zip.
I reset my stops when flat.
I tried adding a return.
I tried adding else statements.
I tried reversing the order of the stops from the below.
Can someone advise on this code? Its a play on Pivot levels but my personal ones. But to make it easier to understand I am showing R1, R2, R3, etc (to make it familiar)
THE CODE LOGIC
//Initial Stops and Targets
// Resets the stop loss to the original value when all positions are closed
if (Position.MarketPosition == MarketPosition.Flat)
{
SetStopLoss("Long", CalculationMode.Price, BigT_Auto_Indicator_V21.PriorS1[0], true);
SetStopLoss("LongReverse", CalculationMode.Price, BigT_Auto_Indicator_V21.PriorS1[0], true);
SetStopLoss("Short", CalculationMode.Price, BigT_Auto_Indicator_V21.PriorR1[0], true);
SetStopLoss("ShortReverse", CalculationMode.Price, BigT_Auto_Indicator_V21.PriorR1[0], true);
}
Should I be using ChangeOrder() instead? OR OnOrderUpdate()? Instead of SetStopLoss multiple times? How do I change the below code to PRESERVE the Stop Steps as each triggers rather than Revert?
// Entry Rules - Long and Short signals
(Code omitted for Entries as this is not the problem - it works)
//Exit Rules - Move stops
//Long Stop Trailing
if (Position.MarketPosition == MarketPosition.Long)
{
if (High[0] > BigT_Auto_Indicator_V21.PriorR3M[0])
{
SetStopLoss("Long", CalculationMode.Price, BigT_Auto_Indicator_V21.PriorR2[0], true);
SetStopLoss("LongReverse", CalculationMode.Price, BigT_Auto_Indicator_V21.PriorR2[0], true);
}
if (Close[0] > BigT_Auto_Equilibrium_V21.PriorR2[0])
{
SetStopLoss("Long", CalculationMode.Price, BigT_Auto_Indicator_V21.PriorR2M[0], true);
SetStopLoss("LongReverse", CalculationMode.Price, BigT_Auto_Indictator_V21.PriorR2M[0], true);
}
if (Close[0] > BigT_Auto_Equilibrium_V21.PriorR2M[0])
{
SetStopLoss("Long", CalculationMode.Price, BigT_Auto_Indicator_V21.PriorR1[0], true);
SetStopLoss("LongReverse", CalculationMode.Price, BigT_Auto_Indicator_V21.PriorR1[0], true);
}
if (Close[0] > BigT_Auto_Equilibrium_V21.PriorR1[0])
{
SetStopLoss("Long", CalculationMode.Price, BigT_Auto_Indicator_V21.PriorR1M[0], true);
SetStopLoss("LongReverse", CalculationMode.Price, BigT_Auto_Indicator_V21.PriorR1M[0], true);
}
if (Close[0] > BigT_Auto_Equilibrium_V21.PriorR1M[0])
{
SetStopLoss("Long", CalculationMode.Price, BigT_Auto_Indicator_V21.EntryLine[0] + FluffTickSize * TickSize, true);
SetStopLoss("LongReverse", CalculationMode.Price, BigT_Auto_Indicator_V21.EntryLine[0] + FluffTickSize * TickSize, true);
}
if (BarsSinceEntryExecution() == 5 && Close[0] < Position.AveragePrice)
{
ExitLong(QuantitySize, "TimeStop","Long");
ExitLong(QuantitySize, "TimeStop","LongReverse");
}
if (BarsSinceEntryExecution() == 3 && Close[0] < Position.AveragePrice)
{
ExitLong(QuantitySize, "TimeStop","Long");
ExitLong(QuantitySize, "TimeStop","LongReverse");
}
}
// Short Stop Trailing
(Code omitted as this is same format but reversed for Shorts)

Comment