← Zurück

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

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (3)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Mikhail Sukhov
Mikhail Sukhov

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

denis
denis Autor

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

denis
denis Autor

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