Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
- Visualizaciones:
- 1416
- Ranking:
- Publicado:
- 2015.05.13 14:40
- Actualizado:
- 2016.11.22 07:33
-
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
La clase está pensada para crear botones interactivos en el gráfico de precio con diferentes estados.
Fue escrito para el concurso, organizado por el generoso TheXpert. Gracias.
Ilustración del funcionamiento de la clase CBtn
Métodos de la clase
Create(long chart_id,int sub_wnd,string name,int x,int y,int dx,int dy) - creación de un botón con los parámetros:
- identificador de ventana
- número de subventana
- nombre del botón
- coordenada х
- coordenada y
- tamaño en horizontal
- tamaño en vertical
Resources(string img_up,string img_up_active="",string img_dn="",string img_dn_active="",string img_up_disable="",string img_dn_disable="",string img_mask="") - indicación de imágenes para los diferentes estados del botón:
- botón normal sin pulsar
- botón con un indicador apuntado
- botón pulsado
- pulsado con un indicador de ratón apuntado
- botón desactivado (disable)
- camuflaje del contorno del botón
SetUseMask(ENUM_USEMASK mask,int x=0,int y=0) - establecer el camuflaje conforme al color del píxel indicado, el camuflaje se construye a partir de la imagen de un botón normal sin pulsar.
- tipo de camuflaje utilizado
- coordenada х
- coordenada y
SetUseMask(ENUM_USEMASK mask,uint acolor) - establecer el camuflaje según el color, el camuflaje se construye a partir de la imagen de un botón normal sin pulsar.
- tipo de camuflaje utilizado
- color
SetCorner(ENUM_BASE_CORNER corner) - establecer el ángulo del gráfico al que está enlazado el botón
SetAnchor(ENUM_ANCHOR_POINT anchor) - establecer el método de enlace del botón
SetX(int x) - establecer la coordenada х
SetY(int y) - establecer la coordenada y
SetXY(int x,int y) - establecer las coordenadas x e y con un solo comando
On(bool state) - establecer el estado del botón (pulsado-true/sin pulsar-false)
Enable(bool state) - establecer la desactivación del botón (disable)
Paint(void) - dibujado del botón
Event(int id,long lparam,double dparam,string sparam) - transmisión del botón de eventos
todos los parámetros se reduplican desde la función OnChartEvent
GetX(void) - obtener la coordenada х
GetY(void) - obtener la coordenada y
GetEnable(void) - obtener el estado de desactivación del botón
GetOn(void) - obtener el estado de pulsación del botón
GetCorner(void) - obtener el ángulo del gráfico al que está enlazado el botón
GetAnchor(void) - obtener el método de enlace del botón
AddText(int x,int y,string font_name,int font_size,color text_color,string text) - añadir texto al botón
- coordenada х
- coordenada y
- nombre de la fuente
- tamaño de la fuente
- color del texto
- texto
Text(string text) - actualizar el texto del botón (no funciona sin llamar AddText(...))
Crear un botón
Por defecto se crea un botón con los siguientes parámetros:
- sin pulsar
- accesible
- ángulo de enlace al gráfico - superior izquierdo
- ángulo de enlace del botón - superior izquierdo
Establecer el camufleje del botón
Por defecto, se crea un camuflaje a partir de la imagen de un botón normal sin pulsar. Los píxeles transparentes servirán de camuflaje.
- UseMask(MASK_STANDALONE_RESOURCE) - para el camuflaje se usa la imagen indicada en Resources(). Si no se ha establecido la imagen, toda la superficie del botón (un rectángulo) se considerará zona de trabajo.
- UseMask(MASK_PIXEL,x,y) - para el camuflaje se usa el color del píxel indicado. Si el color del píxel se distingue del indicado, se convertirá en camuflaje. Si no se indican las coordinadas, entonces se toma un punto con las coordinadas [0,0].
- UseMask(MASK_COLOR,color) - para el camuflaje se usa el color indicado. Si el color del píxel se distingue del indicado, se convertirá en camuflaje. El color se indica en el formato ARGB.
Ejemplo
//+------------------------------------------------------------------+ //| 3dButtons.mq5 | //| Copyright 2015, fyords | //| https://login.mql5.com/ru/users/fyords | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, fyords" #property link "https://login.mql5.com/ru/users/fyords" #property version "1.01" //+------------------------------------------------------------------+ //| Insert resources | //+------------------------------------------------------------------+ #resource "img\\200_1.bmp" #resource "img\\200_2.bmp" #resource "img\\200_3.bmp" #resource "img\\200_4.bmp" #resource "img\\200_5.bmp" #resource "img\\200_6.bmp" //+------------------------------------------------------------------+ #include "Class.mqh" //+------------------------------------------------------------------+ enum Adjust { UpperLeft, UpperRight, LowerLeft, LowerRight }; //+------------------------------------------------------------------+ //| Input property | //+------------------------------------------------------------------+ input Adjust adj_corner=UpperLeft; //Corner //+------------------------------------------------------------------+ //| Global variables | //+------------------------------------------------------------------+ CBtn *btn[]; int num_buttons; //+------------------------------------------------------------------+ //| Initialization function | //+------------------------------------------------------------------+ int OnInit() { long wnd=ChartID(); int sub_wnd=ChartWindowOnDropped(); ArrayFree(btn); int n=0; num_buttons=0; for(int y=0;y<3;y++) { for(int x=0;x<3;x++) { ArrayResize(btn,n+1); btn[n]=new CBtn; btn[n].Create(wnd,sub_wnd,"3dButtons_"+(string)MathRand(),x*152+10,y*152+10,200,200); btn[n].Resources("img\\200_1.bmp","img\\200_2.bmp","img\\200_3.bmp","img\\200_4.bmp","img\\200_5.bmp","img\\200_6.bmp"); btn[n].AddText(80,80,"Arial",25,clrWhite,"Button"+(string)(n+1)); switch(adj_corner) { case UpperLeft: btn[n].SetAnchor(ANCHOR_LEFT_UPPER); btn[n].SetCorner(CORNER_LEFT_UPPER); break; case UpperRight: btn[n].SetAnchor(ANCHOR_RIGHT_UPPER); btn[n].SetCorner(CORNER_RIGHT_UPPER); break; case LowerLeft: btn[n].SetAnchor(ANCHOR_LEFT_LOWER); btn[n].SetCorner(CORNER_LEFT_LOWER); break; case LowerRight: btn[n].SetAnchor(ANCHOR_RIGHT_LOWER); btn[n].SetCorner(CORNER_RIGHT_LOWER); break; } btn[n].Paint(); n++; } } ChartRedraw(); num_buttons=ArraySize(btn); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { for(int i=0;i<num_buttons;i++) delete btn[i]; ArrayFree(btn); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { for(int i=0;i<num_buttons;i++) btn[i].Event(id,lparam,dparam,sparam); }
Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/12637

El indicador muestra al mismo tiempo el spread actual y el tiempo hasta el cierre de la barra (vela).

El indicador AFL_Winner_Signal muestra información sobre la tendencia actual y sobre las señales para las operaciones en base al indicador AFL_Winner.

Clase de botón transparente.

El asesor controla y limita las pérdidas generales diarias en la cuenta, así como las pérdidas en cada operación. Acoge bien el trailing-stop del beneficio según la cuenta.