Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Станислав

Страницы: [1] 2 3
1
TradeStation / EasyLanguage
« : 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!

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

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

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

4
TradeStation / TradeStation 9.1 build 12880 (Update 29) + QuoteRoom
« : 19 Января 2023, 08:49:43 »
Yes, all the above with administrator rights... But no success.
TS9.1:
1. Open Task Manager.
2. Reinstall each time until the installation process reaches the point of checking the built-in indicators and functions, this usually happens on the 3rd-4th circle of the reinstallation! As soon as the installation process began checking the built-in indicators and functions, close the processes marked in the screenshot in the task manager.
3. Install the latest update.
4. Working)

5
TradeStation / EasyLanguage
« : 25 Августа 2021, 04:05:25 »
ВНИМАНИЕ! TS9.1:
If XmlNode.Attributes.Contains("*") - не работает, всегда возвращает True!

6
TradeStation / TradeStation 9.1 build 12880 (Update 29) + QuoteRoom
« : 18 Августа 2021, 12:22:34 »
Определить список названий исследований всей глубины исследований можно посредством AnalysisTechnique.GetParent().GetParent().GetParent().GetParent().GetParent().Name AsType String и до максимальной глубины определяемой пользователем, а вот как к этому сообщению добавить номер строки его вызывающий?

GetParent() - это метод объекта в дере объектов. Эта информация создается и хранится на лету. А номера строк - это отладочная информация, которая должна добавляться компилятором и такой фичи в Easy по ходу нет. Хотя с ней было бы жить на порядки легче разработчикам, но упала бы скорость работы всего кода, так как нужно было бы добавлять дополнительные инструкции для сохранения в регистрах номера строки.
Вот я с этой целью и решил поинтересоваться, для отладки кода было бы великолепно иметь такую возможность. Можно было бы сделать опционально, например как Alert'ы для сохранения скорости обработки. А так приходиться делить код на #Regions и в каждом регионе функцией описывать логи работы, сообщения и ошибка, а вызывающие их строчки искать глазами...

