I do use the following too,
#region Breakeven and Trailing Stops
// Resets the stop loss to the original value when all positions are closed
switch (Position.MarketPosition)
{
case MarketPosition.Flat:
SetStopLoss(CalculationMode.Ticks, stopLossTicks);
previousPrice = 0;
break;
case MarketPosition.Long:
// Once the price is greater than entry price+ breakEvenTicks ticks, set stop loss to breakeven
if (Close[0] > Position.AvgPrice + breakEvenTicks * TickSize
&& previousPrice == 0)
{
initialBreakEven = Position.AvgPrice + plusBreakEven * TickSize;
SetStopLoss(CalculationMode.Price, initialBreakEven);
previousPrice = Position.AvgPrice;
PrintWithTimeStamp("previousPrice = "+previousPrice);
}
// Once at breakeven wait till trailProfitTrigger is reached before advancing stoploss by trailStepTicks size step
else if (previousPrice != 0 ////StopLoss is at breakeven
&& GetCurrentAsk() > previousPrice + trailProfitTrigger * TickSize
)
{
newPrice = previousPrice + trailStepTicks * TickSize;
SetStopLoss(CalculationMode.Price, newPrice);
previousPrice = newPrice;
PrintWithTimeStamp("previousPrice = "+previousPrice);
}
break;
case MarketPosition.Short:
// Once the price is Less than entry price - breakEvenTicks ticks, set stop loss to breakeven
if (Close[0] < Position.AvgPrice - breakEvenTicks * TickSize
&& previousPrice == 0)
{
initialBreakEven = Position.AvgPrice - plusBreakEven * TickSize;
SetStopLoss(CalculationMode.Price, initialBreakEven);
previousPrice = Position.AvgPrice;
PrintWithTimeStamp("previousPrice = "+previousPrice);
}
// Once at breakeven wait till trailProfitTrigger is reached before advancing stoploss by trailStepTicks size step
else if (previousPrice != 0 ////StopLoss is at breakeven
&& GetCurrentAsk() < previousPrice - trailProfitTrigger * TickSize
)
{
newPrice = previousPrice - trailStepTicks * TickSize;
SetStopLoss(CalculationMode.Price, newPrice);
previousPrice = newPrice;
PrintWithTimeStamp("previousPrice = "+previousPrice);
}
break;
default:
//autoStopA900Traded = false;
break;
}
#endregion

Comment