Пример #1
0
        // add macro setting to execution list
        public int addMacroSetting(MacroSettingData singleSetting, bool isEdit = false, bool isLoad = false)
        {
            if (!isLoad)
            {
                for (int i = 0; i < setting.Count; i++)
                {
                    if (setting[i].coinName == singleSetting.coinName)
                    {
                        if (!isEdit)
                        {
                            return(-1);
                        }
                        setting[i] = singleSetting;
                        return(1);
                    }
                }

                setting.Add(singleSetting);
            }
            lastPrice.Add(singleSetting.coinName, 0d);

            DataRow dataRow = lastCandleUpdate.NewRow();

            dataRow["week"]  = DateTime.Now.AddMonths(-1);
            dataRow["day"]   = DateTime.Now.AddMonths(-1);
            dataRow["hour4"] = DateTime.Now.AddMonths(-1);
            dataRow["hour1"] = DateTime.Now.AddMonths(-1);
            dataRow["min30"] = DateTime.Now.AddMonths(-1);
            lastCandleUpdate.Rows.Add(dataRow);

            DataTable week_candle_single = new DataTable(singleSetting.coinName);

            week_candle_single.Columns.Add("date", typeof(DateTime));
            week_candle_single.Columns.Add("open", typeof(double));
            week_candle_single.Columns.Add("close", typeof(double));
            week_candle_single.Columns.Add("max", typeof(double));
            week_candle_single.Columns.Add("min", typeof(double));
            week_candle_single.Columns.Add("volume", typeof(double));
            week_candle.Tables.Add(week_candle_single);

            DataTable day_candle_single = new DataTable(singleSetting.coinName);

            day_candle_single.Columns.Add("date", typeof(DateTime));
            day_candle_single.Columns.Add("open", typeof(double));
            day_candle_single.Columns.Add("close", typeof(double));
            day_candle_single.Columns.Add("max", typeof(double));
            day_candle_single.Columns.Add("min", typeof(double));
            day_candle_single.Columns.Add("volume", typeof(double));
            day_candle.Tables.Add(day_candle_single);

            DataTable hour4_candle_single = new DataTable(singleSetting.coinName);

            hour4_candle_single.Columns.Add("date", typeof(DateTime));
            hour4_candle_single.Columns.Add("open", typeof(double));
            hour4_candle_single.Columns.Add("close", typeof(double));
            hour4_candle_single.Columns.Add("max", typeof(double));
            hour4_candle_single.Columns.Add("min", typeof(double));
            hour4_candle_single.Columns.Add("volume", typeof(double));
            hour4_candle.Tables.Add(hour4_candle_single);

            DataTable hour1_candle_single = new DataTable(singleSetting.coinName);

            hour1_candle_single.Columns.Add("date", typeof(DateTime));
            hour1_candle_single.Columns.Add("open", typeof(double));
            hour1_candle_single.Columns.Add("close", typeof(double));
            hour1_candle_single.Columns.Add("max", typeof(double));
            hour1_candle_single.Columns.Add("min", typeof(double));
            hour1_candle_single.Columns.Add("volume", typeof(double));
            hour1_candle.Tables.Add(hour1_candle_single);

            DataTable min30_candle_single = new DataTable(singleSetting.coinName);

            min30_candle_single.Columns.Add("date", typeof(DateTime));
            min30_candle_single.Columns.Add("open", typeof(double));
            min30_candle_single.Columns.Add("close", typeof(double));
            min30_candle_single.Columns.Add("max", typeof(double));
            min30_candle_single.Columns.Add("min", typeof(double));
            min30_candle_single.Columns.Add("volume", typeof(double));
            min30_candle.Tables.Add(min30_candle_single);


            DataTable state_table = new DataTable(singleSetting.coinName);

            state_table.Columns.Add("uuid", typeof(string));
            state_table.Columns.Add("date", typeof(DateTime));
            state_table.Columns.Add("unit", typeof(double));
            state_table.Columns.Add("price", typeof(double));
            state_table.Columns.Add("krw", typeof(double));
            state.Tables.Add(state_table);

            if (!isLoad)
            {
                saveFile();
            }
            return(0);
        }