7
TradeStation / TradeStation 9.1 build 12880 (Update 29) + QuoteRoom
« : 18 Августа 2021, 08:59:33 »
Добрый день! Кто-нибудь сталкивался с проблемой определения номера строки кода для вывода сообщения об ошибке или просто информационного сообщения? Определить список названий исследований всей глубины исследований можно посредством AnalysisTechnique.GetParent().GetParent().GetParent().GetParent().GetParent().Name AsType String и до максимальной глубины определяемой пользователем, а вот как к этому сообщению добавить номер строки его вызывающий? Возможно ли это в TS9.1? Не нашёл ничего подобного :(

8
TradeStation / TradeStation 9.5 Update 28 - только Offline
« : 17 Декабря 2020, 13:34:31 »
Как выглядит Attributes.ini ?

Здравствуйте.

Поставил Trade Station 9.5 + апдейт, но никак не могу его заставить импортировать ASCII данные. Постоянно выдаёт ошибку:

Data request failed: Insufficient information to process 3rd party symbol.

Данные - OHLCV на таймфрейме 1 минута в формате CSV. Пытался разные заголовки подсовывать, но толку ноль. Импортирую как Forex на Custom Exchange: Fx, сессия S-S 12:00-12:00 (пробовал разные занчения), точность 1/1000000.

Что я делаю не так и есть ли гайд как правильно импортировать данные?

Спасибо.

9
Спасибо вам! Итак...
1. При первичной установке на чистую систему, а также при вторичной установке после полной зачистки системы от хвостов (удаление программы и очистка реестра), появляется ошибка: Unable to register servers. Setup will now abort.
2. Далее, удалив директорию C:\Program Files (x86)\TradeStation 9.1, реестр не чищу, повторяю установку, установка доходит до конца (производится установка исследований TS 9.1) и в последний момент происходит откат установки.
3. Повторяю п.2. только при установке исследований TS 9.1, в момент установки последней группы Strategy, TradingApp, Voletility Model прерываю установку: жму крестик в окне прогресса установки, процесс установки останавливается и выдаёт запрос на её отмену, в этот момент снимаю задачу в Диспетчере задач, потом устанавливаю TradeStation 9.1_12880_Update29.exe! После его установки TS9.1 готова к работе!Пробовал с TS9.5 тоже самое...без танцев никуда!
Пробовал с TS10.1 - всё нормально устанавливается!

10
ок, я с помощью Uninstall Tool смотрел процесс установки TS 91 и увидел, что все заканчивается на этом разделе реестра, после чего установка обрывается.  С рабочего компа экспортировал его и заменил. Возможно у тебя затыкается в другом разделе, так что смотри.
Танцы с бубнами пока не принесли результатов...установил Uninstall Tool, а как в ней смотреть процесс установки TS 9.1? Она ж для удаления уже установленных программ!?!

11
Попробуй добавить в реестр вот это, у меня проканало.
Попробовал, безрезультатно...всё равно отображается сообщение об ошибке...

12
При повторном запуске установки, процесс регистрации проходит нормально, но под конец установки всё отменяется и происходит откат прогресса установки...

13
Установил Windows 10, пытаюсь поставить TS 9.1 вылетает ошибка см. вложение. Кто-нибудь сталкивался с подобным??

14
TradeStation / EasyLanguage
« : 09 Января 2020, 06:36:33 »
Попробовал такой код для проверки, работает верно. Интересно, от чего зависит сбой в работе вектора?

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

15
TradeStation / EasyLanguage
« : 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;



16
TradeStation / EasyLanguage
« : 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;



17
Архив / TradeStation 10 + real time
« : 06 Августа 2019, 10:22:11 »
Уже неоднократно эта проблема решалась, пути её решения вряд ли сильно изменились, слегка подпилить и всё. А за разумную цену интерес не появится? На неделе думаю попробовать поискать взломщика, но если есть спецы, которые уже знают этот процесс, может как-то можно договориться?

Что вы понимаете под разумной ценой?

А чем для вас TS 10 так принципиально лучше? Ужасный черный интерфейс от которого в глазах рабит, сомнительное достоинство...
TS 9.5 хотя бы вылизана до какого-то уровня. А в TS 10 бигоэпопея как обычно будет длиться пару лет.


 Под разумной ценой понимаю обычной производственный расчёт, т.е. произведение среднечасовой заработной платы программиста по данным www.hh.ru и времязатрат на производство
лекарства.

 Например:
Ведущий инженер-программист С++:
среднемесячная ЗП: 200000 руб/мес
среднемесячное количество часов (40 ч. неделя), (1кв+2кв+3кв+4кв) / 12 мес: (454+469+528+519) / 12 = 164 час
среднечасовая ЗП: 200000 / 164 = 1219.51 руб/час
времязатраты на производство лекарства: 16 часов
Стоимость работ: 1219.51 * 16 = 19512.16 руб
 
Расчёт примерный, но если в сделке будет участвовать несколько человек, то финансовые затраты распределятся равномерно, для 10 человек - 1951 руб/чел.
А так как лекарство уже не раз производилось, то все алгоритмы известны и времязатраты на производство возможно будет меньше, как следствие стоимость работ...

 
Тёмный интерфейс меня не напрягает, дело привычки.
Мне понравился TDE отлаженный в плане сворачиваемости структуры кода #Region "" ... #EndRegion (при работе с большими кодами от 1000 строк без структуры не могу работать, напрягает до бешенства, TS95 не поддерживает структуру, рвёт где ни попадя, поэтому работаю в TS9.1), также появились функции работы с директориями и файлами, которые сейчас приходится компенсировать функциями WinAPI (и то не все, например дату и время изменения или создания файла не получится узнать, т.к. в WinAPI используется структура данных для получения этой информации, а TS9.* не поддерживает работу со структурой, хотя можно сделать свою dll библиотеку для этих задач...только сейчас пришла такая идея), а можно было бы использовать уже готовые функции, есть некоторые приятные доработки свойств по прочим объектам.
 
 
 

18
Архив / TradeStation 10 + real time
« : 05 Августа 2019, 07:21:53 »
Жаль! А допилить уже существующий активатор от TS9.5 под  TS10 невозможно? Чтоб можно было также работать через текстовые файлы.

Думаю технически можно, но интереса у разработчика нет.
Уже неоднократно эта проблема решалась, пути её решения вряд ли сильно изменились, слегка подпилить и всё. А за разумную цену интерес не появится? На неделе думаю попробовать поискать взломщика, но если есть спецы, которые уже знают этот процесс, может как-то можно договориться?

19
Архив / TradeStation 10 + real time
« : 03 Августа 2019, 11:22:24 »
Добрый день!
Разработка не сдвинулась с "мёртвой" точки?
Вероятность за какие то деньги получить такую программу ещё существует?

От разработки отказались из-за малой перспективности.
Жаль! А допилить уже существующий активатор от TS9.5 под  TS10 невозможно? Чтоб можно было также работать через текстовые файлы.

20
Попробуйте в hosts прописать переадресацию ts.com на 127.0.0.1. Должно перестать.
Испытания провожу с 10-00 до 17-40 (сейчас), ошибка сценария не появлялась, лекарство помогло! Спасибо!

21
Отследил, что при работе с TS9.1 у меня регулярно стало вылетать окно с ошибкой сценария, ориентировочно после 16:00 с периодичностью 3-5 мин. Использую Firefox, закрываю его, сообщение всё равно появляется, закрываю TS9.1 и всё норм. Кто-нибудь с подобными фокусами сталкивался?

22
Мож быть у кого-то такое приключалось. После форматирования или других манипуляций на мониторе остаюся хвосты прошлых действий.
Спасибо.
У меня такое иногда происходит, если запущен MS Word 2016, он каким-то образом влияет на отображение контекстного меню в моём случае: если MS Word 2016 запущен впервые с момента загрузки системы, то могут появляться такие залипания контекстного меню, но если MS Word 2016 запускался не впервые, т.е. был закрыт и заново запущен, то залипаний не происходит.

23
Архив / TradeStation 10 + real time
« : 23 Мая 2019, 05:35:23 »
4. запускаем транслятор котировок из QuoteManager в TS10

У вас есть исходный код такого транслятора? Или есть документация как получить данные из QuoteManager? Лично у меня нет такой документации.

Данные по DDE получить просто без QuoteManager, да и для выгребания данных из QUIK или Transaq есть документация. Плюс ломанный MultiCharts - это не вариант, так как вложения в разработку надо будет как-то отбить, а для этого софт нужно продавать англоязычной аудитории и никакие заломы и костыли от MultiCharts тут не проходят. Работа хорошего программера обходится от 5000$ в месяц. Крутые профи берут от 10К. Вот и прикиньте, сколько нужно кодить и отлаживать, чтобы просто вернуть то, что будет инвестировано до самоокупаемости. А делать столько работы просто ради кайфа от TS 10 конечно может кто-то и может себе позволить, но лично у меня нет таких ресурсов.
Если бы такой код транслятора у меня был, мы бы уже этим кодом пользовались :) Я изложил возможный вариант, но как оказывается, он не оптимален. Надо придумать оптимальный вариант (цена/качество/удобство). Вполне приемлемо работать и через текстовые файлы (псевдо RealTime), к тому же инфраструктура кода для этого уже готова и отлажена. Но если есть более оптимальные идеи, надо их обдумать и реализовать.

