сегодня потестил - работает, это метод в классе SMA, дописал под методом Add() выкладываю на шару, может кому пригодится :)
// формат финама
// <DATE>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>
//
20100301,103000,1587.00000,1599.89000,1587.00000,1599.70000,102816 public void Save(string fpath) { using (StreamWriter sw = File.CreateText(fpath)) { for (int i = 0; i < _buffer.Count; i++) { sw.WriteLine("{0}{1}{2},{3}{4}{5},{6},{7},{8}, {9},{10}", _buffer.Time.Year, _buffer.Time.Month.ToString("D2"), _buffer.Time.Day.ToString("D2"), _buffer.Time.Hour.ToString("D2"), _buffer.Time.Minute.ToString("D2"),_buffer.Time.Second.ToString("D2", _buffer.OpenPrice, _buffer.HighPrice, _buffer.LowPrice, _buffer.ClosePrice, _buffer.TotalVolume); } } }
Комментарии (3)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Это для того, чтобы не загружать каждый раз с финама? Интересно. А можете прислать полные исходники на мыло? Я вставлю в дистрибутив с адресом на это сообщение. Ок?
ага, ща только допишу конфиг в xml и потестирую. Оказывается xml такой прикольный язык, можно запихать любые данные с любыми тегами в один файл, вот и будет конфигом для всяких настроек и переменных с переносом через ночь :)
хех :) ага, прикольный :) запутался в нем и его обработчиках, потому сейчас все просто и коряво. private void load_config(string cpath) { //load system config - корявый метод. Только на чтение. XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(cpath); XmlNodeList xmlNodes = xmlDocument.GetElementsByTagName("system"); foreach (XmlNode node in xmlNodes) { XmlNodeReader xmlNodeReader = new XmlNodeReader(node); xmlNodeReader.Read(); xmlNodeReader.Read();
xmlNodeReader.ReadElementContentAsString();
можно сделать для нескольких ботов в цикле. Только чтение потому что записывать туда я не умею :) еще не разобрался //load bot config //тут перебор xmlNodes = xmlDocument.GetElementsByTagName("bot"); foreach (XmlNode node in xmlNodes) { Console.WriteLine("loading config for bot" + node.Attributes["id"].Value + ":"); XmlNodeReader xmlNodeReader = new XmlNodeReader(node); xmlNodeReader.Read(); xmlNodeReader.Read();
xmlNodeReader.ReadElementContentAsString(); //acc_forts = xmlNodeReader.ReadElementContentAsString(); mysec = xmlNodeReader.ReadElementContentAsString(); string description = xmlNodeReader.ReadElementContentAsString();
аккунт: " + acc + " мой папир: " + mysec); Console.WriteLine(description); } ну и далее гибкий выбор параметров для чтения с возможностью записи в любой последовательности //тут выборочный доступ xmlNodes = xmlDocument.GetElementsByTagName("rnd"); foreach (XmlNode node in xmlNodes) { Console.WriteLine("выборочный доступ: ид = " + node.Attributes["id"].Value); Console.WriteLine("аккаунт: " + node.Attributes["account_mmvb"].Value); Console.WriteLine("файл истории: " + node.Attributes["history"].Value); //var t = node.Name; this.Path.Text = qpath; this.Account.Text = node.Attributes["account_mmvb"].Value; } а это кнопка сохранения private void test_button_Click(object sender, RoutedEventArgs e) { //save config //с сохранением элементов вилы :) проще работать с атрибутами XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(config); XmlNodeList xmlNodes = xmlDocument.GetElementsByTagName("rnd"); foreach (XmlNode node in xmlNodes) { Console.WriteLine("существующий аккаунт: " + node.Attributes["account_mmvb"].Value); string hpath = node.Attributes["history"].Value; Console.WriteLine("файл истории: " + hpath); //save bot history if (_strategy != null && hpath != null) _strategy.LongSMA.Save(hpath);
this.Account.Text; Console.WriteLine("сохраняю аккаунт: " + node.Attributes["account_mmvb"].Value); } xmlDocument.Save(config); }
Автору на мыло отправлю архив. примеры есть в "All-In-One Code Framework" на кодплекс :)