SmartQuant Discussion

Automated Quantitative Strategy Development, SmartQuant Product Discussion and Technical Support Forums
It is currently Thu Sep 19, 2019 7:47 am

All times are UTC + 3 hours




Post new topic Reply to topic  [ 15 posts ] 
Author Message
PostPosted: Mon May 06, 2013 1:40 pm 
Offline

Joined: Thu Feb 04, 2010 3:32 pm
Posts: 45
Добрый день.
Я сделал механизм (использование Reflection и недокументированных возможностей), с помощью которого можно встраивать в OpenQuant пользовательские UserControl-ы. Считаю подобный механизм достаточно удобным, поскольку с его помощью можно реализовать кучу всяких интересных фич - от простенькой панели по управлению стратегией, до специализированных компонентов по проведению и визуализации исследований.

Нарушаю ли я лицензионное соглашение, если:
1) Собственно, разрабатываю подобного рода компоненты
2) Публикую их в открытом виде (бинарники или исходники)
3) Здесь публиковать или нет? :D

С уважением.


Top
 Profile  
 
PostPosted: Tue May 07, 2013 11:17 am 
Offline

Joined: Tue Aug 05, 2003 3:43 pm
Posts: 6816
Интересно и непонятно :) А можете опубликовать один для примера?


Top
 Profile  
 
PostPosted: Tue May 07, 2013 1:01 pm 
Offline

Joined: Thu Feb 04, 2010 3:32 pm
Posts: 45
День добрый. Раз интересно, уже хорошо :D

Давайте чуть детальней тогда.
Итак, имеем:
1) Длл-ка для OpenQuant, которая позволяет встраивать пользовательские UserControl в систему Docking-окон OpenQuant и использовать данный UserControl в коде Scripts, Scenario, Strategy
2) Любой самописный (или нет), UserControl, который пользователь хочет как-то использовать в OpenQuant.
Например, я мегаскальпер и работаю в стакане. Я делаю себе UserControl, который визуализирует стакан из OpenQuant-а и позволяет при клике на грид с ценами в стакане левой кнопкой мышки отправлять приказ на покупку-продажу, а левой кнопкой мышки - снимать. Я создаю проект Strategy в OpenQuant, в обработчике OnStrategyStart пишу вызов моего UserControla со скальперским стаканом (через механизм, описанный в пункте 1) и начинаю свой мегаскальпинг.

На практике я себе вот такой контрол сделал для помощи (я надеюсь) в статарбитраже:
Image

Этот UserControl в свою очередь тоже использует Docking-окна, только уже свои (на базе WeifenLuo.WinFormsUI.Docking). Его вызов осуществляется так (из проекта Script):

Code:
using System;
using System.IO;
using System.Drawing;

using OpenQuant.API;
using OpenQuant.API.Indicators;
using OpenQuant.UserControl;
using System.Linq;

public class MyScript : Script
{
   public override void Run()
   {
      var indexBuilder = UserControlFactory.Open<OpenQuant.Extensions.Special.UserControls.IndexBuilder>();
      var list = indexBuilder.InstrumentContent.UserControl.Instruments;
      list.Clear();
      var toAdd = InstrumentManager.Instruments.Cast<Instrument>().Where(i => i.Symbol.EndsWith("_TEST2"));
      indexBuilder.Invoke(new Action(() =>
         {
         foreach (var instrument in toAdd)
            list.Add(instrument);
         }));
   }
}

Мои вопросы о нарушении/ненарушении соглашения с пользователем касались именно пункта 1. Я предполагаю, что если с пунктом 1 все хорошо, то с пунктом 2 проблем вообще не возникнет - это просто любой наследник System.Windows.Forms.UserControl.

С уважением.


Top
 Profile  
 
PostPosted: Wed May 08, 2013 1:51 pm 
Offline

Joined: Thu Feb 04, 2010 3:32 pm
Posts: 45
Dr. Anton Fokin, судя по всему Вы сегодня были пару раз на форуме и не ответили - значит не интересно вам.
Эх....

В общем, пользователи OpenQuant, кому интересна тема - пишите в PM, вышлю длл-ку.


Top
 Profile  
 
PostPosted: Thu May 09, 2013 9:42 am 
Offline

Joined: Tue Aug 05, 2003 3:43 pm
Posts: 6816
Чего уж так сразу и эх. Просто тут скорее более интересны функциональности дополнительных контролов, чем сама возможность их встраивать. Во встраивании как таковом я ничего плохого не вижу, в принципе мы бы и сами могли добавить такую возможность, но пока народу было достаточно возможности создавать форму в стратегии или скрипте.


Top
 Profile  
 
PostPosted: Thu May 09, 2013 1:48 pm 
Offline

Joined: Thu Feb 04, 2010 3:32 pm
Posts: 45
Ок, раз по вопросу встраивания я ничего не нарушаю - хорошо.
А по поводу функционала контролов - здесь их может быть великое множество, как и стратегий/скриптов. На усмотрение пользователей. Хотя типовые контролы (в том числе и в качестве примера для пользователей) вполне могут быть: MD Trader из VisualQuant, корреляторы, Instrumet Selector'ы, визуализаторы спредов и более сложных синтетических инструментов, построенных по собственным алгоритмам и т.п..
А вообще - можно добавить в OQ новый тип проектов, который бы позволял стоить dataflow и стратегии как в VisualQuant :D. Ваще была бы красота :D


Top
 Profile  
 
PostPosted: Sat May 11, 2013 8:29 am 
Offline

Joined: Tue Jan 25, 2011 2:57 pm
Posts: 134
Добрый день.

Павел вы в очередной раз подняли правильную тему.

Реально с точки зрения ритейла OQ проигрывает в части визуализации данных. На этом форуме уже не однократно поднимался этот вопрос, но насколько мне понятна позиция разрабочиков дорабатывать визуальную часть они не планируют, у них вроде другие приоритеты.

Посмотрел ваши скрин шоты, очень понравилось.

Скажите пожалуйста для отображения графики вы какие библиотеки используете?


Top
 Profile  
 
PostPosted: Sat May 11, 2013 11:19 am 
Offline

Joined: Thu Feb 04, 2010 3:32 pm
Posts: 45
Доброе время суток.
grinboy wrote:
Скажите пожалуйста для отображения графики вы какие библиотеки используете?
Я использую TeeChart .Net. Хотя конечно, есть контролы и получше, например http://www.scichart.com/ - очень хорош.
Лично мне (поскольку я бывший пользователь Wealth-Lab) нехватает в OQ функционала для удобной визуализации и быстрой проверки идеи. Набросал, посмотрел, прогнал в оптимизаторе (своем, а не штатном OQ) - а дальше уже пишешь детальную стратегию в OQ. Да, получается своего рода "двойная работа" - писать стратегию под 2 программных интерфейса. Но исходя из возможностей OQ мне часто тяжело понять куда дальше развивать идею. Да и штатная скорость перебора оптимизируемых параметров грусная.
Я уже начинал писать как-то свое дополнение к OQ на WPF - что-то типа OpenWealthQuant :lol:, но застопорился в связи с катастрофической нехваткой времени. Может хоть сейчас руки дойдут


Top
 Profile  
 
PostPosted: Sat May 11, 2013 2:54 pm 
Offline

Joined: Tue Jan 25, 2011 2:57 pm
Posts: 134
Согласен, что приходиться использовать дополнительное ПО. Как минимум для возможности нормальной визуализации. Еще раз призываю разработчиков подумать на эту тему.

Павел, вы не когда не пробовали получать внешним ПО данные из БД OQ? У меня например автоматически обновляются данные в OQ, а для доп. ПО приходится колдовать с их выгрузкой. Я ранее спрашивал на форуме, штатно получить доступ к БД OQ, что бы дергать данные не возможно.

Но может быть есть какие нибудь "недокументированные возможности"?


Top
 Profile  
 
PostPosted: Sat May 11, 2013 3:14 pm 
Offline

Joined: Thu Feb 04, 2010 3:32 pm
Posts: 45
"недокументированные возможности" наверно можно найти. Но они могут быть настолько недокументированными, что будут хаком :wink:
Я бы на вашем месте подумал над 2-мя возможными вариантами:
1) Простой: набросать script в OpenQuant, который бы выгружал данные по определеннму формату в плоский файл. А вы своим сторонним ПО их бы читали. В общем, обмен будет сводиться просто к экзекуции скрипта в OQ.
2) Посложней: сделать WCF-сервис и регистрировать его тем же скриптом OQ при запуске. В данном случае можно даже сделать события о появлении новых данных.


Top
 Profile  
 
PostPosted: Sat May 11, 2013 3:23 pm 
Offline

Joined: Tue Jan 25, 2011 2:57 pm
Posts: 134
как раз и использую вариант номер 1.

в части дописывания модуля к OQ боюсь не вытяну в части знания C#.


Top
 Profile  
 
PostPosted: Sat May 11, 2013 3:33 pm 
Offline

Joined: Thu Feb 04, 2010 3:32 pm
Posts: 45
Если у вас данные будут предоставляться только по запросу от стороннего приложения (т.е. не надо будет по приходу новых данных в OQ кидать их через WCF - т.н. дуплексный вариант), то реализовать подобный механизм несложно. Могу порекомендовать литературу по теме:
Основы Windows Communication Foundation для .NET Framework 3.5 - Резник С. Можно в интернете найти, даже с исходниками примеров. Если не найдете - напишите PM.


Top
 Profile  
 
PostPosted: Sun May 19, 2013 6:10 pm 
Offline

Joined: Thu Feb 04, 2010 3:32 pm
Posts: 45
Quote:
Посложней: сделать WCF-сервис и регистрировать его тем же скриптом OQ при запуске
Вот такая вот штука получилась. Сделал обмен данными на примере StaticAdapter для Wld4:
Image


Top
 Profile  
 
PostPosted: Fri May 24, 2013 3:07 pm 
Offline

Joined: Tue Jan 25, 2011 2:57 pm
Posts: 134
прикольно.

будет время обязательно посмотрю что за штука.


Top
 Profile  
 
PostPosted: Tue Aug 13, 2013 9:37 am 
Offline

Joined: Wed Sep 22, 2010 2:50 pm
Posts: 17
что именно по базе данных интересно?


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 15 posts ] 

All times are UTC + 3 hours


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group