#31927 - Thu Oct 06 2011 09:32 AM
Re: Индекс за пределами диапазона
[Re: ViL]
|
newbie
Registered: Thu May 27 2010
Записи: 33
|
Пасиба огроменное! Сделал то что хотел, тока вот число прибыльных сделок упало до 48% с 98% (при удержании один бар), разрушил грааль своими руками, не сохранив предыдущую версию
|
Наверх
|
|
|
|
#31928 - Thu Oct 06 2011 09:55 AM
Re: Индекс за пределами диапазона
[Re: Klever]
|
newbie
Registered: Thu May 27 2010
Записи: 33
|
Мда, жырный глюк TSL однако... видимо и правда заглядывание в будущее судя по точке входа на закрытии [i]-го бара и выполнении условия [i+1]-го, правда 98% угаданых вернуть не смог, не всё смог воспроизвести, а вот 73% получилось, то то я думаю эквити такая красивая :)))
|
Наверх
|
|
|
|
#32992 - Mon Nov 07 2011 11:39 AM
Re: Индекс за пределами диапазона
[Re: Nektodron]
|
stranger
Registered: Mon Nov 07 2011
Записи: 5
|
У меня в формулах не используется [i-1], тем не менее появляется сообщение:
11:36:50.86 System.ArgumentOutOfRangeException: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции. Имя параметра: index в System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) в System.ThrowHelper.ThrowArgumentOutOfRangeException() в System.SZArrayHelper.get_Item[T](Int32 index) в TSLab.User.Script.Execute(IContext context, ISecurity var1, ISecurity var3)
В чем может быть дело?
P.S.: При этом ошибка то возникает, то нет.
Отредактировано agor (Mon Nov 07 2011 01:13 PM)
|
Наверх
|
|
|
|
#44652 - Wed Jul 25 2012 08:25 PM
Re: Индекс за пределами диапазона
[Re: ViL]
|
stranger
Registered: Thu Jun 14 2012
Записи: 20
|
Похожая проблема Скрипт работает потом зависает Перед запуском скрипта 20:23:29.50 120 System.NullReferenceException: В экземпляре объекта не задана ссылка на объект. в TSLab.Samples.Class_Rt.Execute(IContext ctx, ISecurity source1) в TSLab.User.Script.Execute(IContext context, ISecurity Source1)
После остановки скрипта 20:25:20.08 100 Скрипт: 'Option01' System.ArgumentOutOfRangeException: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции. Имя параметра: index в System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) в System.ThrowHelper.ThrowArgumentOutOfRangeException() в System.Collections.Generic.List`1.get_Item(Int32 index) в TSLab.Samples.Class_Rt.Execute(IContext ctx, ISecurity source1) в TSLab.User.Script.Execute(IContext context, ISecurity Source1)
|
Наверх
|
|
|
|
#44659 - Thu Jul 26 2012 08:22 AM
Re: Индекс за пределами диапазона
[Re: ViL]
|
stranger
Registered: Thu Jun 14 2012
Записи: 20
|
Используется один инструмент, на реальном рынке.
Было ... ISecurityRt secRt = sec as ISecurityRt; if (!secRt.Positions.IsRealtime) return;
Поменял на
/// Торговля. if (!sec.Positions.IsRealtime) return; {
int i = sec.Bars.Count - 1; if (i < 0) return; IList<IQueueData> buyQueue = sec.GetBuyQueue(i);//получаем биржевой стакан IList<IQueueData> sellQueue = sec.GetSellQueue(i);//получаем биржевой стакан ISecurityRt secRt = sec as ISecurityRt; if (secRt == null) return; ... } Перестало выдавать ошибку. В чем причина не понял...
Но ошибка про индекс осталась
08:57:52.29 100 Скрипт: 'Option01' System.ArgumentOutOfRangeException: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции. Имя параметра: index в System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) в System.ThrowHelper.ThrowArgumentOutOfRangeException() в System.Collections.Generic.List`1.get_Item(Int32 index) в TSLab.Samples.Class_Rt.Execute(IContext ctx, ISecurity sec) в TSLab.User.Script.Execute(IContext context, ISecurity sec)
Индекс используется только один раз вверху по тексту... Возможно что-то не правильно здесь
//пробегаемся по всем исполненным лимитникам-нам foreach (IOrder order in secRt.Orders) if (order.OrderType == TSLab.DataSource.OrderType.Limit) { //ордер не исполнился ожидаем исполнения if (!order.IsExecuted) return; } хотя закоментировав строку ошибка осталась...
Ошибка нашлась double baseActive = Math.Round((buyQueue[0].Price + sellQueue[0].Price) / 2);
при использовании buyQueue[0].Price или sellQueue[0].Price возникает ошибка с индексом
Как ее решить?
Отредактировано WinEasily (Thu Jul 26 2012 10:45 AM)
|
Наверх
|
|
|
|
#44671 - Thu Jul 26 2012 12:04 PM
Re: Индекс за пределами диапазона
[Re: WinEasily]
|
stranger
Registered: Thu Jun 14 2012
Записи: 20
|
При работе со стаканом возникает ошибка указанная в предыдущем посте
т.е. использование sec.GetBuyQueue(0)[0].Price и sec.GetSellQueue(0)[0].Price вызывает ошибку индекса использование их аналога ошибки не вызывает secRt.FinInfo.Bid.Value и secRt.FinInfo.Ask.Value
просьба к разработчикам разъяснить возможно я неверно работаю со стаканом?
Отредактировано WinEasily (Thu Jul 26 2012 12:23 PM)
|
Наверх
|
|
|
|
#44675 - Thu Jul 26 2012 12:28 PM
Re: Индекс за пределами диапазона
[Re: WinEasily]
|
member
Registered: Fri Apr 22 2011
Записи: 137
|
т.е. использование sec.GetBuyQueue(0)[0].Price и sec.GetSellQueue(0)[0].Price вызывает ошибку индекса Ну размер возвращаемых массивов надо все же проверять, стакан может быть и пустым: IList<IQueueData> buyQueue = sec.GetBuyQueue(i); if (buyQueue != null && buyQueue.Count > 0) { buyQueue[0].Price .... }
|
Наверх
|
|
|
|
#44685 - Thu Jul 26 2012 02:04 PM
Re: Индекс за пределами диапазона
[Re: Gji]
|
stranger
Registered: Thu Jun 14 2012
Записи: 20
|
Да отлично все работает замечательно.
Но осталась третья проблема. Скрипт зависает после нескольких шагов. Ошибок явных нет. Которые были все решены. куда копать?
|
Наверх
|
|
|
|
#44687 - Thu Jul 26 2012 02:17 PM
Re: Индекс за пределами диапазона
[Re: WinEasily]
|
member
Registered: Fri Apr 22 2011
Записи: 137
|
По отрывкам кода предположить, что-либо затрудняюсь. Либо приведите весь код, либо сами, например, логируя работу скрипта изучайте проблему
|
Наверх
|
|
|
|
#44713 - Thu Jul 26 2012 05:45 PM
Re: Индекс за пределами диапазона
[Re: Gji]
|
stranger
Registered: Thu Jun 14 2012
Записи: 20
|
Скрипт проработал 1 час 16 минут и завис. Интервал обсчета 2 сек. Скрипт выполнился 2280 раз и после этого завис. Это дело в скрипте или что-то еще не пойму?
|
Наверх
|
|
|
|
#44717 - Thu Jul 26 2012 06:15 PM
Re: Индекс за пределами диапазона
[Re: WinEasily]
|
stranger
Registered: Thu Jun 14 2012
Записи: 20
|
Вот кусок лога в момент зависания
18:10:16.07[11]DEBUG:New RealtimePositionList was created for RTS-9.12 18:10:16.07[11]INFO :RTS-9.12:FORTS Фьючерсы: Orders has been updated for Option01. 0 active orders, 0 total 18:10:16.07[11]INFO :RTS-9.12:FORTS Фьючерсы: Orders has been updated for Option01. 0 active orders, 0 total 18:10:16.07[11]INFO :100:Info:Script:(Script:Option01):Скрипт: 'Option01' Скрипт выполнен успешно за 3мс. (14436 баров, время 26.07.2012 18:10:16) 18:10:16.07[11]INFO :Скрипт выполнен успешно за 3мс. (14436 баров, время 26.07.2012 18:10:16) 18:10:16.07[11]INFO :RTS-9.12:FORTS Фьючерсы: Orders has been updated for Option01. 0 active orders, 0 total 18:10:18.07[9]DEBUG:New RealtimePositionList was created for RTS-9.12 18:10:18.07[9]INFO :RTS-9.12:FORTS Фьючерсы: Orders has been updated for Option01. 0 active orders, 0 total 18:10:18.07[9]INFO :RTS-9.12:FORTS Фьючерсы: Orders has been updated for Option01. 0 active orders, 0 total 18:10:18.07[9]INFO :100:Info:Script:(Script:Option01):Скрипт: 'Option01' Скрипт выполнен успешно за 4мс. (14437 баров, время 26.07.2012 18:10:18) 18:10:18.07[9]INFO :Скрипт выполнен успешно за 4мс. (14437 баров, время 26.07.2012 18:10:18) 18:10:18.18[9]INFO :RTS-9.12:FORTS Фьючерсы: Orders has been updated for Option01. 0 active orders, 0 total 18:11:54.52[9]WARN :Can't map source 'sec' for script 'Option01'! 18:11:54.52[9]DEBUG:Скрипт: 'Option01' run=True:True dateFrom='26.07.2012 0:00:00' dateTo='27.07.2012 0:00:04' mx=0 Interval=2S RecalcInterval=INTERVAL LimitType=LimitInLots Limit=0 Slip=0 Slip%=0 OpenPositionNoSlippage=False TakeProfitNoSlippage=False InvalidStopsByMarket=True ByMarketAsLimt=True AutoEntryBars=0 AutoCloseBars=0 18:11:54.52[9]DEBUG:State 15. Detach update to 'RTS-9.12:FORTS Фьючерсы' 18:11:54.52[9]DEBUG:State 16. Initialization is started. 18:11:54.57[1]INFO :100:Info:Script:(Script:Option01):Скрипт: 'Option01' остановлен 18:11:54.57[1]INFO :остановлен 18:11:55.74[9]DEBUG:State 16, Adding 0 trades to RTS-9.12:FORTS Фьючерсы. startTime=07/26/2012 18:11:58 endTime=07/27/2012 00:00:04 18:11:55.74[9]DEBUG:State 16, UpdateData finished to RTS-9.12:FORTS Фьючерсы. bars=14486 18:11:56.19[9]DEBUG:New RealtimePositionList was created for RTS-9.12 18:11:56.19[9]INFO :RTS-9.12:FORTS Фьючерсы: Orders has been updated for Option01. 0 active orders, 0 total 18:11:56.19[9]DEBUG:State 16. Initialization is stopped. 18:11:56.19[9]INFO :RTS-9.12:FORTS Фьючерсы: Orders has been updated for Option01. 0 active orders, 0 total 18:11:56.19[9]INFO :100:Info:Script:(Script:Option01):Скрипт: 'Option01' Скрипт выполнен успешно за 8мс. (14486 баров, время 26.07.2012 18:11:56) 18:11:56.19[9]INFO :Скрипт выполнен успешно за 8мс. (14486 баров, время 26.07.2012 18:11:56) 18:11:56.19[9]INFO :RTS-9.12:FORTS Фьючерсы: Orders has been updated for Option01. 0 active orders, 0 total 18:12:15.98[9]DEBUG:Disconnect by user
Прошу помощи разработчиков...
|
Наверх
|
|
|
|
#44720 - Thu Jul 26 2012 06:47 PM
Re: Индекс за пределами диапазона
[Re: WinEasily]
|
stranger
Registered: Thu Jun 14 2012
Записи: 20
|
Произошло следующее. Выполнялся скрипт. Во время выполнения в оболочке TSLab внизу время остановилось и вместе с ним завис скрипт. После перезапуска скрипт зависает при первом прогоне ...
Attachments
tslab.rar (111 downloads)
Отредактировано WinEasily (Thu Jul 26 2012 06:49 PM)
|
Наверх
|
|
|
|
#44721 - Thu Jul 26 2012 07:03 PM
Re: Индекс за пределами диапазона
[Re: WinEasily]
|
old hand
Registered: Tue Jan 17 2012
Записи: 1110
|
Просьба выслать лог и линк на форум на http://support.tslab.ru/
Отредактировано ViL (Fri May 17 2013 02:08 AM)
|
Наверх
|
|
|
|
#44758 - Fri Jul 27 2012 08:37 AM
Re: Индекс за пределами диапазона
[Re: SupportTSLab]
|
stranger
Registered: Thu Jun 14 2012
Записи: 20
|
С зависанием разобрался. TSLab виснет при отключении дисплея (энергопотребление). Спасибо за помощь Gji.
Но есть вопрос. Ночью произошло отключение от брокера. 00:29:56.79 4 Ошибка при подключении к провайдеру данных 'Solid' 00:29:56.79 2 Вы отсоединились от провайдера данных 'Solid' 00:29:56.79 3 Соединение с провайдером данных 'Solid' потеряно 00:29:56.76 2 Вы отсоединились от провайдера данных 'Solid' 23:50:04.87 100 Скрипт: 'Option01' Скрипт выполнен успешно за 2мс. (22633 баров, время 26.07.2012 23:49:58)
Получается что каждое утро мне надо перезапускать скрипт? Или можно настроить его как-то что бы он работал постоянно?
|
Наверх
|
|
|
|
#44760 - Fri Jul 27 2012 09:05 AM
Re: Индекс за пределами диапазона
[Re: WinEasily]
|
old hand
Registered: Tue Jan 17 2012
Записи: 1110
|
В Менеджере провайдера данных настройте Расписание. Сервера на ночь отключаются как правило.
|
Наверх
|
|
|
|
#44886 - Tue Jul 31 2012 07:35 AM
Re: Индекс за пределами диапазона
[Re: ViL]
|
stranger
Registered: Thu Jun 14 2012
Записи: 20
|
Несколько инструментов используете? Попробуйте снять флаг Пересчет по каждому инструменту. Если среди инструментов есть индекс, обычно это помогает. Как бороться с зависаниями скрипта? Ошибки не выдаются. Любая серьезная модификация приводит к проблеме зависания. Начал использовать несколько инструментов, флаг снял, но зависания продолжаются. Как добиться надежности и стабильности, ведь любая ошибка (в том числе и зависания) приносит реальные, а не виртуальные убытки?
|
Наверх
|
|
|
|
|
|