示例#1
0
 public void BuildEratio(string symbol)
 {
     this.symbol   = symbol;
     quoteFilePath = ExecutablePath.Combine($"{symbol}.csv");
     LoadTradeSignals();
     BuildEratio();
 }
示例#2
0
        private void ReduceERatio(List <SignalStat> stat)
        {
            var eratio = new float[timeframes];

            for (var i = 0; i < eratio.Length; i++)
            {
                float sumPro = 0f, sumCons = 0f;
                foreach (var s in stat)
                {
                    sumPro  += s.proCons[i].pro;
                    sumCons += s.proCons[i].con;
                }
                eratio[i] = sumCons == 0f ? 1 : sumPro / sumCons;
            }
            // сохранить в файл
            var fileName = ExecutablePath.Combine($"report_{accountId}_{symbol}.txt");

            using (var sw = new StreamWriter(fileName, false, Encoding.ASCII))
            {
                sw.WriteLine($"Account {accountId}, symbol {symbol}");
                sw.WriteLine($"{signals.Count} trades, M{timeframe}, {timeframes} timeframes");
                sw.WriteLine();
                foreach (var e in eratio)
                {
                    sw.WriteLine(e.ToString("f4", CultureInfo.InvariantCulture));
                }
            }
        }
示例#3
0
 public void BuildEratio(string symbol, List <TradeSignal> signals)
 {
     this.symbol   = symbol;
     quoteFilePath = ExecutablePath.Combine($"{symbol}.csv");
     this.signals  = signals;
     BuildEratio();
 }
示例#4
0
 public void FindSuitableOffset(string symbol)
 {
     this.symbol   = symbol;
     quoteFilePath = ExecutablePath.Combine($"{symbol}.csv");
     LoadTradeSignals();
     FindTimeframeOffest();
 }
示例#5
0
        /// <summary>
        /// save settings in JSON file by default path
        /// </summary>
        public void SaveSettings()
        {
            var path = ExecutablePath.Combine("settings.txt");

            using (var sw = new StreamWriter(path, false, Encoding.UTF8))
            {
                sw.Write(JsonConvert.SerializeObject(this, Formatting.Indented));
            }
        }
示例#6
0
        private void ReadConfig()
        {
            var fileName = ExecutablePath.Combine("settings.ini");
            var ini      = new IniFile(fileName);

            timeframe   = int.Parse(ini.ReadValue("Common", "Timeframe", "120"));
            timeframes  = int.Parse(ini.ReadValue("Common", "Timeframes", "240"));
            quoteOffset = int.Parse(ini.ReadValue("Common", "Offset", "0"));
        }
示例#7
0
        public ModelMock()
        {
            ExecutablePath.InitializeFake(string.Empty);

            Logger.Debug("Trace Init - file : " + ExecutablePath.Combine("Files", "Instruments.txt"));

            var jsonInstruments = System.IO.File.ReadAllText(ExecutablePath.Combine("Files", "Instruments.txt"));
            var jsonContracts   = System.IO.File.ReadAllText(ExecutablePath.Combine("Files", "Contracts.txt"));
        }
示例#8
0
        /// <summary>
        /// ensure the target folder and save the report's time
        /// </summary>
        public static void BuildReport(TraderPool pool)
        {
            var folder = $"{DateTime.Now:yyyy-MM-dd HHmmss}";

            EnsureFolder(folder);
            folder = ExecutablePath.Combine(RootFolder, folder);

            SaveStatisticsReport(pool, folder);
            SaveServerReport(pool, folder);
        }
示例#9
0
        public static void InitDefault()
        {
            var fileName = ExecutablePath.Combine("settings.ini");
            var ini      = new IniFile(fileName);

            connectionString = ini.ReadValue("DB", "SharpConnection", "");
            if (string.IsNullOrEmpty(connectionString))
            {
                throw new Exception($"Connection string was not found, file \"{fileName}\"");
            }
        }
示例#10
0
 private static void SaveSignals(string s, int accountId, string symbol)
 {
     try
     {
         var fname = ExecutablePath.Combine(s.Substring("save ".Length));
         SharpRepo.InitDefault();
         var signals = SharpRepo.GetSignals(accountId, symbol);
         SharpRepo.SaveSignalsToFile(fname, signals);
     }
     catch (Exception e)
     {
         Console.WriteLine("Error: " + e);
     }
 }