24
Архив / TradeStation 10 + real time
« : 23 Мая 2019, 05:03:21 »
QuoteManager может получать котировки практически из любого источника, что исключает специальное программирование под какой-либо терминал, найти нормальную рабочую версию мультика - дело минутное, сейчас посмотрел, есть пятая с простым лекарством, обычной заменой файлов и стабильной работой.

Интересная идея. У вас есть документация как получать данные из QuoteManager в свою программу?
1. запускаем Transaq

2. запускаем Winros.exe (возможно этот пункт не потребуется с другими терминалами)

3. запускаем QuoteManager от MC

4. запускаем транслятор котировок из QuoteManager в TS10

5. запускаем TS10

6. работаем с огромным удовольствием в TS10 :)

Трансляция котировок из Transaq в QuoteManager выполняется! Связка работает с версиями MC до 8, подтверждаю личными исследованиями, см. скрины. Все настройки очень простые.
В QuoteManager большой выбор поставщиков данных, также есть возможность настроить индивидуального поставщика данных (Квик, Транзак, Метатрейдер...), очень удобно организовано хранение данных и доступ к ним, возможность выгрузки и загрузки.


25
Архив / TradeStation 10 + real time
« : 22 Мая 2019, 17:30:02 »
А как эта технология будет выглядеть? Так же как 9.1, посредством текстовых файлов?

