示例#1
0
        /// <summary>
        /// MExchangeテーブルの設定内容で初期化する
        /// </summary>
        public void InitializeExchange()
        {
            // 初期化
            // 資産情報
            CollateralList = InitializeDictionary(CollateralList);

            // 注文情報
            ParentOrderList = InitializeDictionary(ParentOrderList);
            ChildOrderList  = InitializeDictionary(ChildOrderList);

            // 建玉情報
            PositionList = InitializeDictionary(PositionList);

            // 取引所状態情報
            StateList = InitializeDictionary(StateList);

            // テクニカル管理
            TechnicalList = InitializeDictionary(TechnicalList);

            // クライアント
            Client = InitializeDictionary(Client);

            // パラメータ読み込み
            using (var db = new MExchangeDbContext(DbContextOptions))
            {
                // データを取得
                var mExchange = db.MExchange;

                foreach (var item in mExchange)
                {
                    if (item.Enabled == Enabled)
                    {
                        // 資産情報
                        CollateralList.Add(item.Id, new Collateral(new RawCollateral()));

                        // 注文情報
                        ParentOrderList.Add(item.Id, new List <Order>());
                        ChildOrderList.Add(item.Id, new List <Order>());

                        // 建玉情報
                        PositionList.Add(item.Id, new List <Position>());

                        // 取引所状態情報
                        StateList.Add(item.Id, new RawBoardState());

                        // テクニカル管理生成
                        Dictionary <int, PubnubManager> pubnub = null;
                        if (PubnubList.ContainsKey(item.Id))
                        {
                            pubnub = PubnubList[item.Id];
                        }
                        TechnicalList.Add(item.Id, new TechnicalManager(item.Id, pubnub, TimeScaleList, DbContextOptions, TechnicalList));

                        // 通信用クライアント生成
                        Client.Add(item.Id, new BitflyerClient(item.Id, DbContextOptions));
                    }
                }
            }
        }
示例#2
0
 // 現在は1分に1回更新なので注意
 #region Update
 /// <summary>
 /// 毎秒呼び出す
 /// メンテ中は呼ばない
 /// 定義しているもののみ更新する
 /// </summary>
 /// <param name="key">メンテ中は呼ばないようにしているのでキー指定</param>
 /// <param name="ticker"></param>
 public void Update(int key, Ticker ticker)
 {
     // 各テクニカル更新
     if (TechnicalList.ContainsKey(key))
     {
         TechnicalList[key].Update(ticker);
     }
     // 各クライアント更新
     if (Client.ContainsKey(key))
     {
         Client[key].Update();
     }
 }