Beispiel #1
0
        protected override void RecalcBotStructs(CBotEventStruct botEvent)
        {
            base.RecalcBotStructs(botEvent);



            EnmBotEventCode evCode = botEvent.EventCode;

            if (EnmBotEventCode.OnTraderConnected == evCode)
            {
                OnTraderConnected();
                if (_tradersDispatcher != null)
                {
                    _tradersDispatcher.EnqueueUpdateDealsLog(BotId);
                }
            }
            else if (EnmBotEventCode.OnTimeDisableTradeLoaded == evCode)
            {
                CDisableTradeData dtl        = (CDisableTradeData)botEvent.Data;
                string            instrument = botEvent.Isin;
                if (_subBots.ContainsKey(instrument))
                {
                    _subBots[instrument].UpdateBotsDisableTrading(dtl);
                }
            }
            //2018-04-25
            else if (EnmBotEventCode.OnForceUpdTotalVM == evCode)
            {
                //note recalc of VM was already done in CBotBase
                if (_tradersDispatcher != null)
                {
                    _tradersDispatcher.EnqueueUpdateVm(BotId);
                }
            }
        }
Beispiel #2
0
 public CBotEventStruct(string isin, EnmBotEventCode evCode, object data)
 {
     DtTmEvent = DateTime.Now;
     EventCode = evCode;
     Isin      = isin;
     Data      = data;
 }
        public CTradeTimer(string name, CBotBase bot, EnmBotEventCode evCode, double expTimeMS)
        {
            m_timer = new Timer(expTimeMS);
            m_bot   = bot;
            m_name  = name;

            m_timer.Elapsed += new ElapsedEventHandler(OnTimerExpired);

            m_evBot = evCode;
        }
Beispiel #4
0
        public COnlineDetector(Action <EnmBotEventCode, object> onTimeExpired, EnmBotEventCode botEventCode,
                               int parTimeAfterUpdateMs = 500, int parTimeAfterObjectCreated = 9000)
        {
            _parTimeAfterUpdateMs      = parTimeAfterUpdateMs;
            _parTimeAfterObjectCreated = parTimeAfterObjectCreated;

            _botEventCode = botEventCode;
            OnTimeExpired = onTimeExpired;

            CUtil.TaskStart(TaskCheckOrdersOnline);
        }
        public void Process(CTableRecrd record)
        {
            //TODO normal
            //  if (!_client.IsOnlineUserOrderLog)
            //    _client.IsOnlineUserOrderLog = true;

            _onlineDetector.Update();


            //TODO check partial acception!
            CRawOrdersLogStruct userOrdLogStruct = new CRawOrdersLogStruct()
            {
                Id_ord = Convert.ToInt64(record.values["ORDERNO"]),
                Ext_id = Convert.ToInt16(record.values["EXTREF"]),
                Dir    = Convert.ToChar(record.values["BUYSELL"]) == 'B' ?
                         (sbyte)EnmOrderDir.Buy : (sbyte)EnmOrderDir.Sell,
                Price      = Convert.ToDecimal(record.values["PRICE"]),
                Amount     = Convert.ToInt16(record.values["QUANTITY"]),
                Instrument = Convert.ToString(record.values["SECCODE"]),
                Action     = (sbyte)CASTSConv.ASTSActionToEnmOrderAction(Convert.ToChar(record.values["STATUS"])),
                Moment     = CASTSConv.ASTSTimeToDateTime(record.values["ORDERTIME"].ToString())
            };



            EnmBotEventCode evnt = EnmBotEventCode.OnEmptyEvent;

            if (userOrdLogStruct.Action == (sbyte)EnmOrderAction.Added)
            {
                evnt = EnmBotEventCode.OnOrderAccepted;
            }
            else if (userOrdLogStruct.Action == (sbyte)EnmOrderAction.Deleted)
            {
                evnt = EnmBotEventCode.OnOrderCancel;
            }
            else if (userOrdLogStruct.Action == (sbyte)EnmOrderAction.Deal)
            {
                evnt = EnmBotEventCode.OnOrderDeal;
            }



            _client.TriggerRecalculateBot(userOrdLogStruct.Ext_id,
                                          userOrdLogStruct.Instrument,
                                          evnt, userOrdLogStruct);

            //foreach(CBotBase bb in
        }
