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

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

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 222
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #120 : 23 Января 2016, 16:43:08 »
Возможно кому-нибудь пригодится  :)

Спасибо! Пригодится.

Gennadiy

  • Гость
EasyLanguage
« Ответ #121 : 11 Марта 2016, 15:07:16 »
В качестве альтернативы прямого экспорта в эксель из TS, использую экспорт в текстовый файл (работоспособность этого метода проверена временем - безотказная ;)), а потом макросом в экселе обрабатываю текстовый файл, на мой взгляд так удобнее и универсально, т.к. макросы экселя позволяют выполнить практически любой отчет в нужном виде, ну и конечно же выводим на панель уравления в экселе управляющие кнопки :) Эт как идея..
А можно по поводу скрипта поподробнее ?

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

  • Участник клуба
  • *
  • Сообщений: 176
    • Просмотр профиля
EasyLanguage
« Ответ #122 : 12 Марта 2016, 17:26:36 »
Считываем файл и сохраняем поля файла в массив, который в последствии будем обрабатывать. Если обработка не нужна, можно сразу заполнять информацию в ячейки экселя...
Запускаем эксель, нажимаем Alt+F11, вставляем в соответствующие Sub():

         Open(File_wrk) For Input As #1
         Do Until EOF(1)
            Line Input #1, Value
            FileText = FileText & Value           ‘здесь можно сразу сохранять в двумерный массив добавив счетчик прочитанных строк
         Loop
         Close #1

Для удобства обработки создаем меню и назначаем горячие клавиши...
СОЗДАНИЕ МЕНЮ:

Option Explicit                                                                                    'Обязательное объявление переменных
Option Compare Text                                                                                'Обработка текстовых значений без учёта регистра

Sub s_ГРМеню()
   Call f_ГРМеню(CBCReset:=False)
End Sub
Function f_ГРМеню(Optional ByVal CBCReset As Boolean)
   Dim i   As Byte
   Dim CBC As Variant
   Dim Msg As Variant

   'Удалить главное меню
   If CBCReset = True Then
      If CommandBars(1).Controls.Count > 0 Then CommandBars(1).Reset
      If CommandBars("Cell").Controls.Count > 0 Then CommandBars("Cell").Reset
      Exit Function
   End If

   'Создать главное меню
   For i = 1 To 2 Step 1: DoEvents
      Select Case i
         Case 1: Msg = 1
         Case 2: Msg = "Cell"
      End Select

      'CommandBars(Msg).Reset

      CBC = False
      For Each CBC In CommandBars(Msg).Controls: DoEvents
         If InStr(CBC.Caption, "ГрафикРабот") > 0 Then
            CBC = True
            Exit For
         End If
      Next CBC

      If CBC = False Then
         With CommandBars(Msg).Controls.Add(Type:=msoControlPopup, Temporary:=True)
            .Caption = "ГрафикРабот"
            .Visible = True
            With .Controls
               'Директории и файлы
               With .Add(Type:=msoControlPopup, Temporary:=True)
                  .Caption = "Директории и файлы"
                  With .Controls
                     With .Add(Type:=msoControlButton): .FaceId = 303: .BeginGroup = False: .Caption = "Текущая структура директорий": .OnAction = "s_ГРСтруктураДиректорийСкан":    End With
                     With .Add(Type:=msoControlButton): .FaceId = 464: .BeginGroup = False: .Caption = "Удалить структуру директорий": .OnAction = "s_ГРСтруктураДиректорийУдалить": End With
                     With .Add(Type:=msoControlButton): .FaceId = 462: .BeginGroup = False: .Caption = "Создать структуру директорий": .OnAction = "s_ГРСтруктураДиректорийСоздать": End With
                     With .Add(Type:=msoControlButton): .FaceId = 313: .BeginGroup = False: .Caption = "Менеджер файлов":              .OnAction = "s_ГРМенеджерФайлов":             End With
                     With .Add(Type:=msoControlButton): .FaceId = 790: .BeginGroup = False: .Caption = "Менеджер гиперссылок":         .OnAction = "s_ГРМенеджерГиперссылок":        End With
                  End With
               End With
            End With
         End With
      End If
   Next i
