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

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

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 412
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #220 : 21 Декабря 2020, 06:02:42 »
Есть куча определений q_XXX для быстрого получения разного рода данных по последним котировкам. Полезно использовать без создания объектов для доступа к информации по символу.

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 412
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #221 : 21 Декабря 2020, 13:41:55 »
Простой код получения котировок от QuotesProvider:

using tsdata.marketdata ;
using tsdata.common ;
using elsystem ;

Inputs:
p1_Field("BID");

Vars:
IntrabarPersist v1(0);

method void QP_Updated( elsystem.Object sender, tsdata.marketdata.QuoteUpdatedEventArgs args )
begin
  if QP.State = DataState.Loaded then begin
  v1 = QP[p1_Field].DoubleValue;
  If V1 <> 0 then begin
  print(v1:1:4);
  end;
end;
end;

once begin
QP.Symbol = Symbol;
QP.Fields += p1_Field;
Qp.Realtime = true;
QP.Load = true;
end;

if LastBarOnChart then begin
  if QP.State = DataState.Loaded then begin
  v1 = QP[p1_Field].DoubleValue;
  If V1 <> 0 then begin
print(v1:1:4);
Plot1(v1);
end;
end;
end;

Chaika84

  • Гость
EasyLanguage
« Ответ #222 : 17 Января 2021, 11:43:05 »
нашёл решение
необходимая функция - FindBar(TargetDate, TargetTime)
возвращает количество баров с текущего до бара, заданного переменными TargetDate, TargetTime   -то что надо.

Спасибо, что дописали ответ!

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 412
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #223 : 13 Апреля 2021, 08:19:19 »

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

  • Участник клуба
  • *
  • Сообщений: 183
    • Просмотр профиля
EasyLanguage
« Ответ #224 : 25 Августа 2021, 04:05:25 »
ВНИМАНИЕ! TS9.1:
If XmlNode.Attributes.Contains("*") - не работает, всегда возвращает True!

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

  • Участник клуба
  • *
  • Сообщений: 183
    • Просмотр профиля
EasyLanguage
« Ответ #225 : 31 Июля 2023, 06:12:29 »
Добрый день! Кто-нибудь знает, как отключить появление ошибки "method arguments cannot be used as inputs due to their life time" ?? Она возникает, если в методе используется функция и Инпут метода передаётся в инпут функции. Может можно как-нибудь отключить этот контроль синтаксиса? через реестр возможно...?

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 412
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #226 : 31 Июля 2023, 16:43:11 »
Добрый день! Кто-нибудь знает, как отключить появление ошибки "method arguments cannot be used as inputs due to their life time" ?? Она возникает, если в методе используется функция и Инпут метода передаётся в инпут функции. Может можно как-нибудь отключить этот контроль синтаксиса? через реестр возможно...?

А разве оно должно так работать? Разработчики ошибку не зря генерируют, так как видимо такую возможность они не закладывали в свой код.

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

  • Участник клуба
  • *
  • Сообщений: 183
    • Просмотр профиля
EasyLanguage
« Ответ #227 : 31 Июля 2023, 16:59:15 »
Добрый день! Кто-нибудь знает, как отключить появление ошибки "method arguments cannot be used as inputs due to their life time" ?? Она возникает, если в методе используется функция и Инпут метода передаётся в инпут функции. Может можно как-нибудь отключить этот контроль синтаксиса? через реестр возможно...?

А разве оно должно так работать? Разработчики ошибку не зря генерируют, так как видимо такую возможность они не закладывали в свой код.
Не могу однозначно сказать, как оно должно работать, но можно было бы сделать этот контроль опционально! Например, сделал функцию ExtractFileName(PathFile) - получения имени файла из его полного имени, которую использую в нескольких других функциях, в которых есть методы, которые используют ExtractFileName, а в инпуты этих методов уже не установить PathFile, возникает ошибка. Неудобно! Хотя я понимаю, что Методы ниже Функции, и логика такого контроля имеет смысл, но можно бы было эту логику опционально использовать!

Оффлайн csk

  • Подписчик сайта
  • *
  • Сообщений: 140
    • Просмотр профиля
EasyLanguage
« Ответ #228 : 02 Августа 2023, 03:23:57 »
Цитировать
"method arguments cannot be used as inputs due to their life time"

Sounds like a variable going out of scope. If this is the case then ...
Цитировать
It occurs if a function is used in a method and the input of the method is passed to the input of the function.
... this is where the out of scope happen.

Цитировать
For example, I made the ExtractFileName(PathFile) function - getting the file name from its full name, which I use in several other functions that have methods that use ExtractFileName, and PathFile cannot be set to the inputs of these methods, an error occurs.
Will defining another variable to be assigned with the value of PathFile before the calls, will it help?

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

  • Участник клуба
  • *
  • Сообщений: 183
    • Просмотр профиля
EasyLanguage
« Ответ #229 : 02 Августа 2023, 06:07:59 »
Цитировать
"method arguments cannot be used as inputs due to their life time"

Sounds like a variable going out of scope. If this is the case then ...
Цитировать
It occurs if a function is used in a method and the input of the method is passed to the input of the function.
... this is where the out of scope happen.

Цитировать
For example, I made the ExtractFileName(PathFile) function - getting the file name from its full name, which I use in several other functions that have methods that use ExtractFileName, and PathFile cannot be set to the inputs of these methods, an error occurs.
Will defining another variable to be assigned with the value of PathFile before the calls, will it help?
Да, приходится назначать переменную на входное значение, тогда всё работает хорошо! Думал, есть ли варианты обойти это переназначение, но как оказывается вариантов нет! Спасибо!
Yes, you have to assign a variable to the input value, then everything works fine! I thought if there were options to get around this reassignment, but as it turns out, there are no options! Thank you!