Scripts: Transparent MetaTrader 5 - página 2

 

Alterações de versão:

Versão 1.20: Ao retornar ao gráfico, o terminal se torna opaco novamente.

No momento, a versão 1.2 foi enviada para moderação.

 
Olá, ajude-me a encontrar um script para definir stoploss para o mt5. Eu negocio rts.
 

Alterações em:

Versão 1.20: Ao acessar novamente a programação, o terminal se torna opaco.

 

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

você estragou tudo.

você foi obrigado a criar duas variantes de chamada de funções DLL para alças/ponteiros de 32 e 64

exemplo

 

barabashkakvn:

Versão 1.10: Suporte ao Windows XP de 32 bits.

sergeev:

Você estragou tudo.

Você teve que criar duas variantes de chamada de funções DLL para alças/ponteiros de 32 e 64 bits

exemplo

Obrigado pelo exemplo! Não posso prometer consertá-lo imediatamente, pois preciso resolver a questão: quais funções a biblioteca user32.dll contém nos sistemas operacionais do Windows XP ao Windows 8.1, e preciso levar em conta a quantidade de bits do sistema.
 
Suspeito que no MT5 build 900 ou 910 o mecanismo de chamada da DLL esteja quebrado. Aplicativo na central de serviços nº 976227. As falhas podem estar relacionadas a isso. Senhores desenvolvedores, por favor, dêem uma olhada lá....
 
Muito interessante!)
 
micle:
Suspeito que no MT5 build 900 ou 910 o mecanismo de chamada da DLL esteja quebrado. Solicitação na central de serviços #976227. As falhas podem estar relacionadas a isso. Senhores desenvolvedores, dêem uma olhada lá...
Meu problema foi resolvido com outra declaração de função... Viva e aprenda )
 
barabashkakvn:

Alterações em:

Versão 1.20: Ao acessar novamente a programação, o terminal se torna opaco.

Na base de código em inglês, a versão disponível ainda é a 1.10.
 

Versão 1.20

//+------------------------------------------------------------------+
//|transparência.mq5 |
//|Direitos autorais © 2014, Vladimir Karputov |
//|http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Direitos autorais © 2014, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.20"
#import "user32.dll"
//+------------------------------------------------------------------+
//| GetAncestor. Recupera o identificador para o ancestral do arquivo |.
//| janela especificada. Извлекает дескриптор предка заданного окна |
//+------------------------------------------------------------------+
int GetAncestor(int hwnd,int gaFlags);
//+------------------------------------------------------------------+
//| GetWindowLongW. Recupera informações sobre a janela especificada.
//| window. Получает информацию об указанном окне |
//+------------------------------------------------------------------+
int GetWindowLongW(
                   int hWnd,
                   int nIndex          // GWL_EXSTYLE
                   );
//+------------------------------------------------------------------+
//| SetWindowLongW. Изменяет атрибут заданного окна |
//+------------------------------------------------------------------+
int SetWindowLongW(
                   int hWnd,
                   char nIndex,        // GWL_EXSTYLE
                   int dwNewLong       // WS_EX_LAYERED
                   );
//+------------------------------------------------------------------+
//| SetLayeredWindowAttributes. Define a opacidade e a transparência.
//| chave de cor de uma janela em camadas. Устанавливает светопроницаемость ||
//| и прозрачность окраски многослойного окна |
//+------------------------------------------------------------------+
bool SetLayeredWindowAttributes(
                                int hwnd,// Um identificador para a janela em camadas
                                int crKey,   // 0
                                int bAlpha,  // степень непрозрачности 0-255
                                int dwFlags  // 0x00000002
                                );
#import
#define   GA_ROOT           0x0002      // Recupera a janela raiz percorrendo a cadeia de janelas pai.
#define   GWL_EXSTYLE       -20               // Define um novo estilo de janela estendida
#define   WS_EX_LAYERED     0x00080000        // Estilo. A janela é uma janela em camadas. 
#define   LWA_ALPHA         0x00000002        // Use bAlpha para determinar a opacidade da janela em camadas.
//+------------------------------------------------------------------+
//| Função de início do programa de script|
//+------------------------------------------------------------------+
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 из этого окна стилей.
      // A janela já tem um estilo WS_EX_LAYERED. Remova WS_EX_LAYERED dos estilos dessa janela.
      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;
  }
//+------------------------------------------------------------------+
//| A função obtém os gráficos do identificador|
//| Функция получает хэндл графика|
//+------------------------------------------------------------------+
int ChartWindowsHandle(long chart_ID)
  {
//--- preparar a variável para obter o valor da propriedade
//--- подготовим переменную для получения значения свойства
   long result=-1;
//--- redefinir o valor do erro
//--- сбросим значение ошибки
   ResetLastError();
//--- receber o valor da propriedade
//--- получим значение свойства
   if(!ChartGetInteger(chart_ID,CHART_WINDOW_HANDLE,0,result))
     {
      //--- exibir a mensagem de erro no diário do Experts
      //--- выведем соообщение об ошибке в журнал "Эксперты"
      Print(__FUNCTION__+", Error Code = ",GetLastError());
     }
//--- retorna o valor da propriedade do gráfico
//--- вернем значение свойства графика
   return((int)result);
  }
//+------------------------------------------------------------------+