Skripte: Transparent MetaTrader 5 - Seite 2

 

Versionsänderungen:

Version 1.20: Beim Wiedereinstieg in die Karte wird das Terminal wieder undurchsichtig.

Im Moment wird die Version 1.2 zur Moderation geschickt.

 
Hallo! Helfen Sie mir, ein Skript zu finden, um Stoploss für mt5 zu setzen. Ich trade rts.
 

Änderungen in:

Version 1.20: Beim Wiedereintritt in den Zeitplan wird das Terminal undurchsichtig.

 

Версия 1.10: Поддержка Windows XP 32-bit.

Sie haben alles verdorben.

Sie waren gezwungen, zwei Varianten des Aufrufs von DLL-Funktionen für 32 und 64 Handles/Zeiger zu erstellen

Beispiel

 

barabashkakvn:

Version 1.10: Unterstützung von Windows XP 32-bit.

sergeev:

Sie haben alles verdorben.

Sie mussten zwei Varianten des Aufrufs von DLL-Funktionen für 32- und 64-Handles/Zeiger erstellen

Beispiel

Vielen Dank für das Beispiel! Ich kann nicht versprechen, es sofort zu beheben, weil ich die Frage lösen muss: welche Funktionen die user32.dll-Bibliothek in Betriebssystemen von Windows XP bis Windows 8.1 enthält, und ich muss die System-Bitness berücksichtigen.
 
Ich habe den Verdacht, dass im MT5 Build 900 oder 910 der Mechanismus zum Aufruf der DLL defekt ist. Anwendung im Service Desk #976227. Abstürze können damit zusammenhängen. Meine Herren Entwickler, bitte schauen Sie dort....
 
Sehr interessant!)
 
micle:
Ich habe den Verdacht, dass im MT5 Build 900 oder 910 der Mechanismus zum Aufruf der DLL defekt ist. Anwendung im Service Desk #976227. Abstürze können damit zusammenhängen. Meine Herren Entwickler, bitte schauen Sie dort nach...
Mein Problem wurde durch eine andere Funktionsdeklaration gelöst... Leben und lernen )
 
barabashkakvn:

Änderungen in:

Version 1.20: Beim Wiedereintritt in den Zeitplan wird das Terminal undurchsichtig.

Auf Englisch Codebase, verfügbare Version ist immer noch 1.10.
 

Version 1.20

//+------------------------------------------------------------------+
//|Transparenz.mq5 |
//|Copyright © 2014, Vladimir Karputov |
//|http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2014, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.20"
#import "user32.dll"
//+------------------------------------------------------------------+
|| GetAncestor. Liefert das Handle zum Vorgänger des Objekts.
//| angegebenes Fenster. Извлекает дескриптор предка заданного окна |
//+------------------------------------------------------------------+
int GetAncestor(int hwnd,int gaFlags);
//+------------------------------------------------------------------+
//| GetWindowLongW. Ruft Informationen über das angegebene Fenster ab.
//| Fenster. Получает информацию об указанном окне |
//+------------------------------------------------------------------+
int GetWindowLongW(
                   int hWnd,
                   int nIndex          // GWL_EXSTYLE
                   );
//+------------------------------------------------------------------+
//| SetWindowLongW. Изменяет атрибут заданного окна |
//+------------------------------------------------------------------+
int SetWindowLongW(
                   int hWnd,
                   char nIndex,        // GWL_EXSTYLE
                   int dwNewLong       // WS_EX_LAYERED
                   );
//+------------------------------------------------------------------+
//| SetLayeredWindowAttributes. Setzt die Deckkraft und Transparenz |
//| Farbschlüssel eines Schichtenfensters. Устанавливает светопроницаемость |
//| (и прозрачность окраски многослойного окна |)
//+------------------------------------------------------------------+
bool SetLayeredWindowAttributes(
                                int hwnd,// Ein Handle auf das Ebenenfenster
                                int crKey,   // 0
                                int bAlpha,  // степень непрозрачности 0-255
                                int dwFlags  // 0x00000002
                                );
#import
#define   GA_ROOT           0x0002      // Ruft das Stammfenster auf, indem es die Kette der übergeordneten Fenster durchläuft.
#define   GWL_EXSTYLE       -20               // Legt einen neuen erweiterten Fensterstil fest
#define   WS_EX_LAYERED     0x00080000        // Stil. Das Fenster ist ein mehrschichtiges Fenster. 
#define   LWA_ALPHA         0x00000002        // Verwenden Sie bAlpha, um die Deckkraft des überlagerten Fensters zu bestimmen.
//+------------------------------------------------------------------+
//| Skript-Programmstartfunktion|
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   long  mainChartID=ChartID();         // возвращает идентификатор текущего графика
   int   hdlmainChartID=ChartWindowsHandle(mainChartID);
   int   hdlRoot=GetAncestor(hdlmainChartID,GA_ROOT);
   int   SetWindowLongW_func;
   if(GetWindowLongW(hdlRoot,GWL_EXSTYLE)&WS_EX_LAYERED)
     {
      // У окна уже есть стиль WS_EX_LAYERED. Удалим WS_EX_LAYERED из этого окна стилей.
      // Fenster hat bereits einen Stil WS_EX_LAYERED. Entfernen Sie WS_EX_LAYERED aus diesem Fenster styles.
      SetWindowLongW_func=SetWindowLongW(hdlRoot,GWL_EXSTYLE,
                                         GetWindowLongW(hdlRoot,GWL_EXSTYLE)&~WS_EX_LAYERED);
      return;
     }
// Устанавливаем WS_EX_LAYERED на ROOT окно
   SetWindowLongW_func=SetWindowLongW(hdlRoot,GWL_EXSTYLE,
                                      GetWindowLongW(hdlRoot,GWL_EXSTYLE)|WS_EX_LAYERED);
   SetLayeredWindowAttributes(hdlRoot,0,(255*70)/100,LWA_ALPHA);
   return;
  }
//+------------------------------------------------------------------+
//| Die Funktion erhält die Handle-Grafik|
//| Функция получает хэндл графика|
//+------------------------------------------------------------------+
int ChartWindowsHandle(long chart_ID)
  {
//--- die Variable vorbereiten, um den Eigenschaftswert zu erhalten
//--- подготовим переменную для получения значения свойства
   long result=-1;
//--- den Fehlerwert zurücksetzen
//--- сбросим значение ошибки
   ResetLastError();
//--- den Eigenschaftswert erhalten
//--- получим значение свойства
   if(!ChartGetInteger(chart_ID,CHART_WINDOW_HANDLE,0,result))
     {
      //--- Anzeige der Fehlermeldung im Expertenjournal
      //--- выведем сообщение об ошибке в журнал "Эксперты"
      Print(__FUNCTION__+", Error Code = ",GetLastError());
     }
//--- Rückgabe des Wertes der Diagrammeigenschaft
//--- вернем значение свойства графика
   return((int)result);
  }
//+------------------------------------------------------------------+