Beispiel #6
0
        /*protected override void OnUserDealsLogics(string instrument)
         * {
         *  base.OnUserDealsLogics(instrument);
         *
         *  if (_subBots.ContainsKey(instrument))
         *      _subBots[instrument].OnUserDealsLogics();
         *
         * }
         */



        protected override void RecalcBotLogics(CBotEventStruct botEvent)
        {
            base.RecalcBotLogics(botEvent);

            //CheckNeedSendStopLossTakeProfit();

            EnmBotEventCode evCode     = botEvent.EventCode;
            string          instrument = botEvent.Isin;

            if (EnmBotEventCode.OnTraderDisconnected == evCode)
            {
                CancellAllBotOrders();
            }


            /*  if (EnmBotEventCode.OnStockUpdate == evCode)
             * {
             *    if (_subBots.ContainsKey(instrument))
             *        _subBots[instrument].OnStockUpdate();
             *
             * }
             */
        }
 public void TriggerRecalcAllBots(EnmBotEventCode evnt, object data)
 {
 }
Beispiel #8
0
 public void TriggerRecalculateBot(int botId, string isin, EnmBotEventCode code, object data)
 {
 }
Beispiel #9
0
        public void Update(FUTTRADE.orders_log ol)
        {
            int i;

            UpdateDictUserOpenedOrders((FUTTRADE.orders_log)ol.Copy());

            mxListRawOrders.WaitOne();

            {
                try
                {
                    //Here we fill "Raw Orders struct list based on replRev/replId

                    for (i = 0; i < m_listRawOrdersStruct.Count; i++)
                    {
                        if (m_listRawOrdersStruct[i].ReplId == ol.replID)
                        {
                            //Seems like this will never happened
                            m_listRawOrdersStruct[i] = new CRawOrdersLogStruct(ol);
                        }
                    }


                    if (i == m_listRawOrdersStruct.Count)
                    {
                        m_listRawOrdersStruct.Add(new CRawOrdersLogStruct(ol));

                        if (ol.action == (sbyte)EnmOrderAction.Deal)
                        {
                        }



                        //TO DO put trigger new log here ?


                        {
                            foreach (CBotBase bt in m_plaza2Connector.ListBots)
                            {
                                if (bt.BotId == ol.ext_id)
                                {
                                    EnmBotEventCode evCode = EnmBotEventCode.OnEmptyEvent;
                                    if (ol.action == (sbyte)EnmOrderAction.Added)
                                    {
                                        evCode = EnmBotEventCode.OnOrderAccepted;
                                        //TEMPO ! comment it

                                        /*   CRawOrdersLogStruct rlstr = new CRawOrdersLogStruct(ol);
                                         * string instr = m_plaza2Connector.Instruments.GetInstrumentByIsinId(ol.isin_id);
                                         * bt.Recalc(instr, EnmBotEventCode.OnOrderAccepted, rlstr);
                                         */
                                    }
                                    else if (ol.action == (sbyte)EnmOrderAction.Deleted)
                                    {
                                        /*  CRawOrdersLogStruct rls = new CRawOrdersLogStruct(ol);
                                         * string isin = m_plaza2Connector.Instruments.GetInstrumentByIsinId(ol.isin_id);
                                         * bt.Recalc(isin, EnmBotEventCode.OnOrderCancel, rls);*/
                                        evCode = EnmBotEventCode.OnOrderCancel;
                                    }
                                    else if (ol.action == (sbyte)EnmOrderAction.Deal)
                                    {
                                        /*  CRawOrdersLogStruct rls = new CRawOrdersLogStruct(ol);
                                         * string isin = m_plaza2Connector.Instruments.GetInstrumentByIsinId(ol.isin_id);
                                         * bt.Recalc(isin, EnmBotEventCode.OnOrderDeal, rls);
                                         */
                                        evCode = EnmBotEventCode.OnOrderDeal;
                                    }


                                    CRawOrdersLogStruct rls = new CRawOrdersLogStruct(ol);



                                    string isin = m_plaza2Connector.Instruments.GetInstrumentByIsinId(ol.isin_id);
                                    bt.Recalc(isin, evCode, rls);
                                }
                            }
                        }
                    }



                    mxListRawOrders.ReleaseMutex();
                }
                catch (Exception e)
                {
                    Error("CUserOrderBox.Update", e);
                }
            }



            //
            // TODO gen here orderslist for each obot
            //
        }