Real time посредством текстовых файлов невозможен. Текстовые файлы - это offline. :)
Выглядеть будет примерно как real time типа QR -> TS 9.1. Только без QR, если не договоримся по поводу поддержки технологии на базе QR.
Через текстовые файлы возможен только псевдо Real time с обновлением времени компьютера в режиме offline :) технология не особо удобная, но на безрыбье...рабочая :D как мне представляется, идеальный вариант - это работа через MultiCharts - QuoteManager:
1. устанавливается MultiCharts
2. устанавливается TS10
3. запускается транслятор котировок из MultiCharts - QuoteManager в TS10, также удобно было бы  загружать транслятор посредством автозагрузки.
QuoteManager может получать котировки практически из любого источника, что исключает специальное программирование под какой-либо терминал, найти нормальную рабочую версию мультика - дело минутное, сейчас посмотрел, есть пятая с простым лекарством, обычной заменой файлов и стабильной работой.

26
Архив / TradeStation 10 + real time
« : 22 Мая 2019, 17:09:03 »
А как эта технология будет выглядеть? Так же как 9.1, посредством текстовых файлов?

27
TradeStation / TradeStation 9.5 Update 22
« : 14 Апреля 2019, 10:16:27 »
Надо пробовать. Я просто не отменяю установку обновлений после инсталляции TS.9.1.


Спасибо. Уже поставил обновления в ручную. Если сейчас из T.S. 9.1 запустить поиск обновлений и их установку - ничего не слетит?

28
TradeStation / EasyLanguage
« : 14 Апреля 2019, 08:09:40 »
не встречал подобных утилит по снятию блокировок! хотя они не особо и нужны, если представляешь механизм, как он должен работать, то его проще написать самому, и понятней будет и для развития полезно :)


К сожалению код залочен. Но на 8.2 он работал.

Скрин:

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

Думал может где-то в интерфейсе есть ограничитель типа максбарсбэк.

Кстати, для старых версий выкладывали утилиту для просмотра залоченного кода. Вам не попадалась случайно для 9.1

29
TradeStation / TradeStation 9.5 Update 22
« : 12 Апреля 2019, 15:13:37 »
При установке TS.9.1 не обязательно ставить обновления отдельно, можно использовать обновление программы после инсталляции, посредством программы автоматического обновления, всё нормально будет работать!


С обновлением значит что-то перепутал (видимо с 29-м для 9.1)

30
TradeStation / EasyLanguage
« : 12 Апреля 2019, 14:18:21 »
Скриншот экрана покажите! Скорее всего с кодом проблемы...а лучше сделайте в коде подсчёт количества создаваемых трендовых линий!

Подскажите пожалуйста, как бороться с этой ошибкой при добавлении индикатора, можно ли как-то увеличить допустимое число трендовых линий, T.S. 8.2 не ругалась на добавляемый индикатор, а T.S. 9.1 выдает ошибку.

Error: Exceeded the maximum number of Trendlines allowed on this chart. Excessive use of Trendlines causes decreased performance. Please adjust analysis technique to dispose of unneeded Trendlines. Call Stack

