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

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


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

Страницы: 1 [2] 3
41
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;


42
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);

43
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)




44
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(), который фоткает активное окно диаграммы и сохраняет его.
Всё достаточно просто получается ;)
 

45
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...

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

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

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

48
TradeStation / EasyLanguage
« : 06 Декабря 2018, 11:57:44 »
 // Как получить параметры окна стороннего приложения посредством WinAPI, например "Калькулятор". Неделю бъюсь, всё безтолку...ХЕЛП!
// {***Obj} Указатель на структуру, которая принимает экранные координаты левого верхнего и нижнего правого углов окна.
// Как его описать, чтобы можно было получить параметры окна в TDE?
// Предполагаю, должно быть как-то так: Obj.left, Obj.right
// Думаю, разработчики не могли упустить возможность получения данных посредством структуры, но как это сделать? примеров не нашёл...
Using elsystem;
DefineDLLfunc: "user32.dll",                                                                       // https://www.vsokovikov.narod.ru/New_MSDN_API/Window/fn_findwindow.htm
Long,                                                                               // https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-findwindowa
"FindWindowA",                                                                      // Retrieves a handle to the top-level window whose class name and window name match the specified strings.

Long,                                                                               // * [in] lpClassName:  If lpClassName points to a string, it specifies the window class name.

String;                                                                             // * [in] lpWindowName: The window name (the window's title). If this parameter is NULL, all window names match.
DefineDLLfunc: "user32.dll",                                                                       // https://www.vsokovikov.narod.ru/New_MSDN_API/Window/fn_getwindowrect.htm
Long,                                                                               // https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-getwindowrect
"GetWindowRect",                                                                    // Retrieves the dimensions of the bounding rectangle of the specified window. The dimensions are given in screen coordinates that are relative to the upper-left corner of the screen.
Long,                                                                               // * [in]  hWnd:   A handle to the window.
Long;  {***Obj}                                                                     // * [out] lpRect: A pointer to a RECT structure that receives the screen coordinates of the upper-left and lower-right corners of the window.
Vars:
String WindowName  ("Калькулятор"), // Предварительно необходимо запустить "Калькулятор"
Int    WindowHandle(0),
Int    Obj(0);        // ***Obj
Once Begin
Clearprintlog;
WindowHandle = FindWindowA(0, WindowName);
If WindowHandle > 0
Then Begin
GetWindowRect(WindowHandle, Obj {***Obj});
{
Print(Obj.left:0:0, Obj.right:0:0);
}
Print(WindowHandle:0:0);
End;
End;
 

49
TradeStation / EasyLanguage
« : 19 Сентября 2018, 17:52:18 »
Кто-нибудь интересовался новейшим чудом TradeStation 10?

50
TradeStation / EasyLanguage
« : 10 Августа 2018, 09:02:03 »
На выходных переустановил Win7. Впервые, появилась проблема запуска TradingApp, кто-нибудь сталкивался с подобными фокусами?
Проблема решилась повторной переустановкой системы, но:
1. первоначально, после установки Win 7 не дожидаясь установки её обновлений, была установлена TS9.1, как следствие возникли проблемные моменты с TradingApp
2. впоследствии, после установки Win 7 были установлены её обновления до текущей даты, а после установлена TS9.1, проблемные моменты с TradingApp исчезли.

51
TradeStation / EasyLanguage
« : 30 Июля 2018, 06:17:48 »
На выходных переустановил Win7. Впервые, появилась проблема запуска TradingApp, кто-нибудь сталкивался с подобными фокусами?

52
TradeStation / EasyLanguage
« : 25 Июля 2018, 05:07:22 »
Не знаю по какой причине, но работа с файлами в AutoMate VBS модулях выполняется намного быстрее, чем в TS!Сделал загрузчик котировок, скорость работы которого в TS более чем в 2 раза медленнее в сравнении с VBS! API функции работают очень быстро, а чтение и запись в файл посредством TS очень медленная! Думаю попробовать и её сделать через API. И сравнить результат...

