Квик 5.17, демо от финама и цериха, S# 2.6.2, виндус 7.
- Периодически при запуске экспорта до начала дневной сессии вылетает следующее исключение:
System.ArgumentOutOfRangeException: Length cannot be less than zero.
Parameter name: length
at System.String.InternalSubStringWithChecks(Int32 startIndex, Int32 length, Boolean fAlwaysCopy)
at Ecng.Trading.Quik.QuikTerminal.get_ServerTime()
at Ecng.Trading.Quik.QuikTrader.get_MarketTime()
Запуск экспорта при этом останавливается. Я так понимаю, исключение из-за того, что в квике до начала сессии в строке состояния не отображается время сервера. Однажды после "Length cannot be less than zero" приложение вылетело с исключением "Invalid window handle" со стеком
at ManagedWinapi.ApiHelper.FailIfZero(Int32 returnValue)
at ManagedWinapi.Windows.SystemWindow.get_ClassName()
at Ecng.Trading.Quik.QuikTerminal.#=qcXb0wX1GPQdWGUrbevouvAK8mGq_ZX7KePQhng707pY=(SystemWindow #=qG0Xlt4ny5EAScYg7lccmqQ==)
at System.Linq.Enumerable.<>c__DisplayClassf`1.<CombinePredicates>b__e(TSource x)
at System.Linq.Enumerable.<>c__DisplayClassf`1.<CombinePredicates>b__e(TSource x)
at System.Linq.Enumerable.WhereArrayIterator`1.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
at Ecng.Trading.Quik.QuikTerminal.#=qamfRCc20wzNF9qUIUdCLjw==()
at Ecng.Trading.Quik.QuikTerminal.#=qql8kmexb9weYKGtc_Ek1tK_1CSd3q5TCKaR0ygbS2tg=()
at Ecng.Trading.Quik.QuikTerminal.#=q_lLubITNoaw1eEj2RyjWrL6fPHNnQvwlZk8iZRaC5_U=.#=qPxKjanm0K1_jwKHEEU6x$Lgud7LdKO06j2l5DeimLBs=()
at Ecng.Trading.Quik.QuikTerminal.#=qoXV4QEM_G1YonOjwwNKmQw==(Func`1 #=qD9Z_f5aw8cHk3v4kR8Tc2Q==, String #=qlAVSNw2aXxBrCQuSzMRn7Q==, Int32 #=qTZICHcGD_nZxYj0durmu1w==)
at Ecng.Trading.Quik.QuikTerminal.#=qs0x1wp4BQfVFbNqH4twdig==(Func`1 #=qn8XD$TEMuAA2cdPOT4AwnA==, String #=qm53EkQ$FmOHt8W3Ilw_ixA==)
at Ecng.Trading.Quik.QuikTerminal.#=q1nY_TDv5z4$zgSjRjMbMbQ==(#=q$aqcBec_FkKr5WeVX3nTzxDxX_Hd0f61IkNPxLTqPYE= #=qNirypqSKGZrg3AUbX_rooA==)
at Ecng.Trading.Quik.QuikTerminal.#=qPnw1sKXTdcVcr_x$fqgnYg==(#=q$aqcBec_FkKr5WeVX3nTzxDxX_Hd0f61IkNPxLTqPYE= #=qyLTc$cDFRn1maT$ee$2hdA==)
at Ecng.Trading.Quik.QuikTerminal.StartDde(String caption)
at Ecng.Trading.Quik.QuikTerminal.#=q0uBotj_32cN2RsRalTUJ0g==(IEnumerable`1 #=qI5INwD8rV7E8FrjZfrBpag==)
at Ecng.Trading.Quik.QuikTerminal.#=q$mY6xOgWiR6d5FoJEIxsuDutXikuujvQPPOYZQ$pyuo=(SynchronizedMultiDictionary`2 #=qsvevh4wpjDS8xolIi$hNDw==)
at Ecng.Collections.CollectionHelper.SyncDo[TCollection](TCollection collection, Action`1 action)
at Ecng.Trading.Quik.QuikTerminal.ReStartDde()
at Ecng.Trading.Quik.QuikTrader.ReStartExport()
at #=qCM88e9F2z6ySIFif3PFU60Wtx52dpExQh_MYocmJjXH851AppX8z40RLoPgPXV07.#=q58dzQUueKRlLgxEyABuSG3i5qQAHm54ZBVKojMghuV4=.#=q3ZZ2iYrOGZh_1bYY3etOSOOxiS3RPvffjOq8ETnvRY8=()
at Ecng.Common.ThreadHelper.<>c__DisplayClass1.<CreateTimer>b__0(Object )
at System.Threading._TimerCallback.TimerCallback_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading._TimerCallback.PerformTimerCallback(Object state)
- Ночью, в промежутке между сессиями, время сервера в квике не меняется, застывая на времени окончания вечерней сессии. Поэтому каждые ExportTimeOutInterval всю ночь вызывается перезапуск экспорта. Несмертельно конечно, но некрасиво.
Комментарии (5)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Я уже это в своё время описывал. Решение - перегружать стандартный QuikTrader и свойство MarketTime.
Я, к примеру, использую стандартное DateTime.Now
Можете ссылки дать?
Получил подобную ошибку.
Ошибка появилась когда Квик остался запущенным в субботу. Стоит отметить, что ошибка появилась в квике первого брокера. В Квике другого брокера такой ошибки ни разу не было.
UPD Забыл уточнить. Версия S# 2.5.1.0 После того, как запостил комментарий, увидел, что в Stock# 3.0 Beta эта бага уже исправлена.