初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1345 1...133813391340134113421343134413451346134713481349135013511352...1503 新评论 Igor Makanu 2021.09.12 18:43 #13441 Vitaly Muzichenko #:同样,你需要在加载下一个副本时改变前缀吗? 你能用语言说明目的是什么吗? 按钮可以从你的窗口外创建和控制。 会是什么呢? Vitaly Muzichenko 2021.09.12 19:05 #13442 Igor Makanu #:你能用语言说明目的是什么吗?这些按钮也可以从你的窗口外创建和控制。那会是什么? 我不知道,但它应该是这样的:在你的子窗口中创建,当你点击时,得到这个子窗口的编号。你不需要画任何东西,只需要一个按钮,当点击时,在Alert中显示关于子窗口号码的信息 Igor Makanu 2021.09.12 19:32 #13443 Vitaly Muzichenko #:我不知道,但这是一个方法:在你的子窗口中创建,当你点击它时,你会得到子窗口的编号。你不需要画任何东西,只需要一个按钮,当点击时,在Alert中显示关于子窗口号码的信息 对我的第一个来源进行了检查。 #property indicator_separate_window #property indicator_buffers 1 #property indicator_plots 1 //--- plot Label1 #property indicator_label1 "Label1" #property indicator_type1 DRAW_LINE #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 2 #include <Controls\Button.mqh> CButton button; //--- indicator buffers double Label1Buffer[]; input int MASlow = 21; // Период медленной МА input int MAFast = 8; // Период быстрой МА //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping string short_name = MQLInfoString(MQL_PROGRAM_NAME) + "=Set (" + (string)MASlow + "/" + (string)MAFast + ")"; IndicatorSetString(INDICATOR_SHORTNAME, short_name); // IndicatorSetString(INDICATOR_SHORTNAME, "IndicatorSetString() Demo"); SetIndexBuffer(0, Label1Buffer, INDICATOR_DATA); srand(GetTickCount()); long c_id = ChartID(); int c_wf = ChartWindowFind(); Print(c_id, " / ", c_wf); button.Create(c_id, "button" + (string)rand(), c_wf, 10, 10, 100, 100); button.Text("Button"); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { for(int i = prev_calculated == 0 ? 0 : prev_calculated - 1; i < rates_total; i++) { Label1Buffer[i] = close[i]; } return(rates_total); } //+------------------------------------------------------------------+ 唉,一切都像你写的那样--如果你用默认参数运行这个指标的多个副本,按钮将只出现在子窗口的第一个指标上。 但如果你在启动过程中改变参数,一切都会好起来。 总的来说,情况并不清楚 Vitaly Muzichenko 2021.09.12 19:41 #13444 Igor Makanu #:我在我的第一个来源上检查了它。唉,一切都像你写的那样--如果你用默认参数运行这个指标的几个副本,按钮将只出现在子窗口的第一个指标上。但如果你在启动过程中改变参数,一切都会好起来。总的来说,情况并不清楚 因此,这里有一个问题:如何自动改变参数,而不进入设置? 到目前为止,没有任何效果......。 --- P.S. 理想情况下,但可惜的是 input long MASlow = TimeLocal(); // Igor Makanu 2021.09.12 19:53 #13445 Vitaly Muzichenko #:到目前为止,它没有发挥作用 ... 而且它不会。 加在。 int OnInit() { Print(__FUNCTION__); 我放了一个指标--我在日志中得到了OnInit,但是下一个指标已经沉默了,也就是说,只有一份指标真正在运行,而其他指标只是一个图形外壳 Vitaly Muzichenko 2021.09.12 20:09 #13446 Igor Makanu #:而这是不可能的。加在。我把指标--我在日志中得到了OnInit,但是下一个指标已经沉默了,也就是说,只有一份指标真正在运行,其他指标只是一个图形化的外壳 事情就是这样的。我想mt5的架构不对。mt4终端工作正常。 如果你决定在mt5中这样做,你将禁止以相同的输入参数运行指标副本,因为它似乎是存在但不存在。 Artyom Trishkin 2021.09.12 23:11 #13447 Vitaly Muzichenko #:事情就是这样的。mt5的架构一定是一团糟。在mt4中一切运作正常。如果你决定在mt5中这样做,你应该禁止启动具有相同输入参数的指标副本,因为它似乎存在,但事实上它不存在。 指标的计算部分与图形部分不一样。因此,计算部分对他们都是一样的。有几个图形化的。 你就不能在一个指标中搜索所有的子窗口,并在标签中加上子窗口的编号吗?同时在计时器中抓取图表的子窗口数量:当增加时--添加到一个新的子窗口标签。但也要搜索什么指标放在里面--如果它是不同的,那么就不要加... 只是一个未经测试的想法。 ZS.我不同意 "曲率 "的说法。20个相同指标的一个计算部分要比20个相同指标的20个计算部分好。 Vitaly Muzichenko 2021.09.13 06:17 #13448 Artyom Trishkin #:一个指标的计算部分与图形部分不一样。因此,计算部分对他们都是一样的。有几个图形化的。 我们就不能在一个指标中寻找所有的子窗口,并在标签中加上子窗口的编号吗?同时在定时器中抓取图表的子窗口数量:增加--添加到一个新的子窗口标签。但也要搜索什么指标放在里面 - 如果不同,就不要添加...只是一个未经测试的想法。ZS.我不同意 "曲率 "的说法。20个相同指标的一个计算部分要比20个相同指标的20个计算部分好。 做了,对按钮没有反应--OnChartEvent拷贝没有触发,也不理解子窗口的编号。 总之,这里是不工作的地方,连同它的其余代码一起 关于交易、自动交易系统和策略测试的论坛 初学者的常见问题 MQL5 MT5 MetaTrader 5 Igor Makanu, 2021.09.12 21:53 你不知道。 添加到。 int OnInit() { Print(__FUNCTION__); 我放了一个指标--我在日志中得到了OnInit,但是下一个指标已经沉默了,也就是说,只有一个指标的副本在实际运行,其他指标只是一个图形外壳 Alexey Viktorov 2021.09.13 06:53 #13449 Vitaly Muzichenko #:做了,对按钮没有反应--OnChartEvent拷贝不起作用,不理解子窗口的编号。总之,这里是不工作的地方,与它一起的是其余的代码 但是!!!。如果我在 "Debug.tpl "的名字下制作一个包含2-3个这样的指标的模板,并开始调试指标,那么OnInit()就能正常工作。 一般来说,我做了这样一个实验。 我在OnInit()中把#property调到最大,希望在未创建指标时,能运行OnInit(),并根据窗口中的指标数量,为指标取一个短名称。 #property indicator_separate_window #property indicator_buffers 1 #property indicator_plots 1 //--- plot Label1 //#property indicator_label1 "Label1" //#property indicator_type1 DRAW_LINE //#property indicator_color1 clrRed //#property indicator_style1 STYLE_SOLID //#property indicator_width1 2 //--- indicator buffers double Label1Buffer[]; input int MASlow = 21; // Период медленной МА input int MAFast = 8; // Период быстрой МА //input string shortName = "1"; // Префикс… long chart_id = ChartID(); string short_name = ""; /********************************************************************\ | Custom indicator initialization function | \********************************************************************/ int OnInit() { //--- indicator buffers mapping long windows_total = ChartGetInteger(chart_id, CHART_WINDOWS_TOTAL); short_name = (string)windows_total; Print(short_name); PlotIndexSetInteger(0, PLOT_DRAW_TYPE, DRAW_LINE); PlotIndexSetInteger(0, PLOT_LINE_COLOR, clrRed); PlotIndexSetInteger(0, PLOT_LINE_STYLE, STYLE_SOLID); PlotIndexSetInteger(0, PLOT_LINE_WIDTH, 2); PlotIndexSetString(0, PLOT_LABEL, "Label1"); IndicatorSetString(INDICATOR_SHORTNAME, short_name); SetIndexBuffer(0, Label1Buffer, INDICATOR_DATA); return(INIT_SUCCEEDED); }/******************************************************************/ 但这并没有帮助。 我开始了第一份副本 指标名称 2......... 我开始第二份拷贝--两个指标的指标名称仍然是2 我开始调试,我看到了什么?尚未加载的指标已经在打印了......读第二行和第三行...... 怎么会这样呢? 进一步的调试在进入OnInit()时停止,windows_total变量包含垃圾,short_name仍然是一个空字符串......。 Hi.........,但都已经印好了......怎么会呢? 而short_name已经改变。 因此,在调试模式下全面加载指标后,指标的名称如下 也许我们应该提请开发人员注意这种错误... Mykhailo Turovskyi 2021.09.16 06:36 #13450 朋友们好,也许我走错了地方,但我看到了名为 "来自初学者的问题MQL5 MT5 MetaTrader 5 "的部分。 所以我的问题是:我曾经从Market下载Demo EAs进行测试,现在无论我做了什么,MT5都无法下载Demo。 MT4没有问题,MT5没有,这是什么原因? 1...133813391340134113421343134413451346134713481349135013511352...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
同样,你需要在加载下一个副本时改变前缀吗?
你能用语言说明目的是什么吗?
按钮可以从你的窗口外创建和控制。
会是什么呢?
你能用语言说明目的是什么吗?
这些按钮也可以从你的窗口外创建和控制。
那会是什么?
我不知道,但它应该是这样的:在你的子窗口中创建,当你点击时,得到这个子窗口的编号。你不需要画任何东西,只需要一个按钮,当点击时,在Alert中显示关于子窗口号码的信息
我不知道,但这是一个方法:在你的子窗口中创建,当你点击它时,你会得到子窗口的编号。你不需要画任何东西,只需要一个按钮,当点击时,在Alert中显示关于子窗口号码的信息
对我的第一个来源进行了检查。
唉,一切都像你写的那样--如果你用默认参数运行这个指标的多个副本,按钮将只出现在子窗口的第一个指标上。
但如果你在启动过程中改变参数,一切都会好起来。
总的来说,情况并不清楚
我在我的第一个来源上检查了它。
唉,一切都像你写的那样--如果你用默认参数运行这个指标的几个副本,按钮将只出现在子窗口的第一个指标上。
但如果你在启动过程中改变参数,一切都会好起来。
总的来说,情况并不清楚
因此,这里有一个问题:如何自动改变参数,而不进入设置?
到目前为止,没有任何效果......。
---
P.S. 理想情况下,但可惜的是
到目前为止,它没有发挥作用 ...
而且它不会。
加在。
我放了一个指标--我在日志中得到了OnInit,但是下一个指标已经沉默了,也就是说,只有一份指标真正在运行,而其他指标只是一个图形外壳
而这是不可能的。
加在。
我把指标--我在日志中得到了OnInit,但是下一个指标已经沉默了,也就是说,只有一份指标真正在运行,其他指标只是一个图形化的外壳
事情就是这样的。我想mt5的架构不对。mt4终端工作正常。
如果你决定在mt5中这样做,你将禁止以相同的输入参数运行指标副本,因为它似乎是存在但不存在。
事情就是这样的。mt5的架构一定是一团糟。在mt4中一切运作正常。
如果你决定在mt5中这样做,你应该禁止启动具有相同输入参数的指标副本,因为它似乎存在,但事实上它不存在。
指标的计算部分与图形部分不一样。因此,计算部分对他们都是一样的。有几个图形化的。
你就不能在一个指标中搜索所有的子窗口,并在标签中加上子窗口的编号吗?同时在计时器中抓取图表的子窗口数量:当增加时--添加到一个新的子窗口标签。但也要搜索什么指标放在里面--如果它是不同的,那么就不要加...
只是一个未经测试的想法。
ZS.我不同意 "曲率 "的说法。20个相同指标的一个计算部分要比20个相同指标的20个计算部分好。
一个指标的计算部分与图形部分不一样。因此,计算部分对他们都是一样的。有几个图形化的。
我们就不能在一个指标中寻找所有的子窗口,并在标签中加上子窗口的编号吗?同时在定时器中抓取图表的子窗口数量:增加--添加到一个新的子窗口标签。但也要搜索什么指标放在里面 - 如果不同,就不要添加...
只是一个未经测试的想法。
ZS.我不同意 "曲率 "的说法。20个相同指标的一个计算部分要比20个相同指标的20个计算部分好。
做了,对按钮没有反应--OnChartEvent拷贝没有触发,也不理解子窗口的编号。
总之,这里是不工作的地方,连同它的其余代码一起
关于交易、自动交易系统和策略测试的论坛
初学者的常见问题 MQL5 MT5 MetaTrader 5
Igor Makanu, 2021.09.12 21:53
你不知道。
添加到。
int OnInit() { Print(__FUNCTION__);
我放了一个指标--我在日志中得到了OnInit,但是下一个指标已经沉默了,也就是说,只有一个指标的副本在实际运行,其他指标只是一个图形外壳
做了,对按钮没有反应--OnChartEvent拷贝不起作用,不理解子窗口的编号。
总之,这里是不工作的地方,与它一起的是其余的代码
但是!!!。如果我在 "Debug.tpl "的名字下制作一个包含2-3个这样的指标的模板,并开始调试指标,那么OnInit()就能正常工作。
一般来说,我做了这样一个实验。
我在OnInit()中把#property调到最大,希望在未创建指标时,能运行OnInit(),并根据窗口中的指标数量,为指标取一个短名称。
但这并没有帮助。
我开始了第一份副本
指标名称 2.........
我开始第二份拷贝--两个指标的指标名称仍然是2
我开始调试,我看到了什么?尚未加载的指标已经在打印了......读第二行和第三行......
怎么会这样呢?
进一步的调试在进入OnInit()时停止,windows_total变量包含垃圾,short_name仍然是一个空字符串......。
Hi.........,但都已经印好了......怎么会呢?
而short_name已经改变。
因此,在调试模式下全面加载指标后,指标的名称如下
也许我们应该提请开发人员注意这种错误...