Добрый день! Выкачал с сайта библиотеку 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);
Получаю аналогичный вышеописанному результат!
Kommentare (22)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Думаю данная ветка ответит на ваш вопрос.
Последнюю версию надо брать с 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 попробуем пофиксить.