← Назад

закачка стаканов с архива Order Log РТС

Подскажите пожалуйста, есть ли в StockSharp и/или Гидре классы/инструменты чтобы закачать стаканы из РТСовских архивов Order Logs http://ftp.rts.ru/pub/info/historical_data/ т.е. Order Log должен преобразовываться в стаканы и сохраниться в базу.

Комментарии (11)

Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий

Mikhail Sukhov
Mikhail Sukhov

dave2: Подскажите пожалуйста, есть ли в StockSharp и/или Гидре классы/инструменты чтобы закачать стаканы из РТСовских архивов Order Logs http://ftp.rts.ru/pub/info/historical_data/ т.е. Order Log должен преобразовываться в стаканы и сохраниться в базу.

Там всего за 1 месяц. Нормальные пацаны давно сами ОЛ пишут. Через Гидру это возможно.

Rash
Rash

Mikhail Sukhov:

dave2: Подскажите пожалуйста, есть ли в StockSharp и/или Гидре классы/инструменты чтобы закачать стаканы из РТСовских архивов Order Logs http://ftp.rts.ru/pub/info/historical_data/ т.е. Order Log должен преобразовываться в стаканы и сохраниться в базу.

Там всего за 1 месяц. Нормальные пацаны давно сами ОЛ пишут. Через Гидру это возможно.

И все таки, как закачать FOL в Гидру? Если можно, поподробней про механизм, алгоритм закачки.

dave2
dave2 Автор

Я знаю что там за месяц. Остальное купить можно.

Что значит сами пишут ОЛ ? Подключившись к торгам в онлайне сохраняете стаканы через Гидру ?

risty
risty

Мужчины, подскажите, где можно взять стаканы в формате S# по ликвидным фьючерсам Фортс?

Garry
Garry

Добрый день! Пытаюсь собрать стаканы из Ордер Лога архивных данных РТС http://ftp.rts.ru/pub/info/historical_data/. Парсю тексктовый файл, создаю коллекцию OrderLogItem, в моем случае List<OrderLogItem>, далее планировал использовать OrderLogHelper.ToMarketDepths. Но он понимает только коллекции Ecng.Collections.IEnumerableEx<OrderLogItem>, простой List для этого не подходит. Как можно работать с IEnumerableEx ? Как добавить туда элемент или конвертировать из List? Есть какой то класс реализующий IEnumerableEx?

Alexander
Alexander

Garry: Добрый день! Пытаюсь собрать стаканы из Ордер Лога архивных данных РТС http://ftp.rts.ru/pub/info/historical_data/. Парсю тексктовый файл, создаю коллекцию OrderLogItem, в моем случае List<OrderLogItem>, далее планировал использовать OrderLogHelper.ToMarketDepths. Но он понимает только коллекции Ecng.Collections.IEnumerableEx<OrderLogItem>, простой List для этого не подходит. Как можно работать с IEnumerableEx ? Как добавить туда элемент или конвертировать из List? Есть какой то класс реализующий IEnumerableEx?

public static IEnumerableEx<T> ToEx<T>(this IEnumerable<T> values)
Garic
Garic

Фиг знает :) Пользуйтесь OrderLogMarketDepthBuilder - именно он содержит логику.

Garry
Garry

Garic: Фиг знает :) Пользуйтесь OrderLogMarketDepthBuilder - именно он содержит логику.

Пытаюсь использовать этот класс, но столкнулся с проблемой.Как в OrderLogItem можно указать причину отмены заявки? А то OrderLogMarketDepthBuilder.Update при записи OrderLogItem об отмене заявки выдает эксепшн:

Строчка содержит неверную информацию о причине отмены заявки. Parameter name: item Actual value was 3.

Судя по всему она должна быть в OrderLogItem.Order.Messages, но указать его не получается т.к. оно read only.

at StockSharp.Algo.OrderLogHelper.GetCancelReason(OrderLogItem item) at StockSharp.Algo.OrderLogMarketDepthBuilder.Update(OrderLogItem item) at OrderLogConverter.Form1.button1_Click(Object sender, EventArgs e) in F:\Projects\OrderLogConverter\OrderLogConverter\Form1.cs:line 145 at System.Windows.Forms.Control.OnClick(EventArgs e) at System.Windows.Forms.Button.OnClick(EventArgs e) at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ButtonBase.WndProc(Message& m) at System.Windows.Forms.Button.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData) at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) at System.Windows.Forms.Application.Run(Form mainForm) at OrderLogConverter.Program.Main() in F:\Projects\OrderLogConverter\OrderLogConverter\Program.cs:line 18 at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()

Garic
Garic

Должно быть заполнено поле Order.Status битовой маской как в плазе.

order.Status = new OrderStatus?((OrderStatus)Status);

Mikhail Sukhov
Mikhail Sukhov

Garic: Должно быть заполнено поле Order.Status битовой маской как в плазе.

order.Status = new OrderStatus?((OrderStatus)Status);

Да на ФТП туфта лежит, а не данные. Полей там нет необходимых. Я уже писал об этом на РТС.

Garic
Garic

Order order = new Order
            {
                Security = security,
                Id = OrderId,
                TransactionId = ReplId,
                Volume = Amount,
                Balance = AmountRest,
                Direction = Direction,
                Time = Time,
                Price = OrderPrice.RemoveTrailingZeros(),
                State = OrderStates.Active
            };
            Trade trade;

            if (DealId != 0)
            {
                trade = new Trade
                {
                    Security = security,
                    Id = DealId,
                    Time = Time,
                    Volume = Amount,
                    Price = DealPrice.RemoveTrailingZeros()
                };
            }
            else
            {
                trade = null;
                order.State = Action == 1 ? OrderStates.Active : OrderStates.Done;
            }

            if (Status.HasBits(0x01))
            {
                order.ExecutionCondition = OrderExecutionConditions.PutInQueue;
            }
            else if (Status.HasBits(0x02))
            {
                order.ExecutionCondition = OrderExecutionConditions.CancelBalance;
            }
            if (Status.HasBits(0x04))
            {
                order.IsSystem = false;
            }
            order.Status = new OrderStatus?((OrderStatus)Status);

Garry