Пример #2
0
        // load from 'macroSetting.dat' and 'macroState.dat' files
        public int loadFile()
        {
            string macroSettingDataPath = System.IO.Directory.GetCurrentDirectory() + "/macroSetting.dat";
            string macroStateDataPath   = System.IO.Directory.GetCurrentDirectory() + "/macroState.dat";
            string macroOrderDataPath   = System.IO.Directory.GetCurrentDirectory() + "/macroOrder.dat";

            try
            {
                if (!System.IO.File.Exists(macroSettingDataPath))
                {
                    System.IO.File.Create(macroSettingDataPath);
                }
                else
                {
                    string[] reader = System.IO.File.ReadAllLines(macroSettingDataPath);
                    for (int i = 0; i < reader.Length; i++)
                    {
                        string[] singleData = reader[i].Split('\t');
                        if (singleData.Length < 14)
                        {
                            continue;
                        }
                        else
                        {
                            MacroSettingData temp = new MacroSettingData();
                            temp.coinName   = singleData[0];
                            temp.yield      = double.Parse(singleData[1]);
                            temp.krw        = double.Parse(singleData[2]);
                            temp.time       = double.Parse(singleData[3]);
                            temp.week_from  = double.Parse(singleData[4]);
                            temp.week_to    = double.Parse(singleData[5]);
                            temp.day_from   = double.Parse(singleData[6]);
                            temp.day_to     = double.Parse(singleData[7]);
                            temp.hour4_from = double.Parse(singleData[8]);
                            temp.hour4_to   = double.Parse(singleData[9]);
                            temp.hour1_from = double.Parse(singleData[10]);
                            temp.hour1_to   = double.Parse(singleData[11]);
                            temp.min30_from = double.Parse(singleData[12]);
                            temp.min30_to   = double.Parse(singleData[13]);
                            setting.Add(temp);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Fail to load macro setting : " + ex.Message);
                return(-1);
            }
            for (int i = 0; i < setting.Count; i++)
            {
                addMacroSetting(setting[i], false, true);
            }
            try
            {
                if (!System.IO.File.Exists(macroStateDataPath))
                {
                    System.IO.File.Create(macroStateDataPath);
                }
                else
                {
                    string[] reader = System.IO.File.ReadAllLines(macroStateDataPath);
                    for (int i = 0; i < reader.Length; i++)
                    {
                        string[] singleData = reader[i].Split('\t');
                        if (singleData.Length < 6)
                        {
                            continue;
                        }
                        if (!state.Tables.Contains(singleData[0]))
                        {
                            continue;
                        }

                        DataRow tempRow = state.Tables[singleData[0]].NewRow();
                        tempRow["uuid"]  = singleData[1];
                        tempRow["date"]  = DateTime.ParseExact(singleData[2], "u", provider);
                        tempRow["unit"]  = double.Parse(singleData[3]);
                        tempRow["price"] = double.Parse(singleData[4]);
                        tempRow["krw"]   = double.Parse(singleData[5]);
                        state.Tables[singleData[0]].Rows.Add(tempRow);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Fail to load macro state : " + ex.Message);
                return(-2);
            }
            try
            {
                if (!System.IO.File.Exists(macroOrderDataPath))
                {
                    System.IO.File.Create(macroOrderDataPath);
                }
                else
                {
                    string[] reader = System.IO.File.ReadAllLines(macroOrderDataPath);
                    for (int i = 0; i < reader.Length; i++)
                    {
                        string[] singleData = reader[i].Split('\t');
                        if (singleData.Length < 2)
                        {
                            continue;
                        }

                        DataRow tempRow = order.NewRow();
                        tempRow["coinName"] = singleData[0];
                        tempRow["uuid"]     = singleData[1];
                        order.Rows.Add(tempRow);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Fail to load macro order : " + ex.Message);
                return(-3);
            }


            return(0);
        }
Пример #3
0
 public void saveMacroSetting(MacroSettingData setting)
 {
     this.setting = setting;
     saveFile();
 }