Example #1
0
 private static void Test0()
 {
     Console.WriteLine("测试故障恢复");
     MemoryDataManager.Start();
     MemoryDataManager.End();
     ExitConsole();
 }
        /// <summary>
        /// 关闭调度管理
        /// </summary>
        public static void Shutdown()
        {
            if (scheduler != null)
            {
                if (scheduler.IsShutdown)
                {
                    return;
                }

                LogHelper.WriteInfo("ScheduleManager.Close");
                scheduler.Shutdown();
            }



            if (IsStartSuccess)
            {
                //DoCloseProcess();
                //add 李健华 这里是为了调用关闭程序时调用后面闭市清算操作不用做延时操作
                IsStartSuccess = false;
                InternalDoClose();
            }
            //因为清算时会先提交内存,所以放在最后再提交(如果不是清算时间的)
            //关闭内存管理器
            MemoryDataManager.End();

            //添加正常退出标志
            //DaoUtil.AddNormalFlag();

            OrderOfferCenter.Instance.DoClose();
        }
Example #3
0
        protected override void GlobalProcess(ScheduleEventArgs args)
        {
            if (args.TimeType != Entity.Contants.Types.TradingTimeType.Open)
            {
                return;
            }
            try
            {
                //1.分红之前提交内存数据
                MemoryDataManager.End();

                StockOpenCloseProcess.DoMelonCutting();
            }
            catch (Exception ex)
            {
                LogHelper.WriteError("现货分红处理异常", ex);
            }
            try
            {
                //重新加载一次
                MemoryDataManager.Start();
            }
            catch (Exception ex)
            {
                LogHelper.WriteError("现货分红加载内存异常", ex);
            }
            //=============
        }
Example #4
0
        private static void InternalDoClose()
        {
            //记录开始清算
            ScheduleManager.IsStockReckoning = true;

            bool isSuccess = DoReckoning();

            if (isSuccess)
            {
                #region update 李健华 2010-06-12  分红登记
                //isSuccess = DoMelonCutting();
                isSuccess = MelonCutService.RegisterMeloncutTable();
                #endregion
                if (isSuccess)
                {
                    DoHistoryDataProcess();
                }
            }
            //这里分红处理后在这里就加载内存表
            ////清算完毕后再重新加载内存资金表内容,为后面其他清算做预委托下单的处理同样操作内存表的数据
            ////内存表管理
            MemoryDataManager.Start();

            ScheduleManager.IsStockReckoning = false;

            ScheduleManager.IsHKReckoning = true;
            isSuccess = DoHKReckoning();
            if (isSuccess)
            {
                DoHKHistoryDataProcess();
            }
            //这里港股完成后也重新加载一个,因为在内部清算的时候已经全过一交提交
            MemoryDataManager.Start();
            ScheduleManager.IsHKReckoning = false;
        }
Example #5
0
        /// <summary>
        /// 多个资金id多线程插入
        /// </summary>
        public static void Test4()
        {
            Console.WriteLine("开始Test4");

            int sum = 0;

            for (int i = 0; i < 1000; i++)
            {
                sum += (i + 1);
            }

            MemoryDataManager.Start();
            var table1 = MemoryDataManager.XHCapitalMemoryList.GetByCapitalAccountLogo(1);
            var table2 = MemoryDataManager.XHCapitalMemoryList.GetByCapitalAccountLogo(2);
            var table3 = MemoryDataManager.XHCapitalMemoryList.GetByCapitalAccountLogo(3);

            Thread t1 = new Thread(RunTableThread);

            t1.Start(table1);

            Thread t2 = new Thread(RunTableThread);

            t2.Start(table2);

            Thread t3 = new Thread(RunTableThread);

            t3.Start(table3);

            Console.WriteLine("总值:{0}", sum);
            ExitConsole();
            MemoryDataManager.End();
        }
