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

Создание роботов с помощью S#. Введение
Atom
3/19/2012
FinDirector


Решил написать несколько простых статей о том, как можно разрабатывать роботов с использованием библиотеки 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>

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



foRs

Avatar
Date: 3/15/2012
Reply


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

Thanks:

FinDirector

Avatar
Date: 3/15/2012
Reply


foRs: прикольно получилось, а можешь скинуть пример реализации ввиде исходника Всем, кто пришлет свои граали дам исходники целиком![biggrin]

Thanks:

VassilSanych

Avatar
Date: 6/20/2012
Reply


Реестр - не самое лучшее место для хранения состояния. Лучше уж сервис какой и/или БД (MSSQL. У провайдера SQLite тоже проблемы с параллельным доступом).


А вообще - засада. Где статья? Тут только реклама себя любимого в качестве разработчика.

Thanks:

neighbour

Avatar
Date: 11/14/2012
Reply


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

Thanks:

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

Avatar
Date: 11/14/2012
Reply


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

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

Thanks:

Maniac

Avatar
Date: 11/14/2012
Reply


Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy