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