53
TradeStation / EasyLanguage
« : 24 Июля 2018, 19:11:38 »
Есть способ достаточно простой, можно в самой TS перебрать окна, определить их дескрипторы и классы, но это посредством цикла, хотелось бы без цикла, напрямую по дескриптору, ну чтож придётся циклом перебирать до нужного окна и останавливать цикл. Сторонний софт стараюсь обходить по возможности.

А для чего нужно найти дескриптор окна? И как определить, что из всех окон найдено именно нужное?
Хочу попробовать сделать QuoteUpdater в самой TS.По дескриптору окна можно направлять команды управления окном, сообщения окну, комбинации клавиш, всё посредством API.
Есть дискриптор и заголовок, по ним можно определить в каком именно окне используется исследование.

54
TradeStation / EasyLanguage
« : 24 Июля 2018, 17:49:38 »
Кто-нибудь знает как можно узнать дескриптор окна диаграммы в функции??

Если легко, то никак. Если сложно, то через WinAutomation можно попробовать вытянуть или подобный софт.
Есть способ достаточно простой, можно в самой TS перебрать окна, определить их дескрипторы и классы, но это посредством цикла, хотелось бы без цикла, напрямую по дескриптору, ну чтож придётся циклом перебирать до нужного окна и останавливать цикл. Сторонний софт стараюсь обходить по возможности.

55
TradeStation / EasyLanguage
« : 24 Июля 2018, 11:57:11 »
Кто-нибудь знает как можно узнать дескриптор окна диаграммы в функции??

56
TradeStation / TradeStation 9.5 Update12
« : 20 Июля 2018, 10:46:23 »
Вот
посмотрите мои настройки, всё работает во всех версиях TS9*Сделал в csv для удобства сравнения в экселе.

57
TradeStation / TradeStation 9.5 Update12
« : 20 Июля 2018, 09:55:00 »
Станислав, спасибо.  Увидел на форуме, что это уже обсуждалось здесь: https://www.forum.gelium.net/index.php?topic=582.msg6051#msg6051

Но, ответа к сожалению так не нашел.  Написан следующий ответ  "В статье есть файл и описание того, что в нем надо менять. Читайте статью".  А ссылки на статью - нет, искал несколько раз.  Помогите плз, дайте ссылку на статью, где об этом написано.
Покажите содержимое файла Attributes.ini

58
TradeStation / TradeStation 9.5 Update12
« : 20 Июля 2018, 08:51:31 »
Добрый день!  Использую TradeStation 9.5  Update 18 в режиме Offline. 

Хочу протестировать стратегию на исторических данных.  Данные в ASCII формате находятся в отдельной папке вместе с файлом Attributes.ini.

Инструмент был добавлен как 3rd party symbol.   Данные - дневные за 2 прошедших года.  График показывается без проблем. 

Когда пытаешься добавить стратегию "Insert Strategy" пишет Waiting for Data...  и ничего не делает.   Такое впечатление, что ждет откуда то серверных данных, а откуда им взяться если я работаю в режиме Offline c данными в текстовом файле.  Пробывал юзать TS8 - такая же фигня.  Кто нибудь может подсказать как это можно решить (обойти) ?  Заранее признателен за помощь.
в поиск в верхнем правом углу введите Attributes и увидите сообщения по этой теме!

59
TradeStation / TradeStation 9.5 Update12
« : 20 Июля 2018, 08:49:54 »
Добрый день!  Использую TradeStation 9.5  Update 18 в режиме Offline. 

Хочу протестировать стратегию на исторических данных.  Данные в ASCII формате находятся в отдельной папке вместе с файлом Attributes.ini.

Инструмент был добавлен как 3rd party symbol.   Данные - дневные за 2 прошедших года.  График показывается без проблем. 