End Function



Sub s_ГРГорячиеКлавиши()
   Call f_ГРГорячиеКлавиши(CBCReset:=False)
End Sub
Function f_ГРГорячиеКлавиши(Optional ByVal CBCReset As Boolean)
   Dim i   As Double
   Dim CBC As Variant
   Dim Msg As Variant

   CBC = ""
   Call f_Администрирование
   For Each CBC In CommandBars("Cell").Controls("ГрафикРабот").Controls: DoEvents
      If InStr(CBC.Caption, "горячие клавиши") > 0 Then
         CBC = CBC.Caption
         Exit For
      End If
   Next CBC
   If CBC = "" Then Exit Function

   If InStr(CBC, "Отключить горячие клавиши") > 0 Then
      For i = 1 To 2 Step 1: DoEvents
         If i = 1 Then Msg = 1 Else _
         If i = 2 Then Msg = "Cell"

         If InStr(CBC, "Отключить горячие клавиши") = 0 Then Exit For
         With CommandBars(Msg).Controls("ГрафикРабот").Controls("Отключить горячие клавиши")
            .FaceId = 1087
            .Caption = "Включить горячие клавиши"
            .OnAction = "s_ГРГорячиеКлавиши"
         End With
      Next i

      'Создать
      Application.OnKey Key:="^%{l}", Procedure:=""                                                'Лист:               Ctrl+Alt  +l"
      Application.OnKey Key:="^%{t}", Procedure:=""                                                'Шаблон:             Ctrl+Alt  +t"
      Application.OnKey Key:="^%{y}", Procedure:=""                                                'Копия:              Ctrl+Alt  +y"
      Application.OnKey Key:="^%{p}", Procedure:=""                                                'Параметры:          Ctrl+Alt  +p"
      Application.OnKey Key:="^%{d}", Procedure:=""                                                'Диаграмма:          Ctrl+Alt  +d"
      Application.OnKey Key:="^%{s}", Procedure:=""                                                'Горизонт:           Ctrl+Alt  +s"
   Else

   If InStr(CBC, "Включить горячие клавиши") > 0 Then
      For i = 1 To 2 Step 1: DoEvents
         If i = 1 Then Msg = 1 Else _
         If i = 2 Then Msg = "Cell"

         If InStr(CBC, "Включить горячие клавиши") = 0 Then Exit For
         With CommandBars(Msg).Controls("ГрафикРабот").Controls("Включить горячие клавиши")
            .FaceId = 1088
            .Caption = "Отключить горячие клавиши"
            .OnAction = "s_ГРГорячиеКлавиши"
         End With
      Next i

      'Создать
      Application.OnKey Key:="^%{l}", Procedure:="s_ГРЛист"                                        'Лист:               Ctrl+Alt  +l"
      Application.OnKey Key:="^%{t}", Procedure:="s_ГРШаблон"                                      'Шаблон:             Ctrl+Alt  +t"
      Application.OnKey Key:="^%{y}", Procedure:="s_ГРКопия"                                       'Копия:              Ctrl+Alt  +y"
      Application.OnKey Key:="^%{p}", Procedure:="s_ГРСоздатьПараметры"                            'Параметры:          Ctrl+Alt  +p"
      Application.OnKey Key:="^%{d}", Procedure:="s_ГРСоздатьДиаграмма"                            'Диаграмма:          Ctrl+Alt  +d"
      Application.OnKey Key:="^%{s}", Procedure:="s_ГРСоздатьСводка"                               'Горизонт:           Ctrl+Alt  +s"
   End If
   End If
End Function



