← Zurück

Фундаментальные вопросы на злободневные темы

Не простые вопросы на сложные темы:

  • Вопрос к процессам протекающим в S#. Могу ли я создать несколько потоков для расчета стратегии во время цикла перебора параметров? Для каждой стратегии нам нужно свое хранилище исторических данных, трейдер, секьюрити и портфолио. Чтобы не клонировать их каждый раз, я могу создать для одного потока одно хранилище, копию одного трейдера, один секьюрити и один портфолио, чтобы внутри этого потока итерировать только стратегию с новыми параметрами? А потом копировать эти потоки, например, до 4 для загрузки всех ядер процессора и максимального распараллеливания. Это я к тому, чтобы не плодить одинаковые данные лишний раз. А в каждую новую стратегию передавать новые параметры. Возможно ли это?

  • Как вывести свои данные на график? Например, я беру текущее значение индикатора MA умножаю его на 2 и получаю какое-то значение. Как мне сохранить это значение? В каком формате сохранять (в файл txt, xaml, в коллекцию или как-то еще)? Как мне его потом вывести на график из хранилаща? Интересуют самые производительные варианты.

War dieses Thema hilfreich?

Thema teilen

Kommentare (1)

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

IvanB
IvanB

Bond: Не простые вопросы на сложные темы:

  • Вопрос к процессам протекающим в S#. Могу ли я создать несколько потоков для расчета стратегии во время цикла перебора параметров? Для каждой стратегии нам нужно свое хранилище исторических данных, трейдер, секьюрити и портфолио. Чтобы не клонировать их каждый раз, я могу создать для одного потока одно хранилище, копию одного трейдера, один секьюрити и один портфолио, чтобы внутри этого потока итерировать только стратегию с новыми параметрами? А потом копировать эти потоки, например, до 4 для загрузки всех ядер процессора и максимального распараллеливания. Это я к тому, чтобы не плодить одинаковые данные лишний раз. А в каждую новую стратегию передавать новые параметры. Возможно ли это? Вообще распараллеливание тестирования может быть сделано в разных направлениях, где-то я об этом писал на форуме. Идеальный вариант, когда все параллельные потоки не зависимы по обработке, в том числе и по всем используемым ресурсам. Если объект используется в разных потоках, при этом не изменяется, то думаю, можно его использовать во всех потоках (например хранилище данных), другое дело, если объект подвергается изменениям в потоках, например трейдер (генерируются события, на разные сигналы - новая свеча и т.д.), то такой объект должен быть индивидуален для каждого потока.

Bond:

  • Как вывести свои данные на график? Например, я беру текущее значение индикатора MA умножаю его на 2 и получаю какое-то значение. Полагаю, надо создавать свой индикатор.

Bond: Как мне сохранить это значение? В каком формате сохранять (в файл txt, xaml, в коллекцию или как-то еще)? Самый быстрый вариант по производительности и затратам сил, сохранение в коллекцию, но коллекции тоже разные есть, в плане производительности, выбор зависит от потребностей, Думаю, самый выгодный вариант, хранить значения в списке List<>. Сохранять через сериализацию: http://msdn.microsoft.com/ru-ru/library/ms233843.aspx http://msdn.microsoft.com/ru-ru/library/szzyf24s.aspx

Bond: Как мне его потом вывести на график из хранилаща? Десериализовать данные и пробегая по всем значениям, стандартным образом выводить на график, где на каждой итерации:

var chartValueMy = new ChartIndicatorValue(_indicatorMy, <одно значение из десериализованных данных>);
Chart.ProcessValues(candle.OpenTime, new Dictionary<IChartElement, object>
                    {
                        {_chartIndicatorMyElement, chartValueMy}
                    })
Bond pft_man