31
TradeStation / TradeStation 9.5 Update 22
« : 12 Апреля 2019, 05:52:07 »
Ради благой цели, дело идёт к тестированию на виртуальной машине и переустановкой винды, или сразу переустановкой винды. В таких случаях, после переустановки винды, установки базовых программ (оффисы, браузеры и т.п.) до установки TS, делайте снимок системы посредством True Image или чем-нибудь другим, чтоб потом избежать траты времени на повторную установку и настройку системы с нужными программами! помогает ;)


Чувствую, что могут мешать прежние установки разных версий TS.
История такова: стояла T.S. 8.2, потом поставил T.S. 9.1, между ними переключение шло нормально, потом решил попробовать поставить T.S. 9.5 по первой инструкции (до того как Gelium ее обновил по моей просьбе). Не вставали обновления, но базовая версия запускалась. При этом слетела возможность переключения между версиями. Поскольку моей рабочей программой на тот момент была T.S. 8.2, я решил снести 9.1 и 9.5, снес, но T.S 8.2 больше не запустилась ссылаясь на то, что она не главная. Снес T.S. 8.2 и попытался поставить заново - не запускается, пишет что она не главная.

При этом все удаления выполнены не только средствами стандартного установщика, но и с чисткой реестра программой Revo Uninstaller.

Теперь и T.S. 9.5 не ставится.

32
TradeStation / TradeStation 9.5 Update 22
« : 12 Апреля 2019, 05:46:52 »
если после установки 18 обновления нормально установились 22 обновление, то предварительно устанавливать 12 обновление не надо! Оно было раньше на сайте, как видите, сейчас не актуально. Так как я давно этими вопросами занимался, то посоветовал установку всей цепочки обновлений, хотя достаточно 18+22. Как видно, обновления установились нормально, но программа не запускается. Возможные пути решения:
1. удалить все версии программы, почистить реестр от хвостов и повторить установку.
2. если п1 не дал результатов, то: создать виртуальную машину с аналогичной виндой и на неё установить TS, если всё пройдёт нормально, то проблема в системе Windows вашего компа, переустановка которой помогает ;)


После того как поставил patch из 18-го обновления 22-е поставилось. Но почему-то не запускается сама TS 9.5.

На короткое время появляется окошко:

Потом оно гаснет и тишина.

P/S

Два момента - Вы на стадии "а" устанавливали обновление 12. В текущей инструкции Гелиума его нет. Второй момент инструкция по установке, которая висела здесь до моего сообщения, содержала последним 29-е обновление.

Буду благодарен за помощь, спасибо.

33
TradeStation / TradeStation 9.5 Update 22
« : 12 Апреля 2019, 04:28:16 »
Может этот файл обновления "9.05.01.3284_Update22.msp" можно как-то поставить с помощью самой TS 9.5?

Припоминаю была у меня как-то аналогичная проблема, решалась она последовательной установкой обновлений, чистим все папки "темп":

а. Update 12\TradeStation 9.5 Update 9.05.00.2463_Update 12.msp

б. Update 18\TradeStation 9.5 Update 9.05.01.3239_Update18\Patch.msp,

с. Update 22\9.05.01.3284_Update22.msp

обратите внимание на такой момент: (б) обновление было зашито в установочный файл 2.TradeStation 9.5 Update 9.05.01.3239_Update18.exe, который я распаковал и устанавливал уже Patch.msp, я точно не скажу, т.к. давно это было, работаю в 9.1, но где есть возможность распаковать установочные архивы - распакуйте и устанавливайте напрямую Patch.msp обновлений

34
TradeStation / EasyLanguage
« : 25 Марта 2019, 16:27:40 »
спасибо большое за ответ, но результат тот же.

опишу смысл словами:

формула должна просматривать 30 объемов (volume) назад и считать число их попаданий в границы, которые рассчитаны на текущем баре.

№бара  volume  границы нижн  границы верхн
...         ...         ...                     ...
25        10         20                    50
26        51         31                    35
27        15         40                    41
28        20         25                    30
29        21         12                    20
30        22         9                      15

