сохранялка истории для SampleSMA
Atom
11.03.2010
denis


сегодня потестил - работает, это метод в классе 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); } } }


Теги:


Спасибо:


Mikhail Sukhov

Фотография
Дата: 11.03.2010
Ответить


Это для того, чтобы не загружать каждый раз с финама? Интересно. А можете прислать полные исходники на мыло? Я вставлю в дистрибутив с адресом на это сообщение. Ок?

Спасибо:

denis

Фотография
Дата: 11.03.2010
Ответить


ага, ща только допишу конфиг в xml и потестирую. Оказывается xml такой прикольный язык, можно запихать любые данные с любыми тегами в один файл, вот и будет конфигом для всяких настроек и переменных с переносом через ночь :)

Спасибо:

denis

Фотография
Дата: 11.03.2010
Ответить


хех :) ага, прикольный :) запутался в нем и его обработчиках, потому сейчас все просто и коряво. 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();

           qpath = xmlNodeReader.ReadElementContentAsString();
            string description =

xmlNodeReader.ReadElementContentAsString();

           Console.WriteLine("путь к квику: " + qpath);
            Console.WriteLine(description);
        }

можно сделать для нескольких ботов в цикле. Только чтение потому что записывать туда я не умею :) еще не разобрался //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();

           fpath = xmlNodeReader.ReadElementContentAsString();
            string acc =

xmlNodeReader.ReadElementContentAsString(); //acc_forts = xmlNodeReader.ReadElementContentAsString(); mysec = xmlNodeReader.ReadElementContentAsString(); string description = xmlNodeReader.ReadElementContentAsString();

           Console.WriteLine("путь к истории: " + fpath + "

аккунт: " + 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);

           node.Attributes["account_mmvb"].Value =

this.Account.Text; Console.WriteLine("сохраняю аккаунт: " + node.Attributes["account_mmvb"].Value); } xmlDocument.Save(config); }

Автору на мыло отправлю архив. примеры есть в "All-In-One Code Framework" на кодплекс :)

Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy