Добрый день! Выкачал с сайта библиотеку 4.1.1 Сегодня 16 июня. На более ранней версии библиотеки при регистрации менеджера свечек я получал свечки с начала торгового дня. В сборке 4.1.1 при регистрации менеджера: this.candleManager.Start(this.candleSeries); период времени, с которого начинается импорт свечек при каждом запуске программы оказывается разным. То есть если несколько раз запускать одну и туже программу то случайным образом начало периода импорта свечек оказывается либо 13:40 либо 16:40 либо 19:40 (свечки десятиминутные)
Попытка использования перегруженной версии метода: this.candleManager.Start(this.candleSeries, Convert.ToDateTime("15.06.2012 10:00:00"), Convert.ToDateTime("15.06.2012 23:40:00")); никак не повлияла на результат.
Опять я получаю либо набор начинающийся с 19:40 либо 16:40 либо с 13:40.
Для проверки делал такой вызов, что бы убедится что в запрошенном диапазоне данные есть: var range = this.candleManager.GetSupportedRanges(this.candleSeries).GetEnumerator(); range.MoveNext(); this.candleManager1.Start(this.candleSeries, range.Current.Min, range.Current.Max);
Получаю аналогичный вышеописанному результат!
Комментарии (22)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Думаю данная ветка ответит на ваш вопрос.
Последнюю версию надо брать с CodePlex.
Спасибо! Закачал с CodePlex последнюю сборку и все заработало как надо!
Можно еще пару вопросов? А куда в последней сборке делся StockSharp.AlfaDirect?
Его надо "собрать" из исходников. Лежит в trunk\Connectors\Alfa
Покажите больше кода. Как создаете CandleManager, CandleSeries, когда и как запускается экспорт данных.
Проблемы пропуска свечек я больше ни разу не наблюдал.
UPD: Походу дела понял в чем проблема. dll надо брать из ветки trunk, т.к. она обновляется. Если dll из dev, то пропуски есть.
Взял из trunk dll Картина не изменилась. Поясню что я имею ввиду. Пропуски собственно говоря исчезли, я получаю аккуратные данные начиная с 10-00 Но! Сам процесс импорта запускается не всегда. То есть один и тот же код, запускаешь импорт свечек, три раза может начаться нормально, потом (код не меняется) пару раз не импортировать, потом импортировать и.т.д То есть есть некий случайный фактор, который я не могу найти. То есть импорт, то нет его. Прикол в том, что с ранней версией где не было series импортировало аккуратно и всегд, а вечера новую версию выкачал и вот вторые сутки бъюсь
Приводите код и лог который это продемонстрирует.
Я готов хоть весь свой проект выслать, там сверхценных алгоритмов нет. на какой адрес выслать? а под логом, что вы имели ввиду?
Ну если сверхценных граалей нет, можете прямо сюда выложить, прикрепив архив к посту.😀
Лог, это использование класса логгера LogManager Лог может быть в различном формате, например в txt - FileLogListener
проект не нужен. нужен минимальный код и дебаг печать, которая покажет что вы описываете
Это лог когда импорт не запустился:
00:11:34.781 | Error | QuikTrader | System.TypeInitializationException: The type initializer for 'StockSharp.Algo.Licensing.LicenseHelper' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Ecng.Security.CryptoAlgorithm' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Ecng.Reflection.Emit.AssemblyHolder' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Ecng.Configuration.ConfigManager' threw an exception. ---> System.IO.FileNotFoundException: Could not load file or assembly 'System' or one of its dependencies. Не удается найти указанный файл. at System.Configuration.TypeUtil.GetTypeWithReflectionPermission(IInternalConfigHost host, String typeString, Boolean throwOnError) at System.Configuration.MgmtConfigurationRecord.CreateSectionGroupFactory(FactoryRecord factoryRecord) at System.Configuration.MgmtConfigurationRecord.EnsureSectionGroupFactory(FactoryRecord factoryRecord) at System.Configuration.MgmtConfigurationRecord.GetSectionGroup(String configKey) at System.Configuration.ConfigurationSectionGroupCollection.Get(String name) at System.Configuration.ConfigurationSectionGroupCollection.<GetEnumerator>d__0.MoveNext() at Ecng.Configuration.ConfigManager.<>c__DisplayClass4.<.cctor>b__1(ConfigurationSectionGroupCollection groups) at Ecng.Configuration.ConfigManager..cctor() --- End of inner exception stack trace --- at Ecng.Configuration.ConfigManager.GetSection() at Ecng.Reflection.Emit.AssemblyHolder..cctor() --- End of inner exception stack trace --- at Ecng.Reflection.Emit.AssemblyHolder.get_NeedCache() at Ecng.Reflection.FastInvoker.CreateDelegate(Type delegType, Type instanceType, Type argType, ConstructorInfo ctor, MethodInfo method, MemberInfo member, Nullable
1 isGetter) at Ecng.Reflection.FastInvoker.<>c__DisplayClass1.<CreateCore>b__0(MemberInfo ) at Ecng.Collections.CollectionHelper.SafeAdd[TKey,TValue](IDictionary2 dictionary, TKey key, Func2 handler, Boolean& isNew) at Ecng.Collections.CollectionHelper.SafeAdd[TKey,TValue](IDictionary2 dictionary, TKey key, Func2 handler) at Ecng.Reflection.FastInvoker.CreateCore(MemberInfo member, Nullable1 isGetter) at Ecng.Reflection.FastInvoker.Create(PropertyInfo property, Boolean isGetter) at Ecng.Reflection.FastInvoker3.Create(PropertyInfo property, Boolean isGetter) at Ecng.Reflection.ReflectionHelper.GetValue[A,V](MemberInfo member, A arg) at Ecng.Reflection.ReflectionHelper.GetValue[A,V](Type type, String memberName, BindingFlags flags, A arg) at Ecng.Reflection.ReflectionHelper.GetValue[A,V](Type type, String memberName, A arg) at Ecng.Security.CryptoAlgorithm..cctor() --- End of inner exception stack trace --- at Ecng.Security.CryptoAlgorithm.Create(AlgorithmTypes type, ProtectedKey[] keys) at StockSharp.Algo.Licensing.LicenseHelper..cctor() --- End of inner exception stack trace --- at StockSharp.Algo.Licensing.LicenseHelper.IsLicenseSupport(Type featureType) at StockSharp.Algo.BaseTrader..ctor(Boolean checkLicense) 00:11:36.269 | Error | QuikTrader | System.InvalidOperationException: Инструмент с кодом GAZP для бумажной позиции не найден. at StockSharp.Quik.QuikTrader.#=qrDHUuxlCxpMFVWZelS7cxBV0UdbwRVjf47rF6sL_Bpk=.#=qNLWkuSgES4bcfsZdVaIg4Q==(IList1 #=q9BNzHBlc06wgg381qfVUEQ==, Func2 #=qivlfx$qlAvIYE1pmmAARMQ==) at #=qK5kWDJ0_XW_Aedhy0g8SeMBpMGoLqpi0ECaFDIHBygK4oEhhC9gQwYGUtzsPXJHy.#=qOp1Kjm53VvY4eYcKjHX_Uw==(DdeTable #=qzoKtk1FXJ$qJNjkYgeeicQ==, IList1 #=qjP6stMDpNWPwX2U9eMudOA==, Action2 #=qmPhanvmWRQtENEbTlUdW$g==, Action1 #=qicxbnTfEt0LFUHmQGTUN5Q==, Boolean #=qPUBc_znQLbZWaXnkyh1ZQQ==) 00:11:39.382 | | QuikTrader | Экспорт запущен.Это лог с успешно запущеным импортом:
00:15:33.079 | Error | QuikTrader | System.TypeInitializationException: The type initializer for 'StockSharp.Algo.Licensing.LicenseHelper' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Ecng.Security.CryptoAlgorithm' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Ecng.Reflection.Emit.AssemblyHolder' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Ecng.Configuration.ConfigManager' threw an exception. ---> System.IO.FileNotFoundException: Could not load file or assembly 'System' or one of its dependencies. Не удается найти указанный файл. at System.Configuration.TypeUtil.GetTypeWithReflectionPermission(IInternalConfigHost host, String typeString, Boolean throwOnError) at System.Configuration.MgmtConfigurationRecord.CreateSectionGroupFactory(FactoryRecord factoryRecord) at System.Configuration.MgmtConfigurationRecord.EnsureSectionGroupFactory(FactoryRecord factoryRecord) at System.Configuration.MgmtConfigurationRecord.GetSectionGroup(String configKey) at System.Configuration.ConfigurationSectionGroupCollection.Get(String name) at System.Configuration.ConfigurationSectionGroupCollection.<GetEnumerator>d__0.MoveNext() at Ecng.Configuration.ConfigManager.<>c__DisplayClass4.<.cctor>b__1(ConfigurationSectionGroupCollection groups) at Ecng.Configuration.ConfigManager..cctor() --- End of inner exception stack trace --- at Ecng.Configuration.ConfigManager.GetSection() at Ecng.Reflection.Emit.AssemblyHolder..cctor() --- End of inner exception stack trace --- at Ecng.Reflection.Emit.AssemblyHolder.get_NeedCache() at Ecng.Reflection.FastInvoker.CreateDelegate(Type delegType, Type instanceType, Type argType, ConstructorInfo ctor, MethodInfo method, MemberInfo member, Nullable
1 isGetter) at Ecng.Reflection.FastInvoker.<>c__DisplayClass1.<CreateCore>b__0(MemberInfo ) at Ecng.Collections.CollectionHelper.SafeAdd[TKey,TValue](IDictionary2 dictionary, TKey key, Func2 handler, Boolean& isNew) at Ecng.Collections.CollectionHelper.SafeAdd[TKey,TValue](IDictionary2 dictionary, TKey key, Func2 handler) at Ecng.Reflection.FastInvoker.CreateCore(MemberInfo member, Nullable1 isGetter) at Ecng.Reflection.FastInvoker.Create(PropertyInfo property, Boolean isGetter) at Ecng.Reflection.FastInvoker3.Create(PropertyInfo property, Boolean isGetter) at Ecng.Reflection.ReflectionHelper.GetValue[A,V](MemberInfo member, A arg) at Ecng.Reflection.ReflectionHelper.GetValue[A,V](Type type, String memberName, BindingFlags flags, A arg) at Ecng.Reflection.ReflectionHelper.GetValue[A,V](Type type, String memberName, A arg) at Ecng.Security.CryptoAlgorithm..cctor() --- End of inner exception stack trace --- at Ecng.Security.CryptoAlgorithm.Create(AlgorithmTypes type, ProtectedKey[] keys) at StockSharp.Algo.Licensing.LicenseHelper..cctor() --- End of inner exception stack trace --- at StockSharp.Algo.Licensing.LicenseHelper.IsLicenseSupport(Type featureType) at StockSharp.Algo.BaseTrader..ctor(Boolean checkLicense) 00:15:33.813 | Error | QuikTrader | System.InvalidOperationException: Инструмент с кодом GAZP для бумажной позиции не найден. at StockSharp.Quik.QuikTrader.#=qrDHUuxlCxpMFVWZelS7cxBV0UdbwRVjf47rF6sL_Bpk=.#=qNLWkuSgES4bcfsZdVaIg4Q==(IList1 #=q9BNzHBlc06wgg381qfVUEQ==, Func2 #=qivlfx$qlAvIYE1pmmAARMQ==) at #=qK5kWDJ0_XW_Aedhy0g8SeMBpMGoLqpi0ECaFDIHBygK4oEhhC9gQwYGUtzsPXJHy.#=qOp1Kjm53VvY4eYcKjHX_Uw==(DdeTable #=qzoKtk1FXJ$qJNjkYgeeicQ==, IList1 #=qjP6stMDpNWPwX2U9eMudOA==, Action2 #=qmPhanvmWRQtENEbTlUdW$g==, Action1 #=qicxbnTfEt0LFUHmQGTUN5Q==, Boolean #=qPUBc_znQLbZWaXnkyh1ZQQ==) 00:15:33.824 | | QuikTrader | Экспорт запущен. 00:15:56.194 | | QuikTrader | Экспорт остановлен.Администраторские права есть? Какая версия framework установлена?
.NEW Framework 4 , Windiws 7, администратор, UAC отключен не был
сейчас отключил UAC, ситуация не изменилась
Откуда вы взяли этот стэктрэйс что привели выше? У вас примеры работают? Verifier что выдаёт? Лицензию получали?
Читайте новости и документацию
Откуда вы взяли этот стэктрэйс что привели выше? создал вот так private readonly LogManager logManager = new LogManager();
var fileLogListener = new FileLogListener("D:\tradeFuckir.log"); this.logManager.Listeners.Add(fileLogListener);
this.quikTrader = new QuikTrader(quikPath).GuiSyncTrader(); // создаем шлюз к Quik-у и синхронизуем его this.logManager.Sources.Add(this.quikTrader.Trader);
this.candleManager1 = new CandleManager(this.quikTrader); // создаем синхронизованный менеджер свечек по this.logManager.Sources.Add(this.candleManager1);
Лицензию получали? Нет. О какой лицензии идет речь? Я прочитал что это бесплатная библиотека и в течении года балуюсь с ней.
Я начинаю подозревать что это проблема не библиотеки а самого квика. Запущу в рабочее время, посмотрю как это все будет работать. А то сейчас воскресенье полтретьего утра после вызова this.quikTrader.Connect(); // производим соединение не появляется событие успешного подключения this.quikTrader.Connected я игнорирую и запускаю DDE this.quikTrader.StartExport(); примерно в половине случаев не начинается генерация события Processing this.candleManager = new CandleManager(this.quikTrader); this.candleManager.Processing += this.CandleProcessing;
Хотя если заглянуть в this.quikTrader.Trades то там все сделки есть
Проблему импорта кажется победил, внимательнее посмотрел пример SampleSync, Создание шлюза в коде this.quikTrader = new QuikTrader(quikPath).GuiSyncTrader();
надо было вызывать старт импорта так: this.quikTrader.Trader.StartExport() в этом случае импорт стартует аккуратно
а я по невнимательности делал так this.quikTrader.StartExport() в этом случае импорт часто не стартовал (вернее не было появления события this.candleManager.Processing)
Однако стал получать некоторые свечки по два раза, во вложении скриншот с гридом где этот видно
То есть приходит два раза сообщение this.candleManager.Processing со свечкой к примеру за 15:00
Это можно увидеть на примере SampleSync, если сделать такое изменение в коде: Public partial class MainWindow { private CandleSeries series;
....... .......
private void CandleSeriesProcessCandle(Candle candle) { if (candle.State == CandleStates.Finished) { return; // Бреакпоинт 1
} return; }
private void ShowChartClick(object sender, RoutedEventArgs e) { var security = (Security)Security.SelectedValue; series = new CandleSeries(typeof(TimeFrameCandle), security, TimeSpan.FromMinutes(60)); series.ProcessCandle += this.CandleSeriesProcessCandle; var range = this._candleManager.GetSupportedRanges(series).GetEnumerator(); range.MoveNext(); this._candleManager.Start(series, range.Current.Min, range.Current.Max); }
В точке Бреакпоинт 1 можно видеть что приходят сообщения о том что финишировала свечка за к примеру 15:00 два раза
Подтверждаю, есть такое
Да, в планах стоит, в 4.1 попробуем пофиксить.