Mira cómo descargar robots gratis
¡Búscanos en Telegram!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Librerías

Clase para trabajar con los botones de forma aleatoria - librería para MetaTrader 5

Visualizaciones:
1235
Ranking:
(26)
Publicado:
2015.05.13 14:40
Actualizado:
2016.11.22 07:33
3dButtons.mq5 (4.04 KB) ver
Class.mqh (24.14 KB) ver
img.zip (139.78 KB)
¿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:

  1. identificador de ventana
  2. número de subventana
  3. nombre del botón
  4. coordenada х
  5. coordenada y
  6. tamaño en horizontal
  7. 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:

  1. botón normal sin pulsar
  2. botón con un indicador apuntado
  3. botón pulsado
  4. pulsado con un indicador de ratón apuntado
  5. botón desactivado (disable)
  6. 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.

  1. tipo de camuflaje utilizado
  2. coordenada х
  3. 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.

  1. tipo de camuflaje utilizado
  2. 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

  1. coordenada х
  2. coordenada y
  3. nombre de la fuente
  4. tamaño de la fuente
  5. color del texto
  6. 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

Candle Time End and Spread Candle Time End and Spread

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

AFL_Winner_Signal AFL_Winner_Signal

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 СBmpButtonTransparent Clase СBmpButtonTransparent

Clase de botón transparente.

Risk Manager Risk Manager

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.