Function f_CreateMenuFaceID()                                                                      'Создание меню ЗНАЧКИ с образцами кнопок панели инструментов
   Dim CBC         As CommandBarControl
   Dim NewMenu     As CommandBarPopup
   Dim MenuItem1   As CommandBarControl
   Dim MenuItem2   As CommandBarControl
   Dim SubMenuItem As CommandBarButton
   Dim MaxCount    As Long
   Dim MaxGroup    As Long
   Dim i           As Long
   Dim j           As Long
   Dim k           As Long
   Dim n           As Long

   For Each CBC In CommandBars(1).Controls: DoEvents
      If CBC.Caption = "Значки" Then CBC.Delete
   Next CBC

   Set NewMenu = CommandBars(1).Controls.Add(Type:=msoControlPopup, Temporary:=True)
   NewMenu.Caption = "Значки"
   MaxCount = 40
   MaxGroup = 8
   n = MaxGroup * MaxCount
   For j = 0 To 20 Step 1: DoEvents
      Set MenuItem1 = NewMenu.Controls.Add(Type:=msoControlPopup)
      With MenuItem1
         .Caption = j * n + 1 & " - " & (j + 1) * n
         .BeginGroup = True
      End With
      For i = 0 To MaxGroup - 1 Step 1: DoEvents
         Set MenuItem2 = MenuItem1.Controls.Add(Type:=msoControlPopup)
         MenuItem2.Caption = 1 + j * n + MaxCount * i & " - " & j * n + MaxCount * (i + 1)
         For k = j * n + 1 + MaxCount * i To j * n + MaxCount * (i + 1) Step 1: DoEvents
            Set SubMenuItem = MenuItem2.Controls.Add(Type:=msoControlButton)
            With SubMenuItem
               .Caption = "FaceId = " & k
               .FaceId = k
            End With
            DoEvents
         Next k
         DoEvents
      Next i
   Next j
   Set NewMenu = Nothing
   Set MenuItem1 = Nothing
   Set MenuItem2 = Nothing
   Set SubMenuItem = Nothing
End Function




Оффлайн Gelium

  • Администратор
  • Сообщений: 9 222
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #123 : 20 Мая 2016, 13:52:21 »
Может еще кому-нибудь понадобится:

Цитировать
DefineDLLfunc:"kernel32.dll",INT,"WinExec", LPSTR, INT;

...

WinExec("notepad.exe",1);

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

  • Участник клуба
  • *
  • Сообщений: 176
    • Просмотр профиля
EasyLanguage
« Ответ #124 : 14 Сентября 2016, 11:38:16 »
Может кто-нибудь сталкивался с подобным (TS9.1)...
Создаю TextLabel TLabel, потом хочу изменить цену положения этого объекта, но увы, не работает:

If LastBarOnChart AND TLabel <> Null Then TLabel.PointValue.Price = GetAppInfo(aiHighestDispValue);

Через PrintLog проверил, не обновляется ценовой уровень положения текста.
Неужели глюк или недоработка разработчиков на таком простейшем месте?

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 222
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #125 : 14 Сентября 2016, 11:55:35 »
Проверять глюк/не глюк нет времени. Судя по коду, нужно текст привязать к границам видимой области. Для этого проще сразу метку делать относительно координат окна, а не относительно цены.

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

  • Участник клуба
  • *
  • Сообщений: 176
    • Просмотр профиля
EasyLanguage
« Ответ #126 : 14 Сентября 2016, 19:37:01 »
Текст привязывается к назначенному бару, а при перемещении диаграммы меняется масштаб и он пропадает за экраном, поэтому решил сделать простенькое обновление, но оно не работает, пробовал привязать к цене, всё равно конструкция TLabel.PointValue.Price не работает, хотя в словаре { write; read; } Придется попробовать через координаты экрана.

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 222
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #127 : 14 Сентября 2016, 20:01:04 »
Баг обходится так: mText.PointValue = DTPoint.Create(BarDateTime, c);

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

  • Участник клуба
  • *
  • Сообщений: 176
    • Просмотр профиля