Когда пытаешься добавить стратегию "Insert Strategy" пишет Waiting for Data...  и ничего не делает.   Такое впечатление, что ждет откуда то серверных данных, а откуда им взяться если я работаю в режиме Offline c данными в текстовом файле.  Пробывал юзать TS8 - такая же фигня.  Кто нибудь может подсказать как это можно решить (обойти) ?  Заранее признателен за помощь.

Решение подобной проблемы уже описывали на форуме! Содержимое Attributes.ini в студию! ;)

60
TradeStation / TradeStation 9.5 Update12
« : 13 Июня 2018, 11:19:32 »
А для чего вообще нужно что-то писать в DESCRIPTION? Не проще ли нужную информацию записать в текстовый файл и потом просто его прочитать?
Это же тоже самое, только на 1 файл меньше, и оно работало в 9.1, а в 9.5 - нет.Проблемка по сути никакая, но обнаружив, что и RaiseRunTimeError работает по другому, причём вообще ошибку не выводит, молчит, возникает мысль, какие ещё зарезервированные слова "оптимизированы" подобным образом...

61
TradeStation / TradeStation 9.5 Update12
« : 13 Июня 2018, 10:09:36 »
Попытка полностью перейти на TS9.5 оказалась неудачной, не подумал бы, что различия в работе кода будут такими...
If CurrentBar = 1
Then Begin
   Print("!"+Description+"!");   //я использую Description, в 9.1 работает нормально, как и все зарезервированные параметры, в 9.5 никак не хочет получать значение параметра :(

//SYMBOL,CATEGORY,DATE FORMAT,EXCHANGE,PRICE SCALE,MINIMUM MOVEMENT,BIG POINT VALUE,SESSION 1 START TIME,SESSION 1 END TIME,SESSION 1 DAYS,DESCRIPTION,SESSION 2 START TIME,SESSION 2 END TIME,SESSION 2 DAYS,OPTION TYPE,STRIKE  PRICE,DAILY LIMIT,MARGIN,EXPIRATION DATE,LOCALE
//ALRS,STOCK,YYYYMMDD,MICEX,1/100,1,1,1000,1850,UMTWRFS,TQBR:29.44:34.56:100:1180626:2,,,,,,,,,0x409
//ALRS,STOCK,YYYYMMDD,MICEX,1/100,1,1,1000,1850,UMTWRFS,"TQBR:29.44:34.56:100:1180626:2",,,,,,,,,0x409 - пробовал и так...   

//Description = "TQBR:29.44:34.56:100:1180626:2"

   RaiseRunTimeError(BarDateTime.Format("%Y%m%d %H%M") + " " + elsystem.AnalysisTechnique.Name + ": "); // в 9.1 эта строка работает, в 9.5 - нет, проблема в использовании BarDateTime.Format("%Y%m%d %H%M", если его убираешь, то работает, глупо делать такие усовершенствования, отменяющие нормальную работу ранее созданных возможностей :( после этого закрадывается мысль, чего ещё ожидать...
может кто-нибудь сталкивался с подобными проблемами и нашёл решение?
End;

62
TradeStation / EasyLanguage
« : 18 Февраля 2018, 17:02:11 »
Для общего образования))

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

64
TradeStation / TradeStation 9.1 Update 13-24-2x + QuoteRoom
« : 25 Сентября 2017, 17:47:12 »
Я скрины отправил и хар-и компа( может он не тянет) и QR и TS.

https://gelium.net/soft-ts/tradestation-main/ts-setup/item/851-tsx-setup

65
TradeStation / EasyLanguage
« : 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) хранит историю

66
Отлично.  :D

Ещё один момент нужно учесть - это настройки службы W32Time:

   'W32Time. Настройка службы
   Value = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\w32time\"
   CreateObject("WScript.Shell").RegWrite(Value & "Config\MaxNegPhaseCorrection", 31536000, "REG_DWORD") 'Максимальный порог отклонения времени от времени компьютера, секунды, 31536000 = 1 год
   CreateObject("WScript.Shell").RegWrite(Value & "Config\MaxPosPhaseCorrection", 31536000, "REG_DWORD") 'Минимальный  порог отклонения времени от времени компьютера, секунды, 31536000 = 1 год
   CreateObject("WScript.Shell").RegWrite(Value & "TimeProviders\NtpClient\SpecialPollInterval",     3600, "REG_DWORD") 'Интервал обновления времени, секунды

