У вас не стоит Flash Player
Page 2 of 3 < 1 2 3 >
Настройки
#31890 - Wed Oct 05 2011 04:19 PM Re: Индекс за пределами диапазона [Re: Klever]
ViL Offline
TSLab
Carpal Tunnel

Registered: Sun Oct 17 2010
Записи: 8136
i+1 это заглядывание в будущее, программа должна выдавать сообщение на такую запись.
А то, что нет никаких сообщений, если записать все в одном блоке - вот это уже ошибка. smile


Отредактировано ViL (Wed Oct 05 2011 04:24 PM)

Наверх
#31927 - Thu Oct 06 2011 09:32 AM Re: Индекс за пределами диапазона [Re: ViL]
Klever Offline
newbie

Registered: Thu May 27 2010
Записи: 33
Пасиба огроменное!
Сделал то что хотел, тока вот число прибыльных сделок упало до 48% с 98% (при удержании один бар), разрушил грааль своими руками, не сохранив предыдущую версию grin

Наверх
#31928 - Thu Oct 06 2011 09:55 AM Re: Индекс за пределами диапазона [Re: Klever]
Klever Offline
newbie

Registered: Thu May 27 2010
Записи: 33
Мда, жырный глюк TSL однако... видимо и правда заглядывание в будущее судя по точке входа на закрытии [i]-го бара и выполнении условия [i+1]-го, правда 98% угаданых вернуть не смог, не всё смог воспроизвести, а вот 73% получилось, то то я думаю эквити такая красивая :)))

Наверх
#32992 - Mon Nov 07 2011 11:39 AM Re: Индекс за пределами диапазона [Re: Nektodron]
agor Offline
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)

Наверх
#33031 - Tue Nov 08 2011 12:42 AM Re: Индекс за пределами диапазона [Re: agor]
Nektodron Offline

Carpal Tunnel

Registered: Thu Oct 23 2008
Записи: 5492
У вас в скрипте используется две бумаги. Возможно, вторая бумага не выбрана, либо по ней нет данных.

Наверх
#33034 - Tue Nov 08 2011 01:37 AM Re: Индекс за пределами диапазона [Re: Nektodron]
ViL Offline
TSLab
Carpal Tunnel

Registered: Sun Oct 17 2010
Записи: 8136
Либо вторая бумага - индекс.

Наверх
#44652 - Wed Jul 25 2012 08:25 PM Re: Индекс за пределами диапазона [Re: ViL]
WinEasily Offline
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)

Наверх
#44653 - Wed Jul 25 2012 09:29 PM Re: Индекс за пределами диапазона [Re: WinEasily]
ViL Offline
TSLab
Carpal Tunnel

Registered: Sun Oct 17 2010
Записи: 8136
Несколько инструментов используете? Попробуйте снять флаг Пересчет по каждому инструменту. Если среди инструментов есть индекс, обычно это помогает.


Отредактировано ViL (Wed Jul 25 2012 09:30 PM)

Наверх
#44659 - Thu Jul 26 2012 08:22 AM Re: Индекс за пределами диапазона [Re: ViL]
WinEasily Offline
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]
WinEasily Offline
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]
Gji Offline
member

Registered: Fri Apr 22 2011
Записи: 137
Originally Posted By: WinEasily
т.е. использование
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]
WinEasily Offline
stranger

Registered: Thu Jun 14 2012
Записи: 20
Да отлично все работает замечательно.

Но осталась третья проблема. Скрипт зависает после нескольких шагов. Ошибок явных нет. Которые были все решены.
куда копать?

Наверх
#44687 - Thu Jul 26 2012 02:17 PM Re: Индекс за пределами диапазона [Re: WinEasily]
Gji Offline
member

Registered: Fri Apr 22 2011
Записи: 137
По отрывкам кода предположить, что-либо затрудняюсь. Либо приведите весь код, либо сами, например, логируя работу скрипта изучайте проблему

Наверх
#44713 - Thu Jul 26 2012 05:45 PM Re: Индекс за пределами диапазона [Re: Gji]
WinEasily Offline
stranger

Registered: Thu Jun 14 2012
Записи: 20
Скрипт проработал 1 час 16 минут и завис. Интервал обсчета 2 сек. Скрипт выполнился 2280 раз и после этого завис. Это дело в скрипте или что-то еще не пойму?

Наверх
#44717 - Thu Jul 26 2012 06:15 PM Re: Индекс за пределами диапазона [Re: WinEasily]
WinEasily Offline
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]
WinEasily Offline
stranger

Registered: Thu Jun 14 2012
Записи: 20
Произошло следующее. Выполнялся скрипт. Во время выполнения в оболочке TSLab внизу время остановилось и вместе с ним завис скрипт. После перезапуска скрипт зависает при первом прогоне ...


Attachments
tslab.rar (102 downloads)



Отредактировано WinEasily (Thu Jul 26 2012 06:49 PM)

Наверх
#44721 - Thu Jul 26 2012 07:03 PM Re: Индекс за пределами диапазона [Re: WinEasily]
SupportTSLab Offline
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]
WinEasily Offline
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]
SupportTSLab Offline
old hand

Registered: Tue Jan 17 2012
Записи: 1110
В Менеджере провайдера данных настройте Расписание. Сервера на ночь отключаются как правило.

Наверх
#44886 - Tue Jul 31 2012 07:35 AM Re: Индекс за пределами диапазона [Re: ViL]
WinEasily Offline
stranger

Registered: Thu Jun 14 2012
Записи: 20
Originally Posted By: ViL
Несколько инструментов используете? Попробуйте снять флаг Пересчет по каждому инструменту. Если среди инструментов есть индекс, обычно это помогает.


Как бороться с зависаниями скрипта? Ошибки не выдаются. Любая серьезная модификация приводит к проблеме зависания. Начал использовать несколько инструментов, флаг снял, но зависания продолжаются. Как добиться надежности и стабильности, ведь любая ошибка (в том числе и зависания) приносит реальные, а не виртуальные убытки?

Наверх
Page 2 of 3 < 1 2 3 >


Moderator:  ViL, sar