EasyLanguage
« Ответ #128 : 14 Сентября 2016, 20:52:02 »
Баг обходится так: mText.PointValue = DTPoint.Create(BarDateTime, c);

Спасибо! :)

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

  • Участник клуба
  • *
  • Сообщений: 176
    • Просмотр профиля
EasyLanguage
« Ответ #129 : 16 Сентября 2016, 12:12:53 »
Может кто-нибудь сталкивался, существует ли возможность штатной установки трендовой линии на одной компрессии данных с автоматической отрисовкой её на другой компрессии данных этого же актива в разных окнах? или это опция возможна только посредством программирования? Начал программировать, и задумался, может это уже есть, но я пока не нашел где..

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

  • Участник клуба
  • *
  • Сообщений: 176
    • Просмотр профиля
EasyLanguage
« Ответ #130 : 20 Сентября 2016, 16:50:27 »
Похоже еще один баг...
Создаю ListView, добавляю в него события в 4 колонки, всего получилось 280 строк, потом проверяю через Print(), получаю RowsCount = ColumnsCount, т.е. неправильно определяет количество колонок

elsystem.windows.forms.ListView.RowsCount
elsystem.windows.forms.ListView.ColumnsCount

Решение: использовать для определения количества колонок (LView.Items[Value1] AsType ListViewItem).SubItems.Count

ZhV

  • Гость
EasyLanguage
« Ответ #131 : 17 Ноября 2016, 22:31:40 »
Хотел создать новую тему под названием "Различие языков Easy Language в Omega Research ProSuite (2000) и TradeStation 9.1.? но не получилось, видимо прав у меня для этого не достаточно.
К примеру, ранее используя в Omega Research я использовал ордера на вход в рынок Buy Stop, Sell Stop, да они работают! - в TradeStation 9.1.
Для выхода из позиции, к примеру, в старой версии программы использовал ордера ExitLong Value1 Stop; ExitShort Value2 Stop; и ExitLong Value1 Limit; ExitShort Value2 Limit;
Так вот теперь в TradeStation 9.1 этих зарезервированных слов вообще не существует!
Читал справку, но ничего особо не нашёл. Зарезервированных слов для выхода из рынка куча. Но для себя ничего подходящего не нашёл.
Подскажите пожалуйста аналог слов для команд: ExitLong Value2 Limit и ExitLong Value2 Limit; ExitLong Value3 Stop и ExitLong Value3 Stop.

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 222
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #132 : 18 Ноября 2016, 04:30:33 »
Buy, Buy to Cover, Sell, Sell Short.

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

  • Участник клуба
  • *
  • Сообщений: 176
    • Просмотр профиля
EasyLanguage
« Ответ #133 : 18 Ноября 2016, 09:52:44 »
Может еще кому-нибудь понадобится:

Цитировать
DefineDLLfunc:"kernel32.dll",INT,"WinExec", LPSTR, INT;

...

WinExec("notepad.exe",1);

Подскажите, есть ли ещё подобные функции и где про них можно почитать? Например, чтение и сохранение данных из(в) реестра. Или это уже выполняется посредством сторонних dll?

ZhV

  • Гость
EasyLanguage
« Ответ #134 : 22 Ноября 2016, 20:11:53 »
Спасибо, вроде малость разобрался. Но остались ещё непонятки, буду думать.

ZhV

  • Гость
