Example #1
0
        private TransactionError InnerExecute(OrderExecuteEventArgs e)
        {
            TransactionError error = TransactionError.OK;

            try
            {
                var account = TradingSetting.Default.GetAccount(e.AccountId);
                var tran    = account.GetTran(e.TranId);
                if (e.TranId == null)
                {
                    return(TransactionError.TransactionNotExists);
                }
                if (e.ExecutingLot != null)
                {
                    this.PartialExecute(e.ExecutingLot.Value, tran);
                }

                if (!tran.CanExecute)
                {
                    if (tran.IsExecuted)
                    {
                        return(TransactionError.OK);
                    }
                    else
                    {
                        return(TransactionError.TransactionCannotBeExecuted);
                    }
                }
                _executeStrategy.Execute(e);
                //if (!SettingFacade.Default.SettingManager.SystemParameter.NeedsFillCheck(e.Transaction.OrderType))
                //{
                //    Trace.WriteLine("ready to book");
                //    error = this.Book(e);
                //}
                //else
                //{
                //    Trace.WriteLine("executeStrategy.Execute");
                //    _executeStrategy.Execute(e);
                //}
            }
            catch (TransactionException tranEx)
            {
                error = tranEx.ErrorCode;
                Logger.Warn(tranEx.Message);
                Trace.WriteLine(tranEx.Message);
            }
            catch (Exception ex)
            {
                error = TransactionError.RuntimeError;
                Logger.Error(ex);
                Trace.WriteLine(ex.ToString());
            }
            return(error);
        }
Example #2
0
 public bool Execute(OrderExecuteEventArgs e)
 {
     _executeStrategy.Execute(e);
     return(true);
 }