мне нужно чтобы функция countif при проверке условия на последних тридцати барах использовала границы рассчитанные на тридцатом баре скользящего окна (т.е. в данном случае 9 - 15).

Спасибо.
для такой задачи countIF не подойдёт, её надо доработать...


LevelUp = значение верхней границы;
LevelDn = значение нижней границы;
Length = 30;
Sum = 0;
for Value1 = 0 to Length - 1 begin
   if tickvolume[Value1] <= LevelUp AND
      tickvolume[Value1] >= LevelDn
   then Sum = Sum + 1;
end;


35
TradeStation / EasyLanguage
« : 25 Марта 2019, 15:45:11 »
Прошу помощи по такому коду:

frequency1=countIF((tickvolume>=tickvolumeStatL and tickvolume<value1), LeN);

код работает как нужно если заменить tickvolumeStatL и value1 на конкретные числа. Однако в представленном виде код дает не правильный результат. Видимо внутри функции countIF идет перебор от [ноля] до [LeN], не только переменой tickvolume, но также и границ (tickvolumeStatL, value1)  при попадании в которые срабатывает счетчик, что для моих целей неприемлемо.

Подскажите пожалуйста, как можно решить эту проблему.

Так будет верно работать! Condition0 - название переменной должно быть уникально с целью получения исторических значений переменной, например Condition0[1]:


Condition0=tickvolume>=tickvolumeStatL and tickvolume<value1;
frequency1=countIF(Condition0, LeN);

36
TradeStation / EasyLanguage
« : 10 Декабря 2018, 05:51:15 »
Опишите чуть подробнее, что вы хотите делать в TS. Я подскажу какие функции WinAutomation оптимально использовать. Достаточно давно его использую для автоматизации с TS и в других проектах.


Спасибо! Задача такова, создаю функцию скриншота экрана. Посредством TS выполняется определение и центровка события на экране, а сторонним модулем сделать скриншот, т.к. посредством самой TS это сделать нереально, всвязи с тем, что TS не поддерживает работу со структурами dll. Была идея сделать метод скриншота на vba, а потом с помощью WinAutomation сгенерировать exe и в TS его запускать, но вспомнил про одну утилиту, в моём случае идеально подходящая...MiniCapPortable - программа для захвата изображения экрана с поддержкой командной строки, включая возможность запускать (а затем прерывать) приложения, фиксировать окна. Особенностью является возможность обходится без пользовательского интерфейса и делать всё из командной строки. Таким образом осталось всё только скомпановать в TS, весь вспомогательный материал имеется. Запуск командной строки в TS Easy:



DefineDLLfunc: "kernel32.dll",                                                                     // https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-winexec
               Long,                                                                               // https://www.vsokovikov.narod.ru/New_MSDN_API/Process_thread/fn_winexec.htm
               "WinExec",                                                                          // Запуск процесса: > 31 - процесс запущен, <= 31 - процесс не запущен
                                                                                                   //                   * 0                    -  0: Оперативной системе не хватает памяти или ресурсов.
                                                                                                   //                   * ERROR_BAD_FORMAT     - 11: .EXE файл не рабочий (не Win32 .EXE или ошибка в .EXE образе).
                                                                                                   //                   * ERROR_FILE_NOT_FOUND -  2: Указаный файл не найден.
                                                                                                   //                   * ERROR_PATH_NOT_FOUND -  3: Указаный путь не найден.
               String,                                                                             // * [in] lpCmdLine: Адрес процесса
               Int;                                                                                // * [in] nCmdShow:  Стиль отображения окна