EasyLanguage
« Ответ #135 : 23 Ноября 2016, 06:04:56 »
Gelium, спасибо Вам огромное, здорово помогли. Всё стало на свои места.
Вот по поводу многоядерности процессора возник вопрос. Извините, если не в той ветке пишу.
На странице https://gelium.net/soft-ts/tradestation-main/ts-review/item/1310-ts-tradestation-91-update-13-24#3
говорится, что с помощью галочки "Enable use of CPU cores" можно ускорить процесс (как я понял) работу с графиками.
А на скорость оптимизации это никак не влияет?
Просто что раньше я оптимизировал в ProSuite, что сейчас в TradeStation всё равно видимо только одно ядро процессора используется (при наличии 6-и ядер).
Ждать результата капецкий как долго ))
Я понимаю, что всё зависит от количества исторических данных и от кода в EL, но тем не менее, одна и та же стратегия что в ProSuite, что в TradeStation по времени вроде одинаково оптимизируются.
Gelium, подскажите, может ещё где-то в программе имеются настройки для ускорения оптимизации?
Вообще, в Диспетчере задач все 6 ядер в работе, но они заняты на 15-25%. Может так и должно быть...

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 222
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #136 : 07 Декабря 2016, 17:58:46 »
Вот по поводу многоядерности процессора возник вопрос. Извините, если не в той ветке пишу.
На странице https://gelium.net/soft-ts/tradestation-main/ts-review/item/1310-ts-tradestation-91-update-13-24#3
говорится, что с помощью галочки "Enable use of CPU cores" можно ускорить процесс (как я понял) работу с графиками.
А на скорость оптимизации это никак не влияет?

Многоядерная оптимизация есть только в TS 9.5. Читайте обзор на сайте.

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 222
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #137 : 07 Декабря 2016, 18:00:30 »
Подскажите, есть ли ещё подобные функции и где про них можно почитать? Например, чтение и сохранение данных из(в) реестра. Или это уже выполняется посредством сторонних dll?

Любые функции Widows API можно импортировать из DLL и использовать. Для этого не надо писать еще одну DLL. Все уже написано для самой Windows.

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

  • Участник клуба
  • *
  • Сообщений: 176
    • Просмотр профиля
EasyLanguage
« Ответ #138 : 11 Января 2017, 10:29:22 »
Подскажите решение такой проблемы, может кто сталкивался или кому известно...
Создаю трендовую линию, как потом узнать BarDateTime начальной точки трендовой линии?

Using elsystem;
Using charting;
Using platform;
Using elsystem.io;
Using elsystem.drawing;
Using elsystem.collections;
Using elsystem.drawingobjects;
Using elsystem.windows.forms;
Using tsdata.common;



Vars: DTPoint   sDTPoint(Null),
      DTPoint   eDTPoint(Null),
      TrendLine TLine   (Null);


Once Begin
   sDTPoint       = DTPoint.Create(DateTime.Parse(BarDateTime.ToString()),      Open);
   eDTPoint       = DTPoint.Create(DateTime.Parse(LastCalcDateTime.ToString()), Open);

   TLine          = TrendLine.Create(sDTPoint, eDTPoint);
   TLine.ExtLeft  = False;
   TLine.ExtRight = True;
   TLine.Style    = StyleType.solid;
   TLine.Weight   = elsystem.drawingobjects.Weight.weight1;
   TLine.Color    = Color.White;
   TLine.Persist  = True;
   DrawingObjects.Add(TLine);

   Print(TLine.StartPoint.Price);                  // Определяем цену начальной точки трендовой линии
   Print(TLine.Points[0].PointType.ToString());    // Как определить BarDateTime начальной точки трендовой линии ???
End;

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 222
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #139 : 11 Января 2017, 16:20:07 »
Подскажите решение такой проблемы, может кто сталкивался или кому известно...
Создаю трендовую линию, как потом узнать BarDateTime начальной точки трендовой линии?

Чтобы в будущем не было таких проблем, используйте отладчик:

1. Ставите брякпоинт и начинаете отладку.
2. Дошли до брякпоинта, откройте вкладку Autos:

ila_rendered

Теперь смотрите все свойства объектов и видите все их внутренности. В TS 9.5 добавили watch для фильтрации нужных переменных. Но только ради этого ставить TS 9.5 смысла нет.

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

  • Участник клуба
  • *
  • Сообщений: 176
    • Просмотр профиля
