/// <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)); } } } }
// 現在は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(); } }