Example #6
0
        public static void TestHold1()
        {
            Console.WriteLine("开始TestHold1");
            MemoryDataManager.Start();
            var table1 = MemoryDataManager.XHHoldMemoryList.GetByAccountHoldLogoId(1);
            var hold   = table1.Data;

            ExitConsole();
            MemoryDataManager.End();
        }
Example #7
0
        public static void TestQHCapital1()
        {
            MemoryDataManager.Start();
            var table = MemoryDataManager.QHCapitalMemoryList.GetByCapitalAccountLogo(2);

            //table.AddDelta(1, 2, 3, 4, 5, 6);

            ExitConsole();
            MemoryDataManager.End();
        }
Example #8
0
        private static void Test111()
        {
            MemoryDataManager.Start();

            var table = MemoryDataManager.XHCapitalMemoryList.GetByCapitalAccountAndCurrencyType("010000000402", 2);

            Console.WriteLine(table.Data.FreezeCapitalTotal);

            ExitConsole();
            MemoryDataManager.End();
        }
Example #9
0
        public static void TestHold11()
        {
            Console.WriteLine("开始TestHold11");
            MemoryDataManager.Start();
            var table1 = MemoryDataManager.XHHoldMemoryList.GetByHoldAccountAndCurrencyType("010000000403", "000002", 2);
            var hold   = table1.Data;

            Console.WriteLine(hold.AvailableAmount);

            ExitConsole();
            MemoryDataManager.End();
        }