Стандартный порог отклонения времени винде 15 часов, поэтому когда зануляется время и текущее более 15 часов, то возникает ошибка, а задав несколько больший интервал, всё в порядке, не обязательно год, достаточно будет суток в секундах!
Ну и для автообновления посредством самой винды уменьшаем период до 1 часа :)

67
Реализация псевдо RealTime диаграмм TradeStation по данным текстовых файлов посредством Quotes Updater:
1. устанавливаем SP TimeSync 2.4
2. устанавливаем Quotes Updater
3. в Quotes Updater делаем настройки подобные картинке, кому как потребуется
4. получаем автообновление всех открытых диаграмм

Задача упрощается, можно обойтись без SP TimeSync 2.4, используя более простые настройки Quotes Updater... :)

68
Реализация псевдо RealTime диаграмм TradeStation по данным текстовых файлов посредством Quotes Updater:
1. устанавливаем SP TimeSync 2.4
2. устанавливаем Quotes Updater
3. в Quotes Updater делаем настройки подобные картинке, кому как потребуется
4. получаем автообновление всех открытых диаграмм

69
TradeStation / EasyLanguage
« : 06 Июня 2017, 18:21:39 »
Хотел посмотреть как этот компонент устроен на демо-коде, вроде такой имеется в описании в статье и на официальном сайте, но ссылки на него не работают, в стандартном пакете его я тоже не обнаружил, но у меня и индикатора ChartTrading в стандартном пакете не было, не устанавливался, подумал, может аналогичная ситуация...
Хотел сделать сделать функцию получения данных с интернет ресурсов средствами самой TS.

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

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

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

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

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

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

72
TradeStation / EasyLanguage
« : 13 Мая 2017, 08:54:13 »
Для информации разработчикам, возможно пригодится:
https://markplex.com/free-tutorials/

73
TradeStation / EasyLanguage
« : 31 Марта 2017, 07:47:03 »
И как без введения параметра убрать ненужные зигзаги? Для этого нужен параметр. А если ввели параметр, то этот зигазг ничем не отличается от других.

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

74
TradeStation / EasyLanguage
« : 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] - нижний экстремум

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

76
Autamate иммет поддержку Basic, WinAutomation имеют поддержку VBScript. Макросы на Basic они писать не будет. Для решения конкретных задачь подходит конкретный тот или иной инструмент.

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

77
Так же WinAutomation 6 может управлять элементами окон Windows на порядок лучше Automate. Что может быть полезно для создания скриншота нужного окна.

Я посредством Automate скриншоты делаю, вполне доволен)) С диаграммы отправляем сигнал в файл, а Automat'ом его обрабатываем и сриншотим.Хотя удивительно, что скриншоты не предусмотрены TS9X из кода, т.к. прокрутчик экрана из кода имеется, было бы очень удобно, прокрутил в нужное место - сфотографировал...

78
угостите ссылкой на macromachine, на торрентах нашёл, но они не рабочие :( спасибо!

Записывать макросы, делать скриншоты и много чего ещё умеет WinAutomation.

Я не с целью делать скриншоты, хотелось бы найти программу, которая макросы пишет непосредственно кодом VBA, пока я такую не стречал. С программами с которыми имел дело, они пишут своими линиями (как например в AutoMate), а хотелось бы увидеть код этой линии на VBA, например в Sub. Ну это мои заморочки для изучения возможностей, которые можно также использовать и в MSOffice.

79
спасибо я сейчас качаю macromachine  еще как раз попробовать

угостите ссылкой на macromachine, на торрентах нашёл, но они не рабочие :( спасибо!

80
TradeStation / EasyLanguage
« : 11 Января 2017, 17:32:45 »
Задача решена, выкладываю решение в копилку ;)

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