初学者的问题 MQL5 MT5 MetaTrader 5 - 页 609 1...602603604605606607608609610611612613614615616...1503 新评论 Vladimir Karputov 2016.08.23 07:30 #6081 Alexander Antoshkin:我还从例子中提取了按钮的代码,....如何使按钮的按压不固定,即在其功能被执行后,返回到其初始状态。就按钮而言,这里是帮助中的一个例子。//+------------------------------------------------------------------+ //| 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 object public: CControlsDialog(void); ~CControlsDialog(void); //--- create virtual bool Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2); //--- chart event handler virtual bool OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam); protected: //--- create dependent controls bool CreateButton1(void); bool CreateButton2(void); bool CreateButton3(void); //--- handlers of the dependent controls events void 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(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2) { if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2)) return(false); //--- create dependent controls if(!CreateButton1()) return(false); if(!CreateButton2()) return(false); if(!CreateButton3()) return(false); //--- succeed return(true); } //+------------------------------------------------------------------+ //| Create the "Button1" button | //+------------------------------------------------------------------+ bool CControlsDialog::CreateButton1(void) { //--- coordinates int x1=INDENT_LEFT; int y1=INDENT_TOP+(EDIT_HEIGHT+CONTROLS_GAP_Y); int x2=x1+BUTTON_WIDTH; int y2=y1+BUTTON_HEIGHT; //--- create if(!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); //--- succeed return(true); } //+------------------------------------------------------------------+ //| Create the "Button2" button | //+------------------------------------------------------------------+ bool CControlsDialog::CreateButton2(void) { //--- coordinates int 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; //--- create if(!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); //--- succeed return(true); } //+------------------------------------------------------------------+ //| Create the "Button3" fixed button | //+------------------------------------------------------------------+ bool CControlsDialog::CreateButton3(void) { //--- coordinates int 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; //--- create if(!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); //--- succeed return(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"); else Comment(__FUNCTION__+" Состояние элемента управления: Off"); } //+------------------------------------------------------------------+ //| Global Variables | //+------------------------------------------------------------------+ CControlsDialog ExtDialog; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- create application dialog if(!ExtDialog.Create(0,"Controls",0,40,40,380,344)) return(INIT_FAILED); //--- run application ExtDialog.Run(); //--- succeed return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- очистим комментарии Comment(""); //--- destroy dialog ExtDialog.Destroy(reason); } //+------------------------------------------------------------------+ //| Expert chart event function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, // event ID const long& lparam, // event parameter of the long type const double& dparam, // event parameter of the double type const string& sparam) // event parameter of the string type { ExtDialog.ChartEvent(id,lparam,dparam,sparam); } //+------------------------------------------------------------------+ 请注意:按钮1和按钮2是不可锁的,而按钮3是可锁的。 附加的文件: ControlsButton.mq5 10 kb Vladimir Karputov 2016.08.23 07:37 #6082 结转了。 乔治。请告知这样的观点。1.EA+指标正在运行2.与服务器的连接被断开,所有的指示器渲染都会丢失,它提供的数据仍然存在。你能建议在哪里读到这方面的信息和/或当连接丢失时会发生什么,为什么绘图丢失,但数据仍然存在。是否有可能再次重画?提前感谢! Vladimir Karputov 2016.08.23 09:15 #6083 Karputov Vladimir:结转了。 乔治。请告知这样的观点。1.EA+指标正在运行2.与服务器的连接被断开,所有的指示器渲染都会丢失,它提供的数据仍然存在。你能建议在哪里读到这方面的信息和/或当连接丢失时会发生什么,为什么绘图丢失,但数据仍然存在。是否有可能再次重画?提前感谢!从指标开始--即当 "rate_total "参数为 "0 "时,OnCalculate()中会发生什么。第一个 rates_total 参数包含指标可用于计算的条数,与图表中的条数相对应。注意OnCalculate()返回的值和第二个输入参数prev_calculated之间的联系。函数调用中的prev_calculated参数包含了上一次调用时OnCalculate()返回的值。这允许在计算自定义指标时采用经济的算法,以避免对那些自上次调用此函数以来没有变化的条形图进行重复计算。为此,通常只需返回rate_total参数的值即可,该参数包含当前函数调用中的条数。如果自上次调用OnCalculate()后,价格数据发生了变化(更深的历史被抽出或历史空白被填补),那么输入参数prev_calculated的值将被终端设置为零。 [删除] 2016.08.24 20:10 #6084 Karputov Vladimir:如果是关于按钮,这里有一个帮助中的例子。注意:按钮1和按钮2是不可锁定的,但按钮3是可锁定的。这不是一个好例子。1因为图书馆 2,因为它是由一个小组制作的3,因为你不了解它。我画了两个按钮的草图,一个是固定的,另一个需要解锁 - "添加 "需要解锁//+------------------------------------------------------------------+ //| 0000.mq5 | //| Copyright 2016, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" bool stop_trading; int OnInit() {//--- Создание Фиксированной кнопки "Старт-Стоп" if( !ObjectCreate( 0, "stop_button", OBJ_BUTTON, 0, 0, 0 ) ) { MessageBox( "Кнопка 'Старт-стоп' не создана!", "Ошибка", MB_OK | MB_ICONHAND );return( INIT_FAILED );} else {ObjectSetInteger( 0, "stop_button", OBJPROP_CORNER, CORNER_RIGHT_LOWER ); ObjectSetInteger( 0, "stop_button", OBJPROP_XDISTANCE, 60 ); ObjectSetInteger( 0, "stop_button", OBJPROP_YDISTANCE, 20 ); ObjectSetInteger( 0, "stop_button", OBJPROP_XSIZE, 60 ); ObjectSetInteger( 0, "stop_button", OBJPROP_YSIZE, 20 ); if ( stop_trading ) {ObjectSetInteger( 0, "stop_button", OBJPROP_BGCOLOR,clrMagenta); ObjectSetInteger( 0, "stop_button", OBJPROP_STATE, true ); ObjectSetString( 0, "stop_button", OBJPROP_TEXT, "Старт" );} else {ObjectSetInteger( 0, "stop_button", OBJPROP_BGCOLOR, clrMediumSeaGreen); ObjectSetInteger( 0, "stop_button", OBJPROP_STATE, false ); ObjectSetString( 0, "stop_button", OBJPROP_TEXT, "Стоп" );} } //--- Создание Нефиксированной кнопки "Добавить if( !ObjectCreate( 0, "Add", OBJ_BUTTON, 0, 0, 0 ) ) { Print( "Кнопка 'Добавить' не создана!" );return( INIT_FAILED ); } { ObjectSetInteger( 0, "Add", OBJPROP_CORNER, CORNER_RIGHT_LOWER ); ObjectSetInteger( 0, "Add", OBJPROP_XDISTANCE, 140 ); //--- установим координаты кнопки ObjectSetInteger( 0, "Add", OBJPROP_YDISTANCE, 20 ); ObjectSetInteger( 0, "Add", OBJPROP_XSIZE,80); //--- установим размер кнопки ObjectSetInteger( 0, "Add", OBJPROP_YSIZE, 20); //--- ObjectSetInteger( 0, "Add", OBJPROP_BGCOLOR, clrWhite ); //--- установим цвет фона ObjectSetInteger( 0, "Add", OBJPROP_STATE, false ); //--- переведем кнопку в состояние false ObjectSetString( 0, "Add", OBJPROP_TEXT, "Добавить" ); //--- установим текст } return( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit( const int reason ) { //--- Удаление кнопки старт-стоп ObjectDelete( 0, "stop_button" ); //--- Удаление кнопки Добавить ObjectDelete( 0, "Add" ); } //+------------------------------------------------------------------+ //| Expert Chart event function | //+------------------------------------------------------------------+ void OnChartEvent( const int id, const long& lparam, const double& dparam, const string& sparam ) { long b_state; long f_state; //--- if( id == CHARTEVENT_OBJECT_CLICK ) { if ( sparam == "stop_button" ) { if ( ObjectGetInteger( 0, "stop_button", OBJPROP_STATE, 0, b_state ) ) { if ( b_state == 1 ) { stop_trading = true; ObjectSetInteger( 0, "stop_button", OBJPROP_BGCOLOR, clrMagenta); ObjectSetString( 0, "stop_button", OBJPROP_TEXT, "Старт" ); } else { stop_trading = false; ObjectSetInteger( 0, "stop_button", OBJPROP_BGCOLOR,clrMediumSeaGreen ); ObjectSetString( 0, "stop_button", OBJPROP_TEXT, "Стоп" ); } } } } ChartRedraw(ChartID()); //--Создание Нефиксированной кнопки "Добавить if(id==CHARTEVENT_OBJECT_CLICK) // НАЖАТ ГРАФИЧЕСКИЙ ОБЪЕКТ if ( sparam == "Add" )// Нажата кнопка { if ( ObjectGetInteger( 0, "Add", OBJPROP_STATE, 0, f_state ) ) { if (f_state == 1 ) { // то, что то =true; здесь можно выбирать цвет /текст и т.д до нажатия //--- ObjectSetInteger( 0, "Add", OBJPROP_BGCOLOR,clrWhite ); //цвет кнопки ObjectSetString( 0, "Add", OBJPROP_TEXT, "Добавить" ); // текст кнопки } else { // то ,что то равно false; //---здесь можно изменять цвет /текст и т.д после нажатия // ObjectSetInteger( 0, "Add", OBJPROP_BGCOLOR,clrMediumSeaGreen );//цвет кнопки // ObjectSetString( 0, "Add", OBJPROP_TEXT, "Добавить" ); // текст кнопки } ChartRedraw(ChartID()); } } return; } coon 2016.08.25 11:41 #6085 如何加入经理? Vladimir Karputov 2016.08.25 11:44 #6086 coon: 如何加入一个经理? 以下是说明:如何注册信号 coon 2016.08.25 11:45 #6087 嗯,有一个经理,看到他的工作成效,想 "投资"。ps - 对不起,我是个茶壶。 Vladimir Karputov 2016.08.25 11:46 #6088 coon:嗯,有一个经理,看到他的工作成效,想 "投资"。对不起,我是一个完全的初学者。 关于交易、自动交易系统和策略测试的论坛 初学者的问题 Karputov Vladimir, 2016.08.25 11:43 以下是说明:如何订阅信号 coon 2016.08.25 11:50 #6089 谢谢,我会研究的。真的,一开始接近.......,你必须在现场才能弄清楚,显然。但我想....有什么选择吗?你是否提出加入申请,填写文件,存入美元,就这样了? Vladimir Karputov 2016.08.25 11:57 #6090 coon:谢谢,我会研究的。真的,一开始接近.......,你必须在现场才能弄清楚,显然。但我想....有什么选择吗?提出加入申请,填写文件,存入美元,就这样了?观看教程视频:参见YouTube上的信号教程视频您需要把钱存入您的MQL5.账户,开始付费订阅。阅读更多关于信号服务的常见问题 Витрина торговых сигналов в MetaTrader 4/5 2015.03.09www.youtube.com Как выбрать торговый сигнал в платформе MetaTrader и подписаться на него за пару кликов? Очень просто, смотри наше видео и ты узнаешь все о торговых сигналах. 1...602603604605606607608609610611612613614615616...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我还从例子中提取了按钮的代码,....如何使按钮的按压不固定,即在其功能被执行后,返回到其初始状态。
就按钮而言,这里是帮助中的一个例子。
请注意:按钮1和按钮2是不可锁的,而按钮3是可锁的。
结转了。
乔治。请告知这样的观点。
1.EA+指标正在运行
2.与服务器的连接被断开,所有的指示器渲染都会丢失,它提供的数据仍然存在。
你能建议在哪里读到这方面的信息和/或当连接丢失时会发生什么,为什么绘图丢失,但数据仍然存在。是否有可能再次重画?
提前感谢!
结转了。
乔治。请告知这样的观点。
1.EA+指标正在运行
2.与服务器的连接被断开,所有的指示器渲染都会丢失,它提供的数据仍然存在。
你能建议在哪里读到这方面的信息和/或当连接丢失时会发生什么,为什么绘图丢失,但数据仍然存在。是否有可能再次重画?
提前感谢!
从指标开始--即当 "rate_total "参数为 "0 "时,OnCalculate()中会发生什么。
第一个 rates_total 参数包含指标可用于计算的条数,与图表中的条数相对应。
注意OnCalculate()返回的值和第二个输入参数prev_calculated之间的联系。函数调用中的prev_calculated参数包含了上一次调用时OnCalculate()返回的值。这允许在计算自定义指标时采用经济的算法,以避免对那些自上次调用此函数以来没有变化的条形图进行重复计算。
为此,通常只需返回rate_total参数的值即可,该参数包含当前函数调用中的条数。如果自上次调用OnCalculate()后,价格数据发生了变化(更深的历史被抽出或历史空白被填补),那么输入参数prev_calculated的值将被终端设置为零。
如果是关于按钮,这里有一个帮助中的例子。
注意:按钮1和按钮2是不可锁定的,但按钮3是可锁定的。
这不是一个好例子。
1因为图书馆
2,因为它是由一个小组制作的
3,因为你不了解它。
我画了两个按钮的草图,一个是固定的,另一个需要解锁 - "添加 "需要解锁
如何加入一个经理?
嗯,有一个经理,看到他的工作成效,想 "投资"。
ps - 对不起,我是个茶壶。
嗯,有一个经理,看到他的工作成效,想 "投资"。
对不起,我是一个完全的初学者。
关于交易、自动交易系统和策略测试的论坛
初学者的问题
Karputov Vladimir, 2016.08.25 11:43
以下是说明:如何订阅信号谢谢,我会研究的。
真的,一开始接近.......,你必须在现场才能弄清楚,显然。
但我想....
有什么选择吗?你是否提出加入申请,填写文件,存入美元,就这样了?
谢谢,我会研究的。
真的,一开始接近.......,你必须在现场才能弄清楚,显然。
但我想....
有什么选择吗?提出加入申请,填写文件,存入美元,就这样了?
观看教程视频:参见YouTube上的信号教程视频
您需要把钱存入您的MQL5.账户,开始付费订阅。阅读更多关于信号服务的常见问题