WinExec("CMD /C "                                                                                                                                 +
                            "(Ping -n 1 www.google.com || "                                                                                                   +     // Интернет соединение отсутствует
                            "(Ping -n 1 www.yandex.ru  || "                                                                                                   +     // Интернет соединение отсутствует
                            "(Netsh Interface Set Interface Name=" + DoubleQuote + "Подключение по локальной сети" + DoubleQuote + " Admin=Disabled" + " & "  +     // Расключение сетевого интерфейса
                             "Netsh Interface Set Interface Name=" + DoubleQuote + "Подключение по локальной сети" + DoubleQuote + " Admin=Enabled"  + " && " +     // Включение   сетевого интерфейса
                             "For /L %i In (1,1,5) Do (W32Tm /Resync /Rediscover && Exit & TimeOut /T %i)"                                                    +     // Синхронизировать текущее время с сервером времени сети
                            ")))", 0)




37
TradeStation / EasyLanguage
« : 09 Декабря 2018, 15:09:03 »
чуть больше код для скрина окна.Проблема в том, что я не знаю как в EL описывается структура параметров функции, например функция GetWindowRect(WindowHandle, Struc).
Объявляю:
DefineDLLfunc: "user32.dll", Long, "GetWindowRect",
               Long,                                                                               // * [in]  hWnd:   Дескриптор окна.
               Long{IEasyLanguageObject};                                        // что тут надо установить, чтобы получать значения??    * [out] lpRect: Указатель на структуру, которая принимает экранные координаты левого верхнего и нижнего правого углов окна.
как получить lpRect?в нём содержатся параметры окна: lpRect.Weight...

Когда вы хотите просто передать значение, объявляете к примеру Float. Если хотите получить, то объявляете LPFloat. Далее при вызове функции, для параметра с объявлением LPFloat, надо указать переменную с &, чтобы она приняла значение. Например, &Value1.

В вашем случае, по идее, должно быть так:

DefineDLLfunc: "user32.dll", Long, "GetWindowRect", Long, LPLong;

И вызов с переменными типа Long:

L1 = GetWindowRect(L2, &L3);

Вы получите указатель на структуру в L3, но вот что дальше с ним делать? Ведь Easy по-моему не даёт возможности определять структуры в коде. Не проще ли написать нужные функции в DLL и прицепить уже в подходящем для Easy виде?
Наверное, стены на то и существуют, чтоб иногда было с кем по бодаться :) Да, в Easy нет возможности работать со структурами, теперь я это знаю, исследовал на практике...хотя был уверен, что этот момент разработчиками продуман, так как есть возможность объявлять DLL, а многие из них используют структуру, а так получается неполноценная реализация работы с DLL, которая долгое время вызывала у меня интерес!
Но выход найден, думаю сделать так:- в WinAutomation  в VBA написать "фотоаппарат" на активное окно и сгенерировать File.exe- TS отображает событие на экране, активирует окно диаграммы посредством SetForegroundWindow(), запускает фотоаппарат посредством WinExec(), который фоткает активное окно диаграммы и сохраняет его.
Всё достаточно просто получается ;)
 

38
TradeStation / EasyLanguage
« : 09 Декабря 2018, 06:53:30 »
Так это делается элементарно и как я описал, если есть соответствующие знания, в частности как организовать работу функции WinAPI. Это ж не долго, может чуть более написания скрипта в WinAutomation, хотя я более предпочитаю AutoMate! Всего один раз написать, а потом пользоваться.

Вы уверены, что всё так просто? Вот так примерно устроено окно чартинга:

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

Вы хотите писать свою собственную утилиту для разбора структуры TradeStation, вместо того, чтобы использовать готовое?

