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


сегодня потестил - работает,
это метод в классе 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[i].Time.Year,
_buffer[i].Time.Month.ToString("D2"),
_buffer[i].Time.Day.ToString("D2"),
_buffer[i].Time.Hour.ToString("D2"),
_buffer[i].Time.Minute.ToString("D2"),_buffer[i].Time.Second.ToString("D2",
_buffer[i].OpenPrice,
_buffer[i].HighPrice, _buffer[i].LowPrice, _buffer[i].ClosePrice,
_buffer[i].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