También tomé el código del botón de los ejemplos, .... Cómo hacer que la pulsación del botón no sea fija, es decir, que después de ejecutar su función vuelva a su estado inicial.
En cuanto a los botones, he aquí un ejemplo extraído de la ayuda:
//+------------------------------------------------------------------+//| ControlsButton.mq5 |//| Copyright 2015, MetaQuotes Software Corp. |//| http://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2015, MetaQuotes Software Corp."#property link"http://www.mql5.com"#property version"1.00"#property description"Панель индикации и диалогов управления. Демонстрация работы класса CButton"#include <Controls\Dialog.mqh>
#include <Controls\Button.mqh>
//+------------------------------------------------------------------+//| defines |//+------------------------------------------------------------------+//--- indents and gaps#define INDENT_LEFT (11) // indent from left (with allowance for border width)#define INDENT_TOP (11) // indent from top (with allowance for border width)#define INDENT_RIGHT (11) // indent from right (with allowance for border width)#define INDENT_BOTTOM (11) // indent from bottom (with allowance for border width)#define CONTROLS_GAP_X (5) // gap by X coordinate#define CONTROLS_GAP_Y (5) // gap by Y coordinate//--- for buttons#define BUTTON_WIDTH (100) // size by X coordinate#define BUTTON_HEIGHT (20) // size by Y coordinate//--- for the indication area#define EDIT_HEIGHT (20) // size by Y coordinate//--- for group controls#define GROUP_WIDTH (150) // size by X coordinate#define LIST_HEIGHT (179) // size by Y coordinate#define RADIO_HEIGHT (56) // size by Y coordinate#define CHECK_HEIGHT (93) // size by Y coordinate//+------------------------------------------------------------------+//| Class CControlsDialog |//| Usage: main dialog of the Controls application |//+------------------------------------------------------------------+class CControlsDialog : public CAppDialog
{
private:
CButton m_button1; // the button object
CButton m_button2; // the button object
CButton m_button3; // the fixed button objectpublic:
CControlsDialog(void);
~CControlsDialog(void);
//--- createvirtualbool Create(constlong chart,conststring name,constint subwin,constint x1,constint y1,constint x2,constint y2);
//--- chart event handlervirtualbool OnEvent(constint id,constlong &lparam,constdouble &dparam,conststring &sparam);
protected:
//--- create dependent controlsbool CreateButton1(void);
bool CreateButton2(void);
bool CreateButton3(void);
//--- handlers of the dependent controls eventsvoid OnClickButton1(void);
void OnClickButton2(void);
void OnClickButton3(void);
};
//+------------------------------------------------------------------+//| Event Handling |//+------------------------------------------------------------------+
EVENT_MAP_BEGIN(CControlsDialog)
ON_EVENT(ON_CLICK,m_button1,OnClickButton1)
ON_EVENT(ON_CLICK,m_button2,OnClickButton2)
ON_EVENT(ON_CLICK,m_button3,OnClickButton3)
EVENT_MAP_END(CAppDialog)
//+------------------------------------------------------------------+//| Constructor |//+------------------------------------------------------------------+
CControlsDialog::CControlsDialog(void)
{
}
//+------------------------------------------------------------------+//| Destructor |//+------------------------------------------------------------------+
CControlsDialog::~CControlsDialog(void)
{
}
//+------------------------------------------------------------------+//| Create |//+------------------------------------------------------------------+bool CControlsDialog::Create(constlong chart,conststring name,constint subwin,constint x1,constint y1,constint x2,constint y2)
{
if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
return(false);
//--- create dependent controlsif(!CreateButton1())
return(false);
if(!CreateButton2())
return(false);
if(!CreateButton3())
return(false);
//--- succeedreturn(true);
}
//+------------------------------------------------------------------+//| Create the "Button1" button |//+------------------------------------------------------------------+bool CControlsDialog::CreateButton1(void)
{
//--- coordinatesint x1=INDENT_LEFT;
int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y);
int x2=x1+BUTTON_WIDTH;
int y2=y1+BUTTON_HEIGHT;
//--- createif(!m_button1.Create(m_chart_id,m_name+"Button1",m_subwin,x1,y1,x2,y2))
return(false);
if(!m_button1.Text("Button1"))
return(false);
if(!Add(m_button1))
return(false);
//--- succeedreturn(true);
}
//+------------------------------------------------------------------+//| Create the "Button2" button |//+------------------------------------------------------------------+bool CControlsDialog::CreateButton2(void)
{
//--- coordinatesint x1=INDENT_LEFT+(BUTTON_WIDTH+CONTROLS_GAP_X);
int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y);
int x2=x1+BUTTON_WIDTH;
int y2=y1+BUTTON_HEIGHT;
//--- createif(!m_button2.Create(m_chart_id,m_name+"Button2",m_subwin,x1,y1,x2,y2))
return(false);
if(!m_button2.Text("Button2"))
return(false);
if(!Add(m_button2))
return(false);
//--- succeedreturn(true);
}
//+------------------------------------------------------------------+//| Create the "Button3" fixed button |//+------------------------------------------------------------------+bool CControlsDialog::CreateButton3(void)
{
//--- coordinatesint x1=INDENT_LEFT+2*(BUTTON_WIDTH+CONTROLS_GAP_X);
int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y);
int x2=x1+BUTTON_WIDTH;
int y2=y1+BUTTON_HEIGHT;
//--- createif(!m_button3.Create(m_chart_id,m_name+"Button3",m_subwin,x1,y1,x2,y2))
return(false);
if(!m_button3.Text("Locked"))
return(false);
if(!Add(m_button3))
return(false);
m_button3.Locking(true);
//--- succeedreturn(true);
}
//+------------------------------------------------------------------+//| Event handler |//+------------------------------------------------------------------+void CControlsDialog::OnClickButton1(void)
{
Comment(__FUNCTION__);
}
//+------------------------------------------------------------------+//| Event handler |//+------------------------------------------------------------------+void CControlsDialog::OnClickButton2(void)
{
Comment(__FUNCTION__);
}
//+------------------------------------------------------------------+//| Event handler |//+------------------------------------------------------------------+void CControlsDialog::OnClickButton3(void)
{
if(m_button3.Pressed())
Comment(__FUNCTION__+" Состояние элемента управления: On");
elseComment(__FUNCTION__+" Состояние элемента управления: Off");
}
//+------------------------------------------------------------------+//| Global Variables |//+------------------------------------------------------------------+
CControlsDialog ExtDialog;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- create application dialogif(!ExtDialog.Create(0,"Controls",0,40,40,380,344))
return(INIT_FAILED);
//--- run application
ExtDialog.Run();
//--- succeedreturn(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//--- очистим комментарииComment("");
//--- destroy dialog
ExtDialog.Destroy(reason);
}
//+------------------------------------------------------------------+//| Expert chart event function |//+------------------------------------------------------------------+voidOnChartEvent(constint id, // event ID constlong& lparam, // event parameter of the long typeconstdouble& dparam, // event parameter of the double typeconststring& sparam) // event parameter of the string type
{
ExtDialog.ChartEvent(id,lparam,dparam,sparam);
}
//+------------------------------------------------------------------+
Nota: Los botones 1 y 2 no son bloqueables, mientras que el botón 3 sí lo es.
2. La conexión con el servidor se desconecta y se pierde toda la representación del indicador, los datos que proporciona permanecen.
¿Puedes sugerir dónde leer sobre ello y/o qué sucede cuando se pierde la conexión, por qué se pierde el dibujo, pero los datos permanecen. ¿Es posible volver a dibujarlo?
2. La conexión con el servidor se rompe y toda la representación del indicador desaparece, los datos que proporciona permanecen.
¿Puedes sugerir dónde leer sobre ello y/o qué sucede cuando se pierde la conexión, por qué se pierde el dibujo, pero los datos permanecen. ¿Es posible volver a dibujarlo?
Gracias de antemano.
Comience con el indicador, es decir, lo que sucede en OnCalculate() cuando el parámetro "rates_total" es "0":
El primer parámetro rates_total contiene el número de barras de que dispone el indicador para el cálculo y corresponde al número de barras disponibles en el gráfico.
Observe la conexión entre el valor devuelto por OnCalculate() y el segundo parámetro de entrada prev_calculado. El parámetro prev_calculado en la llamada a la función contiene un valordevuelto por OnCalculate() en la llamadaanterior. Esto permite economizar los algoritmos de cálculo del indicador personalizado para evitar cálculos repetidos para aquellas barras que no han cambiado desde la anterior llamada a esta función.
Para ello, suele bastar con devolver el valor del parámetro rates_total, que contiene el número de barras de la llamada a la función actual. Si desde la última llamada de OnCalculate() los datos del precio han cambiado (se ha bombeado un historial más profundo o se han llenado los espacios en blanco del historial), entonces el valor del parámetro de entrada prev_calculado será puesto a cero por el terminal.
Как выбрать торговый сигнал в платформе MetaTrader и подписаться на него за пару кликов? Очень просто, смотри наше видео и ты узнаешь все о торговых сигналах.
También tomé el código del botón de los ejemplos, .... Cómo hacer que la pulsación del botón no sea fija, es decir, que después de ejecutar su función vuelva a su estado inicial.
En cuanto a los botones, he aquí un ejemplo extraído de la ayuda:
Nota: Los botones 1 y 2 no son bloqueables, mientras que el botón 3 sí lo es.
Se ha trasladado:
George:Por favor, avise de tal punto:
1. El indicador EA + está en funcionamiento
2. La conexión con el servidor se desconecta y se pierde toda la representación del indicador, los datos que proporciona permanecen.
¿Puedes sugerir dónde leer sobre ello y/o qué sucede cuando se pierde la conexión, por qué se pierde el dibujo, pero los datos permanecen. ¿Es posible volver a dibujarlo?
Gracias de antemano.
Se ha trasladado:
George:Por favor, avise de tal punto:
1. El indicador EA + está en funcionamiento
2. La conexión con el servidor se rompe y toda la representación del indicador desaparece, los datos que proporciona permanecen.
¿Puedes sugerir dónde leer sobre ello y/o qué sucede cuando se pierde la conexión, por qué se pierde el dibujo, pero los datos permanecen. ¿Es posible volver a dibujarlo?
Gracias de antemano.
Comience con el indicador, es decir, lo que sucede en OnCalculate() cuando el parámetro "rates_total" es "0":
El primer parámetro rates_total contiene el número de barras de que dispone el indicador para el cálculo y corresponde al número de barras disponibles en el gráfico.
Observe la conexión entre el valor devuelto por OnCalculate() y el segundo parámetro de entrada prev_calculado. El parámetro prev_calculado en la llamada a la función contiene un valordevuelto por OnCalculate() en la llamadaanterior. Esto permite economizar los algoritmos de cálculo del indicador personalizado para evitar cálculos repetidos para aquellas barras que no han cambiado desde la anterior llamada a esta función.
Para ello, suele bastar con devolver el valor del parámetro rates_total, que contiene el número de barras de la llamada a la función actual. Si desde la última llamada de OnCalculate() los datos del precio han cambiado (se ha bombeado un historial más profundo o se han llenado los espacios en blanco del historial), entonces el valor del parámetro de entrada prev_calculado será puesto a cero por el terminal.
Si se trata de botones, aquí hay un ejemplo de la ayuda:
Nota: Los botones 1 y 2 no son bloqueables, pero el botón 3 sí lo es.
Este no es un buen ejemplo:
1 porque las bibliotecas
2 porque está hecho por un panel
3 porque no lo entiendes.
He dibujado dos botones, uno es fijo y el otro necesita ser desbloqueado - "Añadir" que necesita ser desbloqueado
¿cómo se puede ingresar en un gestor?
mmm, tener un gerente, ver la eficacia de su trabajo, querer "invertir".
ps - lo siento, soy un tonto.
mmm, tener un gerente, ver la eficacia de su trabajo, querer "invertir".
Lo siento, soy un completo principiante.
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Preguntas de los principiantes
Karputov Vladimir, 2016.08.25 11:43
Estas son las instrucciones:Cómosuscribirse a las señalesGracias, lo investigaré.
Realmente, en una primera aproximación....... hay que estar en el campo para darse cuenta aparentemente.
Pero me gustaría ....
¿Alguna opción? ¿Hago una solicitud de afiliación, relleno los papeles, ingreso el dinero y ya está?
Gracias, lo investigaré.
Realmente, en una primera aproximación....... hay que estar en el campo para darse cuenta aparentemente.
Pero me gustaría ....
¿Alguna opción? ¿Solicitar la afiliación, rellenar el papeleo, depositar el dinero y ya está?
Ver vídeotutorial:Vervídeo tutorial sobre señales en YouTube
Es necesario depositar dinero en su cuenta MQL5.para iniciar una suscripción de pago. Más información sobre elservicio de señalesFAQ