Automate в определённом плане полный отстой в сравнении с WinAutomation, так как части фишек в нём просто нет, а сам WinAutomation генерит машинный код, который работает в сотни раз быстрее интерпретатора Automate. Для одних задач может хватить Automate, для других без WinAutomation - большие времязатраты, которые стоят денег.
поиск любого окна:

   WindowHandlePrt = FindWindowA(0, 0);
   While WindowHandlePrt > 0 Begin
      GetClassNameA(WindowHandlePrt, WindowClassNam, WindowClassLen);
      If InStr(WindowClassNam, "ORPLAT.EXE TRADESTATION") > 0
      Then Begin
         WindowHandleChd = FindWindowExA(WindowHandlePrt, 0, 0, 0);
         WindowHandleChd = GetWindow(WindowHandleChd, GW_CHILD);
         While WindowHandleChd > 0 Begin
            GetClassNameA(WindowHandleChd, WindowClassNam, WindowClassLen);
            If InStr(WindowClassNam, "ORContainerMDIChildFrame") > 0
            Then Begin
               WindowTitleLen = GetWindowTextLengthA(WindowHandleChd) + 1;
               WindowTitleNam = Spaces(WindowTitleLen);
               GetWindowTextA(WindowHandleChd, WindowTitleNam, WindowTitleLen);

               If WindowHandle = 0
               Then Begin
                  If InStr(WindowTitleNam, WindowName) > 0
                  Then Begin
                     WindowHandle = WindowHandleChd;
                     If WindowUniq = 0 Then Return WindowHandle;
                  End;
               End;
            End;
            WindowHandleChd = GetWindow(WindowHandleChd, GW_HWNDNEXT);
         End;
      End;
      WindowHandlePrt = GetWindow(WindowHandlePrt, GW_HWNDNEXT);
   End;
чуть больше код для скрина окна.Проблема в том, что я не знаю как в EL описывается структура параметров функции, например функция GetWindowRect(WindowHandle, Struc).
Объявляю:
DefineDLLfunc: "user32.dll", Long, "GetWindowRect",
               Long,                                                                               // * [in]  hWnd:   Дескриптор окна.
               Long{IEasyLanguageObject};                                        // что тут надо установить, чтобы получать значения??    * [out] lpRect: Указатель на структуру, которая принимает экранные координаты левого верхнего и нижнего правого углов окна.
как получить lpRect?в нём содержатся параметры окна: lpRect.Weight...

39
TradeStation / EasyLanguage
« : 07 Декабря 2018, 09:58:35 »
Цель: сделать функцию скриншота окна диаграммы,которая будет работать следующим образом:
- с 1 по последний бар сохраняются даты событий в массив- на последнем баре выполняются скриншоты этих событий прокручивая экран посредством charting.ChartingHost.Create().ScrollTo(BarDateTime из массива) - (некоторое число баров для центровки события на скришоте)
- привязка гиперссылкой соответствующего скриншота к реестру сделок (блокнот рейдера) в экселе

Зачем же это делать так сложно и с большими времязатратами, когда всё это делается элементарно в WinAutomation с получением в итоге рабочего экзешника? Вы вообще своё время ни во что не цените?
Так это делается элементарно и как я описал, если есть соответствующие знания, в частности как организовать работу функции WinAPI. Это ж не долго, может чуть более написания скрипта в WinAutomation, хотя я более предпочитаю AutoMate! Всего один раз написать, а потом пользоваться.

40
TradeStation / EasyLanguage
« : 07 Декабря 2018, 06:41:18 »
Пост не понятен. У вас получилось или нет? Какова цель получения хэндла окна?
Цель: сделать функцию скриншота окна диаграммы,которая будет работать следующим образом:
- с 1 по последний бар сохраняются даты событий в массив- на последнем баре выполняются скриншоты этих событий прокручивая экран посредством charting.ChartingHost.Create().ScrollTo(BarDateTime из массива) - (некоторое число баров для центровки события на скришоте)
- привязка гиперссылкой соответствующего скриншота к реестру сделок (блокнот рейдера) в экселе
В WinAPI есть функции, которые возвращают несколько свойств через один параметр, доступ к свойствам осуществляется через ".".А у меня пока не получается придумать как эти параметры получать в TDE, один из примеров это функция GetWindowRect.Вообще, поняв как это можно делать, открываются несметные возможности в TS с помощью WinAPI без всяких дополнительных программ.Можно взять весь процесс трейдинга под контроль самой TS! Это удобно!У меня пока это не получается...
С обычными WinAPI функциями проблем нет, всё работает, а вот с теми у которых через один параметр можно получать несколько свойств, увы...

Страницы: [1] 2 3