This code extract works under unmanaged approach. It's pretty basic, one account and one instrument.
protected override void OnAccountItemUpdate(Account account, AccountItem accountItem, double value) { daypnl=Account.Get(AccountItem.RealizedProfitLoss, Currency.UsDollar)+Account.Get(AccountItem.UnrealizedProfitLoss, Currency.UsDollar); if ( daypnl >= Maxpro || daypnl <= -Maxlos ) { if (Position.MarketPosition == MarketPosition.Short) { if ( stoptrading==0 ) { if ( setshort != null ) { CancelOrder(setshort); } if ( setshort == null ) { if ( setlong == null ) { setlong = SubmitOrderUnmanaged(0, OrderAction.BuyToCover, OrderType.Limit, Position.Quantity, (Close[0]+stop*TickSize), 0, "", "EXITSHORT"); } else { ChangeOrder( setlong, Position.Quantity, (Close[0]+stop*TickSize), 0); } stoptrading=1; SendMail (********); } } } else if (Position.MarketPosition == MarketPosition.Long ) { if ( stoptrading==0 ) { if (setlong != null ) { CancelOrder(setlong); } if (setlong == null ) { if (setshort == null ) { setshort = SubmitOrderUnmanaged(0, OrderAction.Sell, OrderType.Limit, Position.Quantity, (Close[0]-stop*TickSize), 0, "", "EXITLONG"); } else { ChangeOrder( setshort, Position.Quantity, (Close[0]-stop*TickSize), 0); } stoptrading=1; SendMail (*****); } } } else { stoptrading=1; } } }
Leave a comment: