Cкальперский робо-привод - Glass (бета версия)

Cкальперский робо-привод - Glass (бета версия)
Atom
1/9/2011
denis


Привет всем форумчанам-скальперам.

Хочу поделиться своей собственной разработкой [url=http://stocksharp.com/glass/]Glass[/url]. Понимаю, что сейчас пойдут ахи и вздохи, ну зачем еще один привод, но перед этим небольшая история о приводе и почему он не такой как другие.

Я сам скальпирую примерно 1.5 года. За это время перепробовал почти все известные приводы. В принципе, все они хорошо, но есть один недостаток - негибкие и нет [b]полноценного авто-трейдинга[/b]. Сейчас скальпить с роботами затея бесперспективная (хотя бы посчитать сколько роботов было в TOP 20 ЛЧИ). Уходить полностью в роботы не планирую, многое еще зависит от моих глаз и понимания рынка. Поэтому я начал создавать свой привод, где можно совместить ручной трейдинг и скорость роботов. Сначала появился сам привод:

[img]http://stocksharp.com/glass/images/quotes.png[/img]

Затем я добавил возможность создания стратегий и запуск их в стакане:

[img]http://stocksharp.com/glass/images/strategies.png[/img]

Все, что видно на экране (расцветка, шрифт, форматирование), горячие клавиши и реакция на мышку - это все программируется во встроенном редакторе на C# (заморочки с программированием есть, но я старался их максимально спрятать, так что получилось очень просто). У всех свой уникальный стиль скальпинга, и нельзя его подстраивать под какую ни было программу. Если что-то не понравилось (нужно больше информации, или, наоборот, убрать лишнее), просто меняется код и стакан начинает работать по другому.

Есть еще много всяких плюшек как: одновременная работы с Quik и SmartCOM (привод получился кросс-платформенный), журнала сделок и заявок, экспорта в Excel и т.д..

Программа одновременно платная и бесплатная. Все, что относиться к приводу - бесплатно. Но можно использовать только одну стратегию, которую я придумал для себя. Если необходимо использовать свои наработки, то это уже за лицензию. Цену не ломлю, так как сам не из Москвы и понимаю тех, кто торгует их регионов. Но и чтобы штаны не спадали ;-). 200р в месяц, или купить сразу анлим.

Есть триал версия на полный режим в один месяц. Пока решил сделать бета тестирование. Всем, кто сильно "натестирует", вообще подарю пожизненную лицензию. Я не жадный. А еще хотел бы поработать вместе с теми, кто тоже интересуется автоматизированным скальпингом. Если есть идеи и желание запрограммировать + поделиться со всеми, пишите ответом или в личку. Можно совместно сделать самую продвинутую платформу для скальпинга ;-)

[url=http://stocksharp.com/glass/]Glass[/url] написан с использованием [url=http://stocksharp.com]S#[/url]. Так что, если кто-то захочет использовать привод как тестер для стратегий, чтобы потом их полностью перевести в автономный робот, то теоретически это можно сделать за несколько часов.



<< < 2 3 4 5 6  > >>
dave

Avatar
Date: 2/25/2011
Reply


Привет, Denis и все все. Надоело торговать руками, решил выбрать платформу для робота. Нашел сие гениальное творение. В планах освоить простой стакан - потом купить робо-привод (если окажется что все работоспособно).

Работаю с квиком(пока). Добился появления стакана с позициями. Однако в лог постоянно валятся сообщения и похоже что я не могу выставить ни одной заявки. Подскажите, как побороть, пожалуйста! Извиняюсь за много текста :( 1)Валится куча таких сообщений: System.InvalidOperationException: Инструмент с кодом GZH1 для деривативной позиции не найден. в Ecng.Trading.Quik.QuikTrader.#=qTre19CdRPyKpnVO8WaQdUkvQrIiCuIHe9XcW7RXbC04=.#=qAw6bx57W6lM8GTpXWPCckA==(IList1 #=qw0QSyhxdA2ygktRIeaDpsw==, Func2 #=qUaGr534rtCUVxUZdZlNE8Q==) в Ecng.Trading.Quik.DdeTable.#=qZiwPb3v2t_oT0D7mrAAKDQ==(IList1 #=qGZJOOyj9_11QAXVxoVAHJQ==, Action2 #=qytkU$YIpb54LPXCs3YXrAA==, Action1 #=qrtTaqcpDj5SIhcizQIpeJg==)System.InvalidOperationException: Инструмент с кодом LKH1 для деривативной позиции не найден. в Ecng.Trading.Quik.QuikTrader.#=qTre19CdRPyKpnVO8WaQdUkvQrIiCuIHe9XcW7RXbC04=.#=qAw6bx57W6lM8GTpXWPCckA==(IList1 #=qw0QSyhxdA2ygktRIeaDpsw==, Func2 #=qUaGr534rtCUVxUZdZlNE8Q==) в Ecng.Trading.Quik.DdeTable.#=qZiwPb3v2t_oT0D7mrAAKDQ==(IList1 #=qGZJOOyj9_11QAXVxoVAHJQ==, Action2 #=qytkU$YIpb54LPXCs3YXrAA==, Action1 #=qrtTaqcpDj5SIhcizQIpeJg==)System.InvalidOperationException: Инструмент с кодом RNH1 для деривативной позиции не найден. в Ecng.Trading.Quik.QuikTrader.#=qTre19CdRPyKpnVO8WaQdUkvQrIiCuIHe9XcW7RXbC04=.#=qAw6bx57W6lM8GTpXWPCckA==(IList1 #=qw0QSyhxdA2ygktRIeaDpsw==, Func2 #=qUaGr534rtCUVxUZdZlNE8Q==) в Ecng.Trading.Quik.DdeTable.#=qZiwPb3v2t_oT0D7mrAAKDQ==(IList1 #=qGZJOOyj9_11QAXVxoVAHJQ==, Action2 #=qytkU$YIpb54LPXCs3YXrAA==, Action`1 #=qrtTaqcpDj5SIhcizQIpeJg==)

Что делать?? В квике попытаться отфильтровать ненужные бумаги или что?? Там походу тоже что то подглючивает - не все отфильтровывается.

  1. в Ecng.Trading.Quik.QuikTrader.get_MarketTime()System.ArgumentException: Order с номером '3255563633' дублируется в полученном DDE пакете. Имя параметра: item в Ecng.Trading.Quik.QuikTrader.#=qrXt6ZY0xLmVmdP0T5lJC_d5XbQc9$1mdG9KjUUABw_I=[TItem,TId](Dictionary2 #=qupHND92A8jMQ$oz4s_kFNMNse96Vux3ILEJwSnV17mM=, TItem #=qACR2QcA$$oDZWee5lopzzQ==, IList1 #=qcqvS7KBzswDJgSgvN4YWvA==, TId #=qxVNxom2gYAKy0D4lAkO0Pg==) в Ecng.Trading.Quik.QuikTrader.#=qTre19CdRPyKpnVO8WaQdUkvQrIiCuIHe9XcW7RXbC04=.#=q2n_L7L8$G_jh0GBx824oXw==(IList1 #=qLqq11SNvAcYdahmiJZRJeA==, Func2 #=qA9RaMemF0FK6cf5hebQNJQ==) (это походу постоянная бага отображения заявок в Квике. Но я не знаю критична ли она для гласа - он ругнулся и пошел дальше или что то сбойнуло реально??)

  2. Это тоже регулярная ошибка System.Collections.Generic.KeyNotFoundException: Данный ключ отсутствует в словаре. в System.ThrowHelper.ThrowKeyNotFoundException() в System.Collections.Generic.Dictionary2.get_Item(TKey key) в Glass.GlassQuikTrader.<>c__DisplayClass2.<OnProcessUnknownDdeData>b__0(Portfolio p) в System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable1 source, Func2 predicate) в Glass.GlassQuikTrader.OnProcessUnknownDdeData(String name, IList1 rows) в Ecng.Trading.Quik.QuikTrader.#=qTyEXCG5fxCLPQKsFuORupQ==(String #=qmp5_0wYMdoaIiCu_o72BFg==, IList1 #=qGZJOOyj9_11QAXVxoVAHJQ==) в Ecng.Common.DelegateHelper.SafeInvoke[T1,T2](Action2 handler, T1 arg1, T2 arg2) в #=q2hR5Ek620fAZiffD$Kf9WScub0dKyK3HruD9iJiZ2H3_IvEpwT1aL4$4nskNdoEy.#=qeU4ltJT_L2ZPLPjMKhXWHlhewCz1CrfBHVyNca252vI=.#=q3crMY5u7kzulRnQqfL8rKw==() в Ecng.ComponentModel.EventDispatcher.<>c__DisplayClass1.b__0()

Thanks:

denis

Avatar
Date: 2/26/2011
Reply


  1. позиции по газу, луку, ри - есть? ну тогда нужно добавить эти тикеры в таблицу инструментов.
  2. появляется когда выставляется ордер или когда? что делать чтобы повторить ошибку?
  3. когда появляется? как повторить?
Thanks:

dave

Avatar
Date: 2/27/2011
Reply


[quote=denis;6258]1) позиции по газу, луку, ри - есть? ну тогда нужно добавить эти тикеры в таблицу инструментов.?[/quote] Есть. В понедельник добавлю, проверю. (я так понимаю только в раб. дни тестить получится.) Но кстати, все равно может вам не стоит пользователя заставлять все позиции добавлять? Я вообще через Glass собирался только индексом торговать.

[quote=denis;6258]2) появляется когда выставляется ордер или когда? что делать чтобы повторить ошибку?[/quote] Ошибка появляется просто когда стакан запускаю. Вообще как я написал, могу предположить это из за того что ты не учел что в Квике в таблице заявок могут неверно заявки отображаться(например дублируются). У меня например такое часто бывало когда я в ту же торговую сессию торговал через WEBquik, может из за этого. В принципе не сильно мешало. Надо что бы ваше приложение от этого не "рушилось"

[quote=denis;6258]3) когда появляется? как повторить?[/quote] Определю - сообщю. Для начала мне надо 1) убрать.

Спасибо

Thanks:

denis

Avatar
Date: 2/28/2011
Reply


  1. не позиции, а инструменты. добавить их легко.
  2. не учел что заявки могут дублироваться. думал что эта сущность уникальна.
  3. жду
Thanks:

patch

Avatar
Date: 2/28/2011
Reply


Приветствую ! Установил Ваш привод и возникла такая проблемка - "Ошибка регистрации ордера" при попытках продать\купить. Подскажите - это может быть связано с тем что я торгую на Украинской бирже и коды классов у нас другие (GTS 4 spot & FUTUX 4 future) ?[blush]

Thanks:

dave

Avatar
Date: 2/28/2011
Reply


[quote=denis;6274] 3) жду[/quote] Проверил - та ошибка(System.Collections.Generic.KeyNotFoundException: Данный ключ отсутствует в словаре. ...) появляется сразу после запуска Гласа, даже если ниче в стакане не кликать.

Еще пробовал выставлять заявку левым кликом в самый правый столбец результат - другая ошибка: [code]Ошибка регистрации ордера System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.ArgumentException: Транзакции 'ACCOUNT=9847g; CLIENT_CODE=S#; TRANS_ID=83250207; CLASSCODE=SPBFUT; SECCODE=RIH1; QUANTITY=1; OPERATION=S; TYPE=L; ACTION=NEW_ORDER; PRICE=196365;' не была зарегистрирована. Причина 'Вам запрещена работа по данному торговому счету'. Имя параметра: transactionTxt в #=qCzG06jA5pttFRr53_6g2gGTXqBvaHYS8TGbFa2nwhH0=.#=q304JTuTcHw511pPvyFcIAosKVGnSfnAX0ktZjW5YBs0=(String #=qo9hczXr4ZAfLDcETgSwzwA==, OrderStatus& #=qNnaFmXy$1KhKV9wazFxrcw==, UInt32& #=qN3HdqREy3X11sBA8RsQBIQ==, Int64& #=qUCvWky4AlQ87BxYhTcL7xA==, String& #=qRrFtKPhpm4fCtblEbf7dSA==) в Ecng.Trading.Quik.QuikTrader.#=qDN8Jgv78NY1KqyESakCnnGSmWTZ6IVqiK4F7nGep0XI=(Order #=q17zLtNU0PdgxzOwvds5Ahw==, TransactionBuilder #=q9hD6GoEsg3Ujhb4IYYgPiA==) в Ecng.Trading.Quik.QuikTrader.OnRegisterOrder(Order order) в Ecng.Trading.Algo.BaseTrader.RegisterOrder(Order order) в Ecng.Trading.Algo.MultiTrader.RegisterOrder(Order order) в Ecng.Trading.Algo.Strategies.Strategy.RegisterOrder(Order order) в Glass.Core.GlassStrategy.SellAtLimit(Double price) в Glass.DefaultStrategy.OnSellLeftClick(IGlassQuote quote) в Glass.Core.GlassStrategy.OnMouseLeftClick(MarketDepthColumns column, IGlassQuote quote) в Glass.MarketDepthWindow.MarketDepthWindowActionList.<>c__DisplayClass1c.b__1b(MarketDepthWindowAction a) в Ecng.Collections.CollectionHelper.ForEach[T](IEnumerable1 source, Action1 action) в Glass.MarketDepthWindow.MarketDepthWindowActionList.TryInvokeMouse(MarketDepthColumns column, MouseAction action, ModifierKeys modifierKey) в Glass.MarketDepthWindow.OnCellMouseUp(Object sender, GridCellMouseControllerEventArgs e) --- Конец трассировки внутреннего стека исключений --- в System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) в System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) в System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) в System.Delegate.DynamicInvokeImpl(Object[] args) в System.Windows.RoutedEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) в System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) в System.Windows.UIElement.RaiseEvent(RoutedEventArgs e) в Syncfusion.Windows.Controls.Grid.GridControlBase.OnCellMouseUp(GridCellMouseControllerEventArgs args) в Syncfusion.Windows.Controls.Grid.GridControlBase.RaiseCellMouseUp(MouseControllerEventArgs e) в Syncfusion.Windows.Controls.Grid.GridSelectCellsMouseController.MouseUp(MouseControllerEventArgs e) в Syncfusion.Windows.Controls.Scroll.MouseControllerDispatcher.MouseUp(MouseEventArgs e, Boolean isPreview) в Syncfusion.Windows.Controls.Scroll.MouseControllerDispatcher.OnPreviewMouseUp(MouseButtonEventArgs e) в Syncfusion.Windows.Controls.Scroll.MouseEventTargetCollection.OnPreviewMouseUp(MouseButtonEventArgs e) в Syncfusion.Windows.Controls.Scroll.ScrollControl.OnPreviewMouseUp(MouseButtonEventArgs e) в System.Windows.UIElement.OnPreviewMouseUpThunk(Object sender, MouseButtonEventArgs e) в System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget) в System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target) в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs) в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised) в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args) в System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted) в System.Windows.Input.InputManager.ProcessStagingArea() в System.Windows.Input.InputManager.ProcessInput(InputEventArgs input) в System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport) в System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel) в System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) в System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) в MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter) в System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler) [/code] Спасибо!

PS: Я конечно и сам чайник, но все же количество ошибок реально отпугивает от продукта.

Thanks:

denis

Avatar
Date: 3/2/2011
Reply


[quote=patch;6275]Приветствую ! Установил Ваш привод и возникла такая проблемка - "Ошибка регистрации ордера" при попытках продать\купить. Подскажите - это может быть связано с тем что я торгую на Украинской бирже и коды классов у нас другие (GTS 4 spot & FUTUX 4 future) ?[blush] [/quote] такая ошибка часто бывает из-за неверного торгового счета. Точнее можно сказать после того как Вы покажете лог ошибки.

Thanks:

denis

Avatar
Date: 3/2/2011
Reply


to dave: Транзакции 'ACCOUNT=9847g; CLIENT_CODE=S#; TRANS_ID=83250207; CLASSCODE=SPBFUT; SECCODE=RIH1; QUANTITY=1; OPERATION=S; TYPE=L; ACTION=NEW_ORDER; PRICE=196365;' не была зарегистрирована. Причина 'Вам запрещена работа по данному торговому счету'.

т.е. получается что аккаунт указан ММВБ-шный, а инструмент риха, непорядок. Надо на ммвбшном счету торговать ммвб, а на фортовском фортс. Банально, но факт.

Теперь по багу номер три: да, таки баг. Сейчас залью апдейт.

Thanks:

denis

Avatar
Date: 3/3/2011
Reply


залил, сообщите о результатах.

Thanks:

dave

Avatar
Date: 3/3/2011
Reply


Ошибка 3 исправлена. Спасибо. Вообще, щас у меня что то уже работает. Заявки выставляются, снимаются.

Однако попробовал подключиться теперь к Quik junior. Получил ошибку при тесте\добавлении подключения. http://ifolder.ru/22225294 Врядли, но может окно не настроил - ночю буду проверять.

Thanks:
<< < 2 3 4 5 6  > >>

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

loading
clippy