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

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

Оффлайн Gelium

  • Администратор
  • Сообщений: 6 464
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #150 : 07 Сентябрь 2018, 19:17:43 »
В индикаторе нельзя рисовать стрелки. В TS нет такой возможности. Если хотите над барами рисовать стрелки, то вам нужно создавать текстовые объекты и использовать символы для изображения стрелочек. В плане рисования TS намного уступает возможностям MQL5. Правда без этих возможностей можно прекрасно обходиться.

Оффлайн serjante77

  • Сообщений: 7
    • Просмотр профиля
EasyLanguage
« Ответ #151 : 08 Сентябрь 2018, 22:10:23 »
В индикаторе нельзя рисовать стрелки. В TS нет такой возможности. Если хотите над барами рисовать стрелки, то вам нужно создавать текстовые объекты и использовать символы для изображения стрелочек. В плане рисования TS намного уступает возможностям MQL5. Правда без этих возможностей можно прекрасно обходиться.

Вот здесь показан пример как это можно сделать   https://markplex.com/free-tutorials/tutorial-89-how-to-draw-symbols-on-a-chart/

Это работает как ШовМи так и в Индикаторе вот мой пример, может кому пригодиться :


{ RISOVANIE STRELOK  }

inputs:
   int FastLength( 20 ) , { the shorter of the two exponential moving average lengths used to calculate the MACD value, in bars }
   int SlowLength( 50 ) ; { the longer  of the two exponential moving average lengths used to calculate the MACD value, in bars }

Var: Lookback1(FastLength), Lookback2(SlowLength);

Value1 = XAverage (Close,Lookback1) ;
Plot1( Value1, "XAverage1",Cyan ) ;
Value2 = XAverage (Close,Lookback2) ;
Plot2( Value2, "XAverage2",White ) ;

If Value1 Crosses Above Value2 then Value3 = Text_New ( D, T, L,"#");
If Text_Exist ( Value3 ) then Text_setcolor ( Value3, Cyan  );
If Value1 Crosses Under Value2 then Value4 = Text_New ( D, T, H,"$");
If Text_Exist ( Value4 ) then Text_setcolor ( Value4, Red );






Оффлайн Gelium

  • Администратор
  • Сообщений: 6 464
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #152 : 09 Сентябрь 2018, 04:31:23 »
Вот здесь показан пример как это можно сделать   https://markplex.com/free-tutorials/tutorial-89-how-to-draw-symbols-on-a-chart/

Это работает как ШовМи так и в Индикаторе вот мой пример, может кому пригодиться :

Спасибо. Век живи, век учись. :)

Оффлайн serjante77

  • Сообщений: 7
    • Просмотр профиля
EasyLanguage
« Ответ #153 : 09 Сентябрь 2018, 07:31:47 »
Теперь осталось найти как их отформатировать, чтобы они рисовались выше или ниже Мувингов или хотя бы на каком то расстоянии от баров.

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

  • Участник клуба
  • *
  • Сообщений: 140
    • Просмотр профиля
EasyLanguage
« Ответ #154 : 19 Сентябрь 2018, 17:52:18 »
Кто-нибудь интересовался новейшим чудом TradeStation 10?

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

  • Участник клуба
  • *
  • Сообщений: 140
    • Просмотр профиля
EasyLanguage
« Ответ #155 : 06 Декабрь 2018, 11:57:44 »
 // Как получить параметры окна стороннего приложения посредством WinAPI, например "Калькулятор". Неделю бъюсь, всё безтолку...ХЕЛП!
// {***Obj} Указатель на структуру, которая принимает экранные координаты левого верхнего и нижнего правого углов окна.
// Как его описать, чтобы можно было получить параметры окна в TDE?
// Предполагаю, должно быть как-то так: Obj.left, Obj.right
// Думаю, разработчики не могли упустить возможность получения данных посредством структуры, но как это сделать? примеров не нашёл...
Using elsystem;
DefineDLLfunc: "user32.dll",                                                                       // http://www.vsokovikov.narod.ru/New_MSDN_API/Window/fn_findwindow.htm
Long,                                                                               // http://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",                                                                       // http://www.vsokovikov.narod.ru/New_MSDN_API/Window/fn_getwindowrect.htm
Long,                                                                               // http://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;
 

Оффлайн Gelium

  • Администратор
  • Сообщений: 6 464
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #156 : 07 Декабрь 2018, 05:53:11 »
Пост не понятен. У вас получилось или нет? Какова цель получения хэндла окна?

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

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

Оффлайн Gelium

  • Администратор
  • Сообщений: 6 464
    • Просмотр профиля
    • Gelium.net
EasyLanguage
« Ответ #158 : 07 Декабрь 2018, 09:45:27 »
Цель: сделать функцию скриншота окна диаграммы,которая будет работать следующим образом:
- с 1 по последний бар сохраняются даты событий в массив- на последнем баре выполняются скриншоты этих событий прокручивая экран посредством charting.ChartingHost.Create().ScrollTo(BarDateTime из массива) - (некоторое число баров для центровки события на скришоте)
- привязка гиперссылкой соответствующего скриншота к реестру сделок (блокнот рейдера) в экселе

Зачем же это делать так сложно и с большими времязатратами, когда всё это делается элементарно в WinAutomation с получением в итоге рабочего экзешника? Вы вообще своё время ни во что не цените?

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

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

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