Example #10
0
        public static void DoOpen()
        {
            LogHelper.WriteInfo("执行期货开市动作DoOpen");

            DoBaseData();

            try
            {
                //还没到开市,不处理
                if (CanDoOpen())
                {
                    if (ScheduleManager.CanEndCache())
                    {
                        MemoryDataManager.End();
                    }
                    DoFutureDayCheck();
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteError("期货开市DoOpen处理异常", ex);
            }
            //add 2010-03-16 添加对期货的清算判断,如果发现前一日没有清算完成则设置期货是否清算异常系统暂停交易,使用期台不能下单
            string   errMsg = "";
            DateTime ReckoningDateTime;
            bool     isReckoning = false;

            isReckoning = StatusTableChecker.IsFutureReckoningFaultRecovery(out ReckoningDateTime, out errMsg);
            if (isReckoning)
            {
                IList <CM_BreedClass> list = MCService.CommonPara.GetAllBreedClass();
                foreach (var item in list)
                {
                    if (item.BreedClassTypeID.Value == (int)GTA.VTS.Common.CommonObject.Types.BreedClassTypeEnum.CommodityFuture ||
                        item.BreedClassTypeID.Value == (int)GTA.VTS.Common.CommonObject.Types.BreedClassTypeEnum.StockIndexFuture)
                    {
                        ScheduleManager.IsFutureReckoningErrorStopTrade = true;
                        break;
                    }
                }
            }
            //else
            //{
            //    ScheduleManager.IsFutureReckoningErrorStopTrade = false;
            //}
            //==================


            ScheduleManager.HasDoneFutureOpen = true;
            ScheduleManager.HasDoneOpenNotify();
        }
Example #11
0
        /// <summary>
        /// Load data from yahoo, and start a streaming data thread to update current price.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void miLoadFromYahooStreaming_Click(object sender, System.EventArgs e)
        {
            //Use yahoo data manager as inner data manager
            YahooDataManager ydm = new YahooDataManager();

            ydm.CacheRoot = FormulaHelper.Root + "Cache";

            //MemoryDataManager manage stock data in memory,
            //Use AddNewPacket to add streaming data packet to it.
            //Use RemoveSymbol to remove data from memory.
            //It takes an inner data manager, all historical data is from the inner data manager
            MemoryDataManager mdm = new MemoryDataManager(ydm);

            //Assign memory data manager to the chart control.
            string s = LoadDataManager(mdm, "MSFT", DataCycle.Day, 200);

            //Avoid flicker when refresh the chart
            ChartControl.MemoryCrossCursor = true;

            //Show 15 days future bar.
            ChartControl.EndTime = DateTime.Today.AddDays(15);
            //Show chart from 8 months ago.
            ChartControl.StartTime = DateTime.Today.AddMonths(-8);

            //You can use mdm.AddNewPacket to add a single bar
            //mdm.AddNewPacket(new DataPacket("MSFT",DateTime.Now,25,28,24,26,100000,26));

            //dcbStream is a DataClientBase class,
            //It will let you add streaming data to MemoryDataManager in a thread.
            if (dcbStream == null)
            {
                dcbStream = new YahooDataClient();
                //You can use other data client,
                //dcbStream = new ProphetDataClient();
                //dcbStream.Login("...","...");

                //When streaming packet arrive, call  dcb_OnStreamingData
                dcbStream.OnStreamingData += new StreamingDataChanged(dcb_OnStreamingData);
                dcbStream.UtcStreamingTime = false;

                //Start the download thread
                dcbStream.StartStreaming(s);
            }
            else
            {
                //SetStreamingSymbol will set symbol for downloading
                //You can use AddSymbol for multi-symbols downloading
                dcbStream.SetStreamingSymbol(s);
            }
        }
Example #12
0
        private void miForexText_Click(object sender, System.EventArgs e)
        {
            MemoryDataManager mdm = new MemoryDataManager(new ForexTextDataManager());
            string            s   = LoadDataManager(mdm, "EURUSD", DataCycle.Parse("Minute15"), 150) + "=X";

//			if (dcbForex==null)
//			{
//				dcbForex = new YahooDataClient();
//				dcbForex.OnStreamingData+=new StreamingDataChanged(dcb_OnStreamingData);
//				dcbForex.UtcStreamingTime = false;
//				dcbForex.StartStreaming(s);
//			}
//			else dcbForex.SetStreamingSymbol(s);
        }
Example #13
0
        public static void TestHold3()
        {
            Console.WriteLine("开始TestHold3");
            MemoryDataManager.Start();

            var    table1 = MemoryDataManager.XHHoldMemoryList.GetByAccountHoldLogoId(1);
            Thread t      = new Thread(RunHoldTableThread);
            TableObj <XHHoldMemoryTable> obj1 = new TableObj <XHHoldMemoryTable>();

            obj1.Table = table1;
            t.Start(obj1);

            ExitConsole();
            MemoryDataManager.End();
        }
Example #14
0
        public static void TestQHHold2()
        {
            Console.WriteLine("开始TestQHHold2");
            MemoryDataManager.Start();
            var table1 = MemoryDataManager.QHHoldMemoryList.GetByAccountHoldLogoId(1);

            table1.ReadAndWrite(hold =>
            {
                hold.CostPrice = 1;

                return(hold);
            });

            ExitConsole();
            MemoryDataManager.End();
        }
Example #15
0
        /// <summary>
        /// 一个资金id多次插入
        /// </summary>
        private static void Test1()
        {
            MemoryDataManager.Start();

            var table = MemoryDataManager.XHCapitalMemoryList.GetByCapitalAccountLogo(2);

            Console.WriteLine("开始Test1");
            //table.AddDelta(1, 1, 1, 1);

            //table.AddDelta(2, 2, 2, 2);

            //table.AddDelta(3, 3, 3, 3);

            ExitConsole();
            MemoryDataManager.End();
        }
 /// <summary>
 ///  开市完成后更新清算状态设置为false以及加载内存表数据
 /// </summary>
 public static void HasDoneOpenNotify()
 {
     if (HasDoneStockOpen && HasDoneFutureOpen)
     {
         //开盘动作完成
         LogHelper.WriteInfo("开盘动作完成,启动内存表管理器");
         try
         {
             MemoryDataManager.Start();
         }
         catch (Exception ex)
         {
             LogHelper.WriteError("开盘动作完成,启动管理器异常", ex);
         }
         HasDoneStockReckoning  = false;
         HasDoneFutureReckoning = false;
     }
 }
Example #17
0
        /// <summary>
        /// 一个资金id多线程插入(带检查)
        /// </summary>
        public static void Test22()
        {
            MemoryDataManager.Start();

            var table = MemoryDataManager.XHCapitalMemoryList.GetByCapitalAccountLogo(1756);

            for (int i = 0; i < 2; i++)
            {
                Thread t = new Thread(Target3);
                TableObj <XHCapitalMemoryTable> obj = new TableObj <XHCapitalMemoryTable>();
                obj.Table = table;
                obj.val   = i + 1;
                t.Start(obj);
            }

            ExitConsole();
            MemoryDataManager.End();
        }
Example #18
0
        /// <summary>
        /// 一个持仓id多线程插入(带检查)
        /// </summary>
        public static void Test222()
        {
            MemoryDataManager.Start();

            XHHoldMemoryTable table = MemoryDataManager.XHHoldMemoryList.GetByAccountHoldLogoId(1375);

            for (int i = 0; i < 5; i++)
            {
                Thread t = new Thread(Target33);
                TableObj <XHHoldMemoryTable> obj = new TableObj <XHHoldMemoryTable>();
                obj.Table = table;
                obj.val   = 200;
                t.Start(obj);
            }

            ExitConsole();
            MemoryDataManager.End();
        }
Example #19
0
        public static void TestHold2()
        {
            Console.WriteLine("开始TestHold2");
            MemoryDataManager.Start();
            var table1 = MemoryDataManager.XHHoldMemoryList.GetByAccountHoldLogoId(1);

            table1.ReadAndWrite(hold =>
            {
                hold.AvailableAmount  += 1;
                hold.BreakevenPrice   += 1;
                hold.CostPrice        += 1;
                hold.FreezeAmount     += 1;
                hold.HoldAveragePrice += 1;

                return(hold);
            });

            ExitConsole();
            MemoryDataManager.End();
        }
Example #20
0
        /// <summary>
        /// Load data from yahoo, and start a streaming data thread to update current price.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
//		private void miLoadFromYahooStreaming_Click(object sender, System.EventArgs e)
//		{
//			//Use yahoo data manager as inner data manager
//			YahooDataManager ydm = new YahooDataManager();
//			ydm.CacheRoot = FormulaHelper.Root+"Cache";
//
//			//MemoryDataManager manage stock data in memory,
//			//Use AddNewPacket to add streaming data packet to it.
//			//Use RemoveSymbol to remove data from memory.
//			//It takes an inner data manager, all historical data is from the inner data manager
//			MemoryDataManager mdm = new MemoryDataManager(ydm);
//
//			//Assign memory data manager to the chart control.
//			string s = LoadDataManager(mdm,"MSFT",DataCycle.Day,200);
//
//			//Avoid flicker when refresh the chart
//			ChartControl.MemoryCrossCursor = true;
//
//			//Show 15 days future bar.
//			ChartControl.EndTime = DateTime.Today.AddDays(15);
//			//Show chart from 8 months ago.
//			ChartControl.StartTime = DateTime.Today.AddMonths(-8);
//
//			//You can use mdm.AddNewPacket to add a single bar
//			//mdm.AddNewPacket(new DataPacket("MSFT",DateTime.Now,25,28,24,26,100000,26));
//
//			//dcbStream is a DataClientBase class,
//			//It will let you add streaming data to MemoryDataManager in a thread.
//			if (dcbStream==null)
//			{
//				dcbStream = new YahooDataClient();
//				//You can use other data client,
//				//dcbStream = new ProphetDataClient();
//				//dcbStream.Login("...","...");
//
//				//When streaming packet arrive, call  dcb_OnStreamingData
//				dcbStream.OnStreamingData +=new StreamingDataChanged(dcb_OnStreamingData);
//				dcbStream.UtcStreamingTime = false;
//
//				//Start the download thread
//				dcbStream.StartStreaming(s);
//			}
//			else
//			{
//				//SetStreamingSymbol will set symbol for downloading
//				//You can use AddSymbol for multi-symbols downloading
//				dcbStream.SetStreamingSymbol(s);
//			}
//		}

//		private void miText_Click(object sender, System.EventArgs e)
//		{
//			LoadDataManager(new TextDataManager(),"TEST", DataCycle.Day,200);
//		}

//		private void miForexText_Click(object sender, System.EventArgs e)
//		{
//			MemoryDataManager mdm = new MemoryDataManager(new ForexTextDataManager());
//			string s = LoadDataManager(mdm,"EURUSD", DataCycle.Parse("Minute15"),150)+"=X";
//
////			if (dcbForex==null)
////			{
////				dcbForex = new YahooDataClient();
////				dcbForex.OnStreamingData+=new StreamingDataChanged(dcb_OnStreamingData);
////				dcbForex.UtcStreamingTime = false;
////				dcbForex.StartStreaming(s);
////			}
////			else dcbForex.SetStreamingSymbol(s);
//		}

//		private void miLoadBond_Click(object sender, System.EventArgs e)
//		{
//			LoadDataManager(new BondTextDataManager(),"ZT1", DataCycle.Parse("Minute10"),200);
//		}

        /// <summary>
        /// Refresh the chart when new data streaming data come
        /// </summary>
        /// <param name="dp"></param>
        private void dcb_OnStreamingData(object sender, DataPacket dp)
        {
            if (dp.Symbol.EndsWith("=X"))
            {
                dp.Symbol = dp.Symbol.Substring(0, dp.Symbol.Length - 2);
            }

            if (ChartControl.HistoryDataManager is MemoryDataManager)
            {
                MemoryDataManager mdm = ChartControl.HistoryDataManager as MemoryDataManager;

                //Add streaming data to mdm
                mdm.AddNewPacket(dp);
                if (ChartControl.Symbol == dp.Symbol)
                {
                    ChartControl.NeedRebind();
                }
                //GC.Collect();  //Release memory
            }
        }
Example #21
0
        /// <summary>
        /// 一个资金id多线程插入
        /// </summary>
        private static void Test2()
        {
            MemoryDataManager.Start();

            var table = MemoryDataManager.XHCapitalMemoryList.GetByCapitalAccountLogo(2);

            Console.WriteLine("开始Test2");

            int sum = 0;

            for (int i = 0; i < 1000; i++)
            {
                sum += (i + 1);
            }

            RunTableThread(table);

            Console.WriteLine("总值:{0}", sum);
            ExitConsole();
            MemoryDataManager.End();
        }
        /// <summary>
        /// 完成清算后操作内存表和更新清算当前的清算状态
        /// </summary>
        public static void ReckoningDoneNotify()
        {
            if (HasDoneFutureReckoning && HasDoneStockReckoning)
            {
                //清算完成
                LogHelper.WriteInfo("清算完成,启动内存表管理器");
                try
                {
                    //先提交再开启
                    MemoryDataManager.End();

                    MemoryDataManager.Start();
                }
                catch (Exception ex)
                {
                    LogHelper.WriteError("清算完成,启动管理器异常", ex);
                }
                HasDoneStockReckoning  = false;
                HasDoneFutureReckoning = false;
            }
        }
Example #23
0
        public static void DoOpen()
        {
            LogHelper.WriteInfo("执行现货开市动作DoOpen");
            try
            {
                //关闭内存表管理器
                if (ScheduleManager.CanEndCache())
                {
                    MemoryDataManager.End();
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteError("现货开市DoOpen处理异常", ex);
            }
            DoBaseData();

            //DoCacheOrder();

            ScheduleManager.HasDoneStockOpen = true;
            ScheduleManager.HasDoneOpenNotify();
        }
Example #24
0
    public override void OnInit()
    {
        Application.runInBackground  = true;
        Debug.unityLogger.logEnabled = true;        //打开log,发布正式版的时候关闭
        macAddress = SystemInfo.deviceUniqueIdentifier;

        //基本数据访问接口
        BaseDataManager.Create();

        //TouchListener.Create();

        //内存池创建
        MemoryDataManager.Create();

        //资源管理器创建
        ResourcesManager.Create();


        UIManager.Create();
        //UIManager.Create();
        LuaManager.Create();
        //网络
    }
Example #25
0
        /// <summary>
        /// 多个资金id多次插入
        /// </summary>
        private static void Test3()
        {
            MemoryDataManager.Start();
            var table1 = MemoryDataManager.XHCapitalMemoryList.GetByCapitalAccountLogo(1);
            var table2 = MemoryDataManager.XHCapitalMemoryList.GetByCapitalAccountLogo(2);
            var table3 = MemoryDataManager.XHCapitalMemoryList.GetByCapitalAccountLogo(3);

            Console.WriteLine("开始Test3");
            //table1.AddDelta(1, 1, 1, 1);
            //table1.AddDelta(-1, -1, -1, -1);
            //table1.AddDelta(1, 1, 1, 1);

            //table2.AddDelta(2, 2, 2, 2);
            //table2.AddDelta(-2, -2, -2, -2);
            //table2.AddDelta(2, 2, 2, 2);

            //table3.AddDelta(3, 3, 3, 3);
            //table3.AddDelta(-3, -3, -3, -3);
            //table3.AddDelta(3, 3, 3, 3);

            ExitConsole();
            MemoryDataManager.End();
        }
Example #26
0
    public override void OnInit()
    {
        Application.runInBackground = true;
        Debug.logger.logEnabled     = true;    //打开log,发布正式版的时候关闭


        //基本数据访问接口
        BaseDataManager.Create();

        TouchListener.Create();

        //内存池创建
        MemoryDataManager.Create();

        //资源管理器创建
        ResourcesManager.Create();


        UIManager.Create();

        CatnapWebMgr.CreateSelf <CatnapWebMgr> ();       //网络暂时注掉了,之后会打开

        //TestGPS.Create ();//打开gps
    }
Example #27
0
 public InMemoryCustomersController(MemoryDataManager <Customer> _customersManager)
 {
     customersManager = _customersManager;
 }
Example #28
0
        /// <summary>
        /// 一个资金id多次插入
        /// </summary>
        private static void Test1T()
        {
            MemoryDataManager.Start();

            var table  = MemoryDataManager.XHCapitalMemoryList.GetByCapitalAccountLogo(2);
            var table1 = MemoryDataManager.XHHoldMemoryList.GetByAccountHoldLogoId(4);

            Console.WriteLine("开始Test1T");
            XH_CapitalAccountTable_DeltaInfo delta = new XH_CapitalAccountTable_DeltaInfo();

            delta.AvailableCapitalDelta = 1;

            XH_AccountHoldTableInfo_Delta holdDelta = new XH_AccountHoldTableInfo_Delta();
            var data = table1.Data;

            holdDelta.Data = data;
            holdDelta.AccountHoldLogoId    = data.AccountHoldLogoId;
            holdDelta.AvailableAmountDelta = 1;
            holdDelta.FreezeAmountDelta    = 1;

            Database database = DatabaseFactory.CreateDatabase();

            using (DbConnection connection = database.CreateConnection())
            {
                connection.Open();
                DbTransaction transaction = connection.BeginTransaction();

                bool isSuccess = false;
                try
                {
                    //table.AddDeltaToDB(delta, database, transaction);

                    //MakeException();

                    //table.AddDeltaToDB(delta, database, transaction);
                    //table.AddDeltaToDB(delta, database, transaction);

                    //table1.AddDeltaToDB(holdDelta,database,transaction);
                    transaction.Commit();
                    isSuccess = true;
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    isSuccess = false;
                    Console.WriteLine("Exception:" + ex.Message);
                }

                if (isSuccess)
                {
                    //table.AddDeltaToMemory(delta);
                    //table.AddDeltaToMemory(delta);
                    //table.AddDeltaToMemory(delta);

                    //table1.AddDeltaToMemory(holdDelta);
                }
            }
            Console.WriteLine(table.Data.AvailableCapital);
            Console.WriteLine(table1.Data.AvailableAmount);


            ExitConsole();
            MemoryDataManager.End();
        }