Проблемы экспорта
Atom Ответить
18.03.2012


Появилась потребность экспорта тиков в текстовый формат для загрузки в Amibroker.
Использовал версию гидры 4.0.22
Обнаружил такие проблемы и неточности.
1) Солюшн не собирается из-за постбилда плагина Plaza. Не находит какой-то файл. Мне не надо. Отключил.
2) Экспорт не возможен без загрузки данных в грид. Это косяк, потому что на большое количество строк грид памяти жрёт немеряно.
Нет информации об окончании экспорта, кроме отвисания формы. Поправил. И то, и другое и зависание. Раз доступ мне не дали, берите файлы отсюда.
TradesWindow.rar 3,1KB (0)

Теги:


Спасибо:




36 Ответов
< 1 2 
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 24.03.2012
Ответить


VassilSanych Перейти

Для того, чтобы такое поведение было возможно не только в методах с перебором в цикле (как сейчас), но и, допустим, в выгрузке в XML,
необходимо, чтобы ReadRange принимал на вход делегат информирования и сам дёргал его по приращению даты или по каждой сделке.


Зачем, если можно не устраивать перекрестную зависимость и сделать код элегантнее?

Код

var totalDates = to - from;
var percPerDate = 100 / totalDates;

for from to
{
  foreach (var trade in Read(curr))
  {
    FormatToFile(trade);
  }

  progress.Value += percPerDate;
}


В принципе можно хранилище добавить функцию определения кол-во записей (оно храниться в метаданных), и тогда можно обновлять прогресс бар, скажем, для каждой 100-ой сделки.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 24.03.2012
Ответить


VassilSanych Перейти
Если это баг, то придётся править выгрузку назад (и прогресс), потому что я её уже поправил.
Строго говоря по английски to - означает до (не включая), а включая - thru


Я уже залил фикс, но все равно мне кажется чтение диапазоном не совсем хорошая вещь для данного случая (написал выше).

VassilSanych Перейти

1. не согласен: pdb необходим для отладки и более точной информации об ошибках в рантайме
2-3. сборка SmartFormat в References собрана мной в релиз-режиме 4.0 Client
4. строка и так читается из текстового файла
5-6 на данный момент мне это не интересно (свечки Ами и так сам рисует, а Метас я не использую). Тот формат, который я оставил, более-менее соответствует изначальному формату Финама и воспринимается Амиброкером (код инструмента удобен для автоматического создания инструмента в Ами при загрузке и стыковке данных из нескольких файлов)


1. xml еще лучше для intellisence
2. что такое client?
4. все правильно. только сейчас при каждом апдейте Гидры вам нужно будет переписывать свой файл заново. Ваш формат не подходит, так как он номер игнорирует, а для коммон формата нужны все поля. Поэтому и предлагаю добавить поддержку нескольких форматов.
5. Ами умеет делать насколько я знаю только ТФ свечки, и не произвольного интервала. Поэтому, для таких ограниченных программ я в Гидру и добавил формирование свечек, чтобы они интерпретировались как обычные свечки, и тем самым могли бы отрисовываться. Более того, при небольшом телодвижении можно сделать через Гидру RT feed.

VassilSanych Перейти

Вообще конечно круче было бы заменить SmartFormat (который подтормаживает из-за рефлексии) на кодогенерацию обычного string.Format по шаблону T4, но больно много работы.


А сколько по времени сейчас для РИ 1 день выгружается?
Спасибо:

VassilSanych

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



Делегат - это не перекрёстная зависимость, а всего-лишь обратный вызов (декларироваться он может и там же, где и Read).
Если в вызове нет необходимости, такому параметру можно просто присваивать null в перегруженном методе.

Mikhail Sukhov Перейти

Зачем, если можно не устраивать перекрестную зависимость и сделать код элегантнее?

Код

var totalDates = to - from;
var percPerDate = 100 / totalDates;

for from to
{
  foreach (var trade in Read(curr))
  {
    FormatToFile(trade);
  }

  progress.Value += percPerDate;
}


В принципе можно хранилище добавить функцию определения кол-во записей (оно храниться в метаданных), и тогда можно обновлять прогресс бар, скажем, для каждой 100-ой сделки.


Сейчас примерно так, как описано и работает.
Но экспорт в XML, например, принимает на вход коллекцию и инкапсулирует её перебор.
Т.е. нет доступа к элементу коллекции во время его получения.
Автор топика
Спасибо:

VassilSanych

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


Если нет желания добавлять такую функциональность в ядро, как вариант, можно конечно опять сделать обёртку над коллекцией.

Всё это гипотетически, потому что конкретно мне нынешней функциональности экспорта пока достаточно.
Автор топика
Спасибо:

VassilSanych

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


VassilSanych Перейти

Но экспорт в XML, например, принимает на вход коллекцию и инкапсулирует её перебор.


Только сейчас заметил, что это обычный цикл, но через LINQ.
Не суть.
Просто, считаю, стоит задуматься об более интерактивном интерфейсе получения данных, если это получение занимает ощутимое время.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 24.03.2012
Ответить


VassilSanych Перейти

Просто, считаю, стоит задуматься об более интерактивном интерфейсе получения данных, если это получение занимает ощутимое время.


Это плохой стиль, потому что такие делегаты нужны только для GUI. Смешивать данные и GUI не очень хорошее решение.
Спасибо:

VassilSanych

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


Mikhail Sukhov Перейти


1. xml еще лучше для intellisence
2. что такое client?
4. все правильно. только сейчас при каждом апдейте Гидры вам нужно будет переписывать свой файл заново. Ваш формат не подходит, так как он номер игнорирует, а для коммон формата нужны все поля. Поэтому и предлагаю добавить поддержку нескольких форматов.
5. Ами умеет делать насколько я знаю только ТФ свечки, и не произвольного интервала. Поэтому, для таких ограниченных программ я в Гидру и добавил формирование свечек, чтобы они интерпретировались как обычные свечки, и тем самым могли бы отрисовываться. Более того, при небольшом телодвижении можно сделать через Гидру RT feed.


1. Одно другому не мешает.
2. Уменьшенный вариант .Net Framework. Считается самым совместимым.
4. Это уж как хотите. Ами номер не нужен.
5. Ами делает разные свечки. Даже 100-тиковые и со сдвигом.


=Mikhail Sukhov Перейти

А сколько по времени сейчас для РИ 1 день выгружается?

Минут десять.
String.Format - минуту.
Автор топика
Спасибо:

VassilSanych

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


Mikhail Sukhov Перейти

Я уже залил фикс, но все равно мне кажется чтение диапазоном не совсем хорошая вещь для данного случая (написал выше).

Сообщение заметил только сейчас. Выгрузку не правил.


Автор топика
Спасибо:

Alexander

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


Убрал pdb файл, залил release версию String.Format под .Net 4.0
pdb файлам не место в Reference
Спасибо:

VassilSanych

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


Alexander Mukhanchikov Перейти
Убрал pdb файл .... pdb файлам не место в Reference

Нет желания иметь полный StackTrace, номеров строк в сообщениях об ошибках, возможности построчной отладки? Как хотите.
Автор топика
Спасибо:

Alexander

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


VassilSanych Перейти
Alexander Mukhanchikov Перейти
Убрал pdb файл .... pdb файлам не место в Reference

Нет желания иметь полный StackTrace, номеров строк в сообщениях об ошибках, возможности построчной отладки? Как хотите.


в продакшен системе ничего это в принципе не должно быть.
к тому же String.Format - сторонняя библиотека.

если надо отлаживаться при девелопменте - используйте локальный pdb файл.
Спасибо:
< 1 2 

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

loading
clippy