Создание роботов с помощью S#. Введение
Atom Ответить
18.03.2012


Решил написать несколько простых статей о том, как можно разрабатывать роботов с использованием библиотеки S#.
В саму библиотеку уже входят примеры, но они достаточно простые и их нельзя использовать в реальном приложении.

Предложенная архитектура робота включает следующие особенности:
  • Интерфейс в стиле METRO UI.
  • Паттерн MVVM для написания интерфейса робота.
  • Корректная обработка исключительных ситуаций.
  • Робот позволяет запускать множество различных стратегий на разных торговых системах, разных портфелях и разных инструментах, с различными параметрами, а также позволяет задавать все эти настройки в конфигурационном XML-файле (достаточная гибкость).
  • Хранение состояния робота.
  • Абсолютно компактный и тривиальный код.

Приведу пример конфигурационного файла. В этом примере задается одна стратегия StrikeStrategy. Для нее задается Quik в качестве торговой системы, задается портфель, инструмент RIM2. Для получения исторических данных устанавливается провайдер, получащий данные с ФИНАМа; у него установлены свойства на получение дневных данных по инструменту RIM2. Свое состояние стратегия хранит в ветке реестра Software\FinDirector\StrikeStrategy. Размер позиции равен 20% от капитала в портфеле. Стратегия работает на 5-минутках.

Код
 <FinDirector:StrategyLoader
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:FinDirector="clr-namespace:FinDirector;assembly=FinDirector"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:System="clr-namespace:System;assembly=mscorlib"
  xmlns:Implementation="clr-namespace:FinDirector.Algo.Implementation;assembly=FinDirector.Algo"
  xmlns:Strategies="clr-namespace:FinDirector.Algo.Strategies;assembly=FinDirector.Algo">

  <FinDirector:StrategyLoader.Resources>
    <Implementation:QuikTraderBuilder x:Key="MyQuik" Title="Мой Quik"
      Path="***" Login="***" Password="***" />
    <Implementation:PortfolioSelector x:Key="MyFortsPortfolio" Title="Пенсионный фонд кота Мурзика"
      PortfolioName="***" />

    <!--RIM2 FinamSecurityCode-->
    <System:Int32 x:Key="FinamRTSCode">80996</System:Int32>
    <Implementation:SecuritySelector x:Key="fRTS"
      SecurityCode="RIM2" />
    <Implementation:SecuritySelector x:Key="Si"
      SecurityCode="SiM2" />
  </FinDirector:StrategyLoader.Resources>

  <FinDirector:StrategyLoader.Strategies>

    <Strategies:StrikeStrategy
      TraderBuilder="{StaticResource MyQuik}"
      PortfolioSelector="{StaticResource MyFortsPortfolio}"
      SecuritySelector="{StaticResource fRTS}"
      TimeFrame="0:5:0">
      <Strategies:StrikeStrategy.HistoryCandleProvider>
        <Implementation:FinamHistoryCandleProvider TimeFrame="1.0:0:0" FinamSecurityCode="{StaticResource FinamRTSCode}" />
      </Strategies:StrikeStrategy.HistoryCandleProvider>
      <Strategies:StrikeStrategy.SettingsProvider>
        <Implementation:RegistrySettingsProvider SubKey = "Software\FinDirector\StrikeStrategy" />
      </Strategies:StrikeStrategy.SettingsProvider>
      <Strategies:StrikeStrategy.VolumeSizer>
        <Implementation:MarginVolumeSizer Ratio="0.2" />
      </Strategies:StrikeStrategy.VolumeSizer>
    </Strategies:StrikeStrategy>

  </FinDirector:StrategyLoader.Strategies>

</FinDirector:StrategyLoader>

Автор статьи — Вадим Чижов



Спасибо:




6 Ответов
foRs

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


прикольно получилось, а можешь скинуть пример реализации ввиде исходника
Спасибо:

FinDirector

Фотография
Автор статей
Дата: 15.03.2012
Ответить


foRs Перейти
прикольно получилось, а можешь скинуть пример реализации ввиде исходника

Всем, кто пришлет свои граали дам исходники целиком!BigGrin
Автор топика
Спасибо:

VassilSanych

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


Реестр - не самое лучшее место для хранения состояния. Лучше уж сервис какой и/или БД (MSSQL. У провайдера SQLite тоже проблемы с параллельным доступом).
*******************************************
А вообще - засада. Где статья? Тут только реклама себя любимого в качестве разработчика.
Спасибо:

neighbour

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


Так и не понял можно ли получить исходники? S# еще не до конца изучил и такой проект был бы очень полезен. Если да, то можно скинуть на мыло neighbour1985@mail.ru. Спасибо!
Спасибо:

Геннадий Ванин (Gennady Vanin)

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


Странно...
я месяц назад просил через ЛС и оставлял там Email, а сейчас вообще не нахожу никаких ЛС...

Если можно, то я бы тоже хотел бы получить:
gennadiyvanin чебурашка gmail точка com
Спасибо:

Maniac

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


Спасибо:


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

loading
clippy