示例#11
0
        /// <summary>
        /// create the folder passed if it not exists
        /// </summary>
        private static void EnsureFolder(string subFolder)
        {
            var folder = ExecutablePath.Combine(RootFolder);

            if (!Directory.Exists(folder))
            {
                Directory.CreateDirectory(folder);
            }

            folder = ExecutablePath.Combine(RootFolder, subFolder);
            if (!Directory.Exists(folder))
            {
                Directory.CreateDirectory(folder);
            }
        }
示例#12
0
        public static AppSets ReadSettingsFromFile()
        {
            var path = ExecutablePath.Combine("settings.txt");

            if (!File.Exists(path))
            {
                return(null);
            }

            string json;

            using (var sr = new StreamReader(ExecutablePath.Combine("settings.txt"), Encoding.UTF8))
                json = sr.ReadToEnd();
            return(JsonConvert.DeserializeObject <AppSets>(json));
        }
示例#13
0
        /// <summary>
        /// read the settings from JSON file by its default path
        /// </summary>
        public static TradersSettings ReadSettings()
        {
            TradersSettings settings;
            var             path = ExecutablePath.Combine("settings.txt");

            if (File.Exists(path))
            {
                string json;
                using (var sr = new StreamReader(path, Encoding.UTF8))
                    json = sr.ReadToEnd();
                settings = JsonConvert.DeserializeObject <TradersSettings>(json);
                return(settings);
            }

            settings = MakeDefaultSettings();
            settings.SaveSettings();

            return(settings);
        }
示例#14
0
        /// <summary>
        /// save the report (included in the pool parameter) in a file
        /// </summary>
        private static void SaveStatisticsReport(TraderPool pool, string folder)
        {
            var stat     = pool.statistics;
            var jsonPath = Path.Combine(folder, "rawdata.js");
            var json     = stat.Stringify(false);

            using (var sw = new StreamWriter(jsonPath, false, Encoding.UTF8))
                sw.Write("window.rawdata = " + json);

            // copy report file
            var newPath = ExecutablePath.Combine(folder, "report.html");
            var srcPath = ExecutablePath.Combine("report.html");

            if (File.Exists(newPath))
            {
                File.Delete(newPath);
            }
            File.Copy(srcPath, newPath);
        }
示例#15
0
 private static void BuildEratio(string s, TradeSignalAnalysis analz, string symbol)
 {
     try
     {
         if (s.StartsWith("load "))
         {
             var fname   = ExecutablePath.Combine(s.Substring("load ".Length));
             var signals = SharpRepo.LoadSignalsFromFile(fname);
             analz.BuildEratio(symbol, signals);
         }
         else
         {
             analz.BuildEratio(symbol);
         }
     }
     catch (Exception e)
     {
         Console.WriteLine("Error: " + e);
     }
 }
示例#16
0
        static void Main()
        {
            var          localPath = ExecutablePath.Combine("instance.temp");
            StreamWriter sw        = null;

            try
            {
                sw = new StreamWriter(localPath, false);
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new LoadTestForm());
            }
            catch
            {
                MessageBox.Show("Instance is already running or the folder is read-only");
                return;
            }
            finally
            {
                sw?.Close();
            }
        }
示例#17
0
        /// <summary>
        /// get the reports' times from the "reports" folder
        /// report's time is a part of its filename
        /// </summary>
        public static List <DateTime> ReadReportsTimes()
        {
            var dates = new List <DateTime>();
            var root  = ExecutablePath.Combine(RootFolder);

            if (!Directory.Exists(root))
            {
                return(dates);
            }

            foreach (var dir in Directory.GetDirectories(root))
            {
                var name = Path.GetFileName(dir);
                if (DateTime.TryParseExact(name, "yyyy-MM-dd HHmmss", CultureInfo.InvariantCulture,
                                           DateTimeStyles.None, out var date))
                {
                    dates.Add(date);
                }
            }

            return(dates.OrderByDescending(d => d).ToList());
        }
示例#18
0
        /// <summary>
        /// open the report pointed by its time in a browser
        /// </summary>
        public static void OpenReport(DateTime reportTime)
        {
            var path = ExecutablePath.Combine(RootFolder, $"{reportTime:yyyy-MM-dd HHmmss}", "report.html");

            System.Diagnostics.Process.Start(path);
        }
示例#19
0
 public ServerStatPicker(TradersSettings settings, Logger logMessage)
 {
     this.settings   = settings;
     this.logMessage = logMessage;
     filePath        = ExecutablePath.Combine("serverlog.json");
 }