Esempio n. 1
0
        /// <summary>
        /// DBからデータを取得して
        /// アプリケーション設定を最新化する
        /// </summary>
        public void ReloadApplicationSettings()
        {
            // 初期化
            if (ApplicationSettings == null)
            {
                ApplicationSettings = new Dictionary <int, Dictionary <string, string> >();
            }
            ApplicationSettings.Clear();

            // パラメータ読み込み
            using (var db = new MApplicationSettingsDbContext(DbContextOptions))
            {
                // データを取得
                var applicationSettings = db.MApplicationSettings;
                foreach (var applicationSetting in applicationSettings)
                {
                    int recordId = applicationSetting.ExchangeId;
                    if (!ApplicationSettings.ContainsKey(recordId))
                    {
                        ApplicationSettings.Add(recordId, new Dictionary <string, string>());
                    }
                    ApplicationSettings[recordId].Add(applicationSetting.Name, applicationSetting.Value);
                }
            }
            // TODO:取引所ごとに項目が異なるので、アクセサを作成すればよい
        }
Esempio n. 2
0
        /// <summary>
        /// 取引所APIクライアントの抽象クラス
        /// </summary>
        /// <param name="exchangeId">取引所ID(1〜3、例えばFX_BTC_JPYは2)</param>
        /// <param name="dbContextOptions">DB接続</param>
        /// <param name="timeoutSec">Timeout sec.</param>
        public ExchangeClient(
            int exchangeId,
            DbContextOptions dbContextOptions,
            double timeoutSec = 4 // タイムアウト (デフォルト4秒)
            )
        {
            cancelOrderList = new List <Order>();
            ExchangeId      = exchangeId;
            BotStatus       = new Dictionary <string, string>();
            parentOrders    = new List <Order>();

            // TODO:パラメータ更新
            using (var db = new MApplicationSettingsDbContext(dbContextOptions))
            {
                // データを取得
                var ApplicationSettings = db.MApplicationSettings;

                Console.WriteLine("ApplicationSettingsをセットアップします");
                foreach (var ApplicationSetting in ApplicationSettings)
                {
                    // TODO:FXのパラメータをセット
                    if (ApplicationSetting.ExchangeId == exchangeId)
                    {
                        if (ApplicationSetting.Name == "productCode")
                        {
                            PRODUCT_CODE = (ProductCode)Enum.Parse(typeof(ProductCode), ApplicationSetting.Value, true);
                        }
                        if (ApplicationSetting.Name == "apiKey")
                        {
                            apiKey = ApplicationSetting.Value;
                        }
                        if (ApplicationSetting.Name == "apiSelect")
                        {
                            apiSelect = ApplicationSetting.Value;
                        }
                    }
                }
            }

            // DBから取得したAPIキーをセット
            m_apiClient = new ApiClient(
                apiKey,
                apiSelect,
                timeoutSec,
                "https://api.bitflyer.jp"           // TODO:他の取引所に対応させること
                );
        }