Автор Тема: EasyLanguage  (Прочитано 51668 раз)

0 Пользователей и 1 Гость просматривают эту тему.

MaksimZZ

  • Гость
EasyLanguage
« Ответ #210 : 26 Апреля 2019, 07:01:52 »
TS 9.2 нет в природе. С TS 9.5 пока лично у меня проблем не было, хоть она и работает с текстовиками. TS 9.1 работает real time.
Ошибся, прошу прощения исправил в тексте выше на TS 9.1. Cпасибо за историю для QR.

Алексей

  • Гость
EasyLanguage
« Ответ #211 : 17 Июня 2019, 04:59:44 »
Прошу совета.
Не могу найти функцию/способ как получить значение какой нибудь функции в определённое, но не текущее время.
Например в 2346 надо узнать какое было значение какого то индикатора в 1246.
Знал бы количество баров, сделал бы ind[nbars] и всё.
Но nbars=(Time-1246)/BarInterval - не даст нужное значение баров, т.к. надо делать поправку на то что в часе 60 минут, а не 100.
Может есть какая то функция, которая позволяет посчитать количество баров, закрытых с заданного времени ?
Не смог найти самостоятельно.

PS:
нашёл решение
необходимая функция - FindBar(TargetDate, TargetTime)
возвращает количество баров с текущего до бара, заданного переменными TargetDate, TargetTime   -то что надо.

Алексей

  • Гость
EasyLanguage
« Ответ #212 : 23 Сентября 2019, 09:43:02 »
Подс4кажите, плз, где можно взять индикатор горизонтального объёма для Tradestation ?
Странно что его не могу найти в самом TS

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 389
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #213 : 23 Сентября 2019, 14:00:47 »
Подс4кажите, плз, где можно взять индикатор горизонтального объёма для Tradestation ?
Странно что его не могу найти в самом TS

https://www.google.com/search?q=horizontal+volume+indicator+for+Tradestation&ie=utf-8&oe=utf-8

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 389
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #214 : 07 Января 2020, 14:04:20 »
В Vector есть ошибка в TS 9.1/9.5. При вставке элемента в начало коллекции элемент может оказаться в итоге в случайном месте коллекции.

Например:

MyVector.insert(0, MyValue);

Так вставка элемента в начало коллекции предполагает её упорядоченность. Но элементы могут быть иногда перепутаны случайным образом. Баг проявляется на графиках с разным объёмом истории. Так что еще и не всегда проявляется.

Оффлайн Станислав

  • Участник клуба
  • *
  • Сообщений: 183
    • Просмотр профиля
EasyLanguage
« Ответ #215 : 08 Января 2020, 12:57:50 »
В Vector есть ошибка в TS 9.1/9.5. При вставке элемента в начало коллекции элемент может оказаться в итоге в случайном месте коллекции.

Например:

MyVector.insert(0, MyValue);

Так вставка элемента в начало коллекции предполагает её упорядоченность. Но элементы могут быть иногда перепутаны случайным образом. Баг проявляется на графиках с разным объёмом истории. Так что еще и не всегда проявляется.

Попробовал такой код для проверки, работает верно. Интересно, от чего зависит сбой в работе вектора?

If CurrentBar = 1
Then Begin
   VVector = Vector.Create();
   For Value1 = 1 To 5 Begin
      Value3 = Power(10, Value1);
      For Value2 = 0 To Value3 Begin
         VVector.insert(0, Value2 AsType Int);
      End;
      Print(Value1, "   ", Value3, "   ", VVector.Items[0] AsType Int);
   End;
End;



Оффлайн Gelium

  • Администратор
  • Сообщений: 9 389
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #216 : 08 Января 2020, 15:58:07 »
Попробовал такой код для проверки, работает верно. Интересно, от чего зависит сбой в работе вектора?

От объема истории на графике. Скорее всего, этот баг как-то связан с памятью.

Оффлайн Станислав

  • Участник клуба
  • *
  • Сообщений: 183
    • Просмотр профиля
EasyLanguage
« Ответ #217 : 09 Января 2020, 06:31:07 »
Попробовал такой код для проверки, работает верно. Интересно, от чего зависит сбой в работе вектора?

От объема истории на графике. Скорее всего, этот баг как-то связан с памятью.
Работает верно, попробовал проверку таким кодом:

VVector.insert(0, BarDateTime[0].Value AsType String);

If Date > Date[1]
Then Begin
   If BarDateTime[0].Value <> VVector.Items[0] AsType String
   Then Begin
      Print(BarDateTime[0].Value, "   ", VVector.Items[0] AsType String);
      Value1 = Value1 + 1;
   End;
End;

If BarDateTime = LastCalcDateTime
Then Begin
   Print("DateTimeStart", Spaces(3), BarDateTime[CurrentBar].Value);
   Print("DateTimeLast ", Spaces(3), BarDateTime[0]         .Value);
   Print("BarInterval  ", Spaces(3), BarInterval:0:0, " Minutes");
   Print("BarsOnChart  ", Spaces(3), CurrentBar:0:0);
   Print("ErrorsCount  ", Spaces(3), Value1:0:0);
End;



Оффлайн Станислав

  • Участник клуба
  • *
  • Сообщений: 183
    • Просмотр профиля
EasyLanguage
« Ответ #218 : 09 Января 2020, 06:36:33 »
Попробовал такой код для проверки, работает верно. Интересно, от чего зависит сбой в работе вектора?

От объема истории на графике. Скорее всего, этот баг как-то связан с памятью.
Да, скорее всего зависимость от памяти есть. После долгой работы в TS91, при запуске кода на диаграмме с большой историей (5 лет 1 минутной компрессии), у меня даже команда Print() не срабатывала, после закрытия TS91 и запуска вновь, всё работает в рабочем режиме.

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 389
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #219 : 09 Января 2020, 10:43:29 »
Работает верно, попробовал проверку таким кодом:

99% времени работает верно, но в 1% случаев порядок элементов меняется случайным образом, что лишает доверия к сортировке таким способом. Сами по себе данные не теряются, нарушается порядок сортировки.