EasyLanguage
« Ответ #140 : 11 Января 2017, 17:23:26 »
Спасибо БОЛЬШОЕ!!! :)
Я как-то забыл про него :-[

Подскажите решение такой проблемы, может кто сталкивался или кому известно...
Создаю трендовую линию, как потом узнать BarDateTime начальной точки трендовой линии?

Чтобы в будущем не было таких проблем, используйте отладчик:

1. Ставите брякпоинт и начинаете отладку.
2. Дошли до брякпоинта, откройте вкладку Autos:

(Ссылка на вложение)

Теперь смотрите все свойства объектов и видите все их внутренности. В TS 9.5 добавили watch для фильтрации нужных переменных. Но только ради этого ставить TS 9.5 смысла нет.

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

  • Участник клуба
  • *
  • Сообщений: 176
    • Просмотр профиля
EasyLanguage
« Ответ #141 : 11 Января 2017, 17:32:45 »
Задача решена, выкладываю решение в копилку ;)

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

  • Участник клуба
  • *
  • Сообщений: 176
    • Просмотр профиля
EasyLanguage
« Ответ #142 : 30 Марта 2017, 18:05:43 »
любопытно, кто-нибудь пробовал реализовать идею Ларри Вильямса, описанную в первой главе "Долгосрочные секреты краткосрочной торговли"? Сейчас перечитываю этот шедевр, любопытная идея - натуральный зиг-заг, причём рыночный, полностью на рыночном контексте. Плюсы этого метода - отсутствие главного параметра - диапазона трендового движения, что упрощает оптимизацию стратегии в разы! Остаётся оптимизировать только параметры стратегии (стоп, размеры движений и т.п.) Накидал слегка, любопытная штука получается...

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 222
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #143 : 31 Марта 2017, 05:17:21 »
А в чём заключается идея "натуральности" зигзага?

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

  • Участник клуба
  • *
  • Сообщений: 176
    • Просмотр профиля
EasyLanguage
« Ответ #144 : 31 Марта 2017, 06:25:22 »
А в чём заключается идея "натуральности" зигзага?

в отсутствии диапазона (TrendSize у вашего Gelium_Trend), расчёт производится по барам:
High[2] < High[1] AND High[1] > High[0] - верхний экстремум
Low[2] > Low[1] AND Low[1] < Low[0] - нижний экстремум

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 222
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #145 : 31 Марта 2017, 06:59:54 »
И как без введения параметра убрать ненужные зигзаги? Для этого нужен параметр. А если ввели параметр, то этот зигазг ничем не отличается от других.

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

  • Участник клуба
  • *
  • Сообщений: 176
    • Просмотр профиля
EasyLanguage
« Ответ #146 : 31 Марта 2017, 07:47:03 »
И как без введения параметра убрать ненужные зигзаги? Для этого нужен параметр. А если ввели параметр, то этот зигазг ничем не отличается от других.

Сейчас экспериментирую, ненужные зигзаги присутствуют, и в немалом количестве...

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

  • Участник клуба
  • *
  • Сообщений: 176
    • Просмотр профиля
EasyLanguage
« Ответ #147 : 13 Мая 2017, 08:54:13 »
Для информации разработчикам, возможно пригодится:
https://markplex.com/free-tutorials/

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

  • Участник клуба
  • *
  • Сообщений: 176
    • Просмотр профиля
EasyLanguage
« Ответ #148 : 06 Июня 2017, 14:56:18 »
В обзоре TradeStation 9.1 build 12880 [Update 13-29] описвается новый компонент DateTimePicker и упоминается про индикатор BrowserControlTest, в индюках я его не нашёл, это у меня такое нечто или это так и есть? Если у кого он есть поделитесь, плз ;)

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 222
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #149 : 06 Июня 2017, 16:06:32 »
В обзоре TradeStation 9.1 build 12880 [Update 13-29] описвается новый компонент DateTimePicker и упоминается про индикатор BrowserControlTest, в индюках я его не нашёл, это у меня такое нечто или это так и есть? Если у кого он есть поделитесь, плз ;)

Примитивные примеры. Справка и Autos дают больше информации.

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

  • Участник клуба
  • *
  • Сообщений: 176
    • Просмотр профиля
EasyLanguage
« Ответ #150 : 06 Июня 2017, 17:50:16 »
В обзоре TradeStation 9.1 build 12880 [Update 13-29] описвается новый компонент DateTimePicker и упоминается про индикатор BrowserControlTest, в индюках я его не нашёл, это у меня такое нечто или это так и есть? Если у кого он есть поделитесь, плз ;)

Примитивные примеры. Справка и Autos дают больше информации.

Хотел посмотреть как этот компонент устроен на демо-коде, вроде такой имеется в описании в статье и на официальном сайте, но ссылки на него не работают, в стандартном пакете его я тоже не обнаружил, но у меня и индикатора ChartTrading в стандартном пакете не было, не устанавливался, подумал, может аналогичная ситуация...
Хотел сделать сделать функцию получения данных с интернет ресурсов средствами самой TS.

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 222
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #151 : 06 Июня 2017, 18:11:25 »
Хотел посмотреть как этот компонент устроен на демо-коде, вроде такой имеется в описании в статье и на официальном сайте, но ссылки на него не работают, в стандартном пакете его я тоже не обнаружил, но у меня и индикатора ChartTrading в стандартном пакете не было, не устанавливался, подумал, может аналогичная ситуация...
Хотел сделать сделать функцию получения данных с интернет ресурсов средствами самой TS.

С выкачкой данных из инета через встроенный браузер нет проблем. Читайте справку. DateTimePicker есть в TS 9.1. Берите и используйте. Примеры TS у меня были, поудалял. Они примитивны и бесполезны. Autos на все события вытряхивает на порядок больше информации.

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

  • Участник клуба
  • *
  • Сообщений: 176
    • Просмотр профиля
EasyLanguage
« Ответ #152 : 06 Июня 2017, 18:21:39 »
Хотел посмотреть как этот компонент устроен на демо-коде, вроде такой имеется в описании в статье и на официальном сайте, но ссылки на него не работают, в стандартном пакете его я тоже не обнаружил, но у меня и индикатора ChartTrading в стандартном пакете не было, не устанавливался, подумал, может аналогичная ситуация...
Хотел сделать сделать функцию получения данных с интернет ресурсов средствами самой TS.

С выкачкой данных из инета через встроенный браузер нет проблем. Читайте справку. DateTimePicker есть в TS 9.1. Берите и используйте. Примеры TS у меня были, поудалял. Они примитивны и бесполезны. Autos на все события вытряхивает на порядок больше информации.

Спасибо! Попробую посредством Autos.

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

  • Участник клуба
  • *
  • Сообщений: 176
    • Просмотр профиля
EasyLanguage
« Ответ #153 : 20 Июля 2017, 07:42:27 »
TS9.1. Заметки:
1. Если LastCalcDateTime = ComputerDateTime, то:
  * при обновлении диаграммы посредством TradeStation Development Enviroment.Verify последний бар
    на диаграмме обрабатывается один раз при BarStatus(1) = 2,
  * при обновлении диаграммы посредством TradeStation.ChartAnalysis.Refresh-Reload последний бар
    на диаграмме обрабатывается дважды: при BarStatus(1) = 1 и при BarStatus(1) = 2.
    Актуально при обновлении диаграмм посредством изменения времени компьютера.

2. Особенности работы и особенности использования параметров форм и параметров элементов форм:
  * CheckBox       - реагирует только на манипуляции пользователя, игнорируя программные манипуляции,
  * ComboBox       - реагирует на любые манипуляции, как пользователя, так и программные,
  * DateTimePicker - реагирует на любые манипуляции, как пользователя, так и программные,
  * RadioButton    - реагирует только на манипуляции пользователя, игнорируя программные манипуляции,
  * 121 pixel      - оптимальная длинна DateTimePicker.Width при FontSize = 8 и FontName = Arial.

3. Inputs: String  PNNam(StringRef),
               Double PNVal(NumericRef);

  * использование в теле функции PNNam[1] не работает, т.к. PNNam(StringRef) не хранит историю, а
  * использование в теле функции PNVal[1] работает, т.к. PNVal(NumericRef) хранит историю

Оффлайн val

  • Участник клуба
  • *
  • Сообщений: 148
    • Просмотр профиля
EasyLanguage
« Ответ #154 : 15 Февраля 2018, 11:02:19 »
Поделитесь пож материалами  по global variable for tradestation 91.
Спасибо.

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 222
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #155 : 15 Февраля 2018, 11:06:22 »
Поделитесь пож материалами  по global variable for tradestation 91.
Спасибо.

В справке всё подробно описано. Пример: https://gelium.net/tradestation-main/ts-easylanguage-9/item/1293-tsx-globaldictionary

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

  • Участник клуба
  • *
  • Сообщений: 176
    • Просмотр профиля
EasyLanguage
« Ответ #156 : 17 Февраля 2018, 12:59:49 »
Поделитесь пож материалами  по global variable for tradestation 91.
Спасибо.


{***************************************************************************************************
Description:  Функция предназначена для экспорта переменной в индикатор и её последующего отображения
              на диаграмме
***************************************************************************************************}

Using elsystem;
Using elsystem.collections;

Inputs: String           Prefix(StringSimple),
        Double           Value (NumericSimple);

Vars:   GlobalDictionary WDic  (Null),
        GlobalValue      GVal  (Null);

If WDic             = Null
Then Begin
   WDic             = GlobalDictionary.Create();
   GVal             = GlobalValue.Create();
   GVal.Channel     = AnalysisTechnique.Name + "Prefix";
   GVal.Load        = True;
   GVal.StringValue = Prefix;
End;

If   WDic.Contains(Prefix + BarDateTime.ToString()) = False
Then WDic.Add     (Prefix + BarDateTime.ToString(),   Value AsType Double)
Else WDic.Items   [Prefix + BarDateTime.ToString()] = Value AsType Double;

$_WDicValueToChart = Value;



{***************************************************************************************************
Description:  Индикатор предназначен для импорта переменной из функции и её последующего отображения
              на диаграмме
***************************************************************************************************}

Using elsystem;
Using elsystem.collections;

Vars: GlobalDictionary WDic  (Null),
      GlobalValue      GVal  (Null),
      String           Prefix("");

If WDic         = Null
Then Begin
   WDic         = GlobalDictionary.Create();
   GVal         = GlobalValue.Create();
   GVal.Channel = AnalysisTechnique.Name + "Prefix";
   GVal.Load    = True;
   Prefix       = GVal.StringValue;
End;

If            WDic.Contains(Prefix + BarDateTime.ToString()) = True
Then Value0 = WDic.Items   [Prefix + BarDateTime.ToString()] AsType Double;

Plot1(Value0, "ValueToChart", DarkGray, Default, 0);

If Plot1 > 0 Then SetPlotColor(1, DarkGreen) Else
If Plot1 = 0 Then SetPlotColor(1, DarkGray)  Else
If Plot1 < 0 Then SetPlotColor(1, DarkRed);

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 222
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #157 : 18 Февраля 2018, 04:54:58 »
{***************************************************************************************************
Description:  Функция предназначена для экспорта переменной в индикатор и её последующего отображения
              на диаграмме
***************************************************************************************************}

Спасибо за готовые примеры. Можно сразу eld к сообщению цеплять, чтобы не надо было руками создавать индикаторы.

Оффлайн val

  • Участник клуба
  • *
  • Сообщений: 148
    • Просмотр профиля
EasyLanguage
« Ответ #158 : 18 Февраля 2018, 11:36:08 »
Вот еще надыбал.

Оффлайн Gelium

  • Администратор
  • Сообщений: 9 222
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #159 : 18 Февраля 2018, 15:03:53 »
Вот еще надыбал.

При наличии встроенных функций внешняя DLL как бы уже и не нужна. :-)