新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 645 1...638639640641642643644645646647648649650651652...1953 新评论 psyman 2018.10.04 00:56 #6441 塔拉斯,是否有可能通过鼠标点击使这种图形规范化的框架变化? 有时出于习惯,我在光标靠近按钮的时候点击,但我不喜欢这样的结果。 在事件处理 列表中,我没有找到合适的东西,只有CHARTEVENT_CHART_CHANGE,没有任何具体描述。我可以尝试绑定鼠标点击,但据我所知,用户不能使用系统菜单,只有当他创建自己的按钮时才可以。有什么简单的解决办法吗? Taras Slobodyanik 2018.10.04 07:37 #6442 psyman:塔拉斯,是否有可能通过鼠标点击使这种图形规范化的框架变化? 有时出于习惯,我在光标靠近按钮的时候点击,但我不喜欢这样的结果。 我在事件处理的 列表中没有找到合适的东西,只有CHARTEVENT_CHART_CHANGE,没有任何具体描述。我可以尝试绑定鼠标按钮,但据我所知,用户不能使用系统菜单,只有当他创建自己的按钮时才能使用。有什么简单的解决办法吗?也就是说,要点击图表上的一些 "水龙头区"? 你可以,你需要跟踪光标坐标和鼠标按钮的点击。 鼠标移动 psyman 2018.10.04 08:37 #6443 关于交易、自动交易系统和策略测试的论坛 关于MQL4的初学者的任何问题,对算法和代码的帮助和讨论 Taras Slobodyanik, 2018.10.04 09:37 你的意思是用鼠标点击图表上的一些 "敲击区"? 你可以,你需要跟踪光标坐标和鼠标点击。 问题是,这是对图表的点击,而不是对系统菜单中的一个按钮的点击。如何处理这样一个事件,我不知道。 Taras Slobodyanik 2018.10.04 08:49 #6444 psyman: 问题是,这是对图表的点击,而不是系统菜单的按钮。我不知道如何处理这样一个事件。记住当前的字符周期,在"CHARTEVENT_CHART_CHANGE"检查变化,并做你需要做的事情。 psyman 2018.10.04 09:42 #6445 好的,再次感谢。 mserega76 Митрофанов 2018.10.04 15:45 #6446 请告诉我,为什么EA主体OnTick()的同一个函数不能工作(或者说,它能工作,但在所有图表上都不能正常工作)。 但从过程OnInit()中可以正常工作,从普通脚本中也可以。专家顾问同时安装在80个图表上(20种货币,每个4个窗口W1 D1 H4 H1),只是我的电脑无法应付吗?请告知。该机器人的目的是在屏幕上输出MessageBox 信息,如果在其中一个图表上检测到信号。也许电脑在开始发送这些信息的时候速度很慢? psyman 2018.10.04 18:11 #6447 我很难记住事件处理 前的时期,我在哪里做这个? 决定按消息追踪,结果发现CHARTEVENT_CHART_CHANGE在一次点击中被处理了2次,ctime变量被重置。 #属性严格#property indicator_chart_windowint ctime。空白的OnInit(){Print(" OnInit------------1 ", ChartPeriod(0));Print("OnInit ctime = ", ctime);// ctime=ChartPeriod(0)。}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[]){ctime=ChartPeriod(0)。return(rate_total)。}空白的OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam){如果(id==CHARTEVENT_CHART_CHANGE){Print("CHARTEVENT_CHART_CHANGE开始了 ctime=", ctime)。如果(ctime!=ChartPeriod(0)){Print(ChartPeriod(0), " CHANGED!!!!!!!!!!!!!!!", ctime)。}}} 在每小时上添加指标,然后切换到每天 2018.10.05 01:04:45.171 _t1 CADJPY,Daily: CHARTEVENT_CHART_CHANGE已启动 ctime=14402018.10.05 01:04:45.156 _t1 CADJPY,Daily: 1440 CHANGED!!!!!!!!!!!!!!!02018.10.05 01:04:45.156 _t1 CADJPY,Daily: CHARTEVENT_CHART_CHANGE已启动 ctime=02018.10.05 01:04:45.156 _t1 CADJPY,Daily: Initialized2018.10.05 01:04:45.156 _t1 CADJPY,Daily: OnInit ctime=02018.10.05 01:04:45.156 _t1 CADJPY,Daily: OnInit------------1 14402018.10.05 01:04:45.156 _t1 CADJPY,H1: uninit reason 3 2018.10.05 01:02:02.000 _t1 CADJPY,H1: CHARTEVENT_CHART_CHANGE已启动 ctime=602018.10.05 01:02:02.000 _t1 CADJPY,H1: 60 CHANGED!!!!!!!!!!!!!!!02018.10.05 01:02:02.000 _t1 CADJPY,H1: CHARTEVENT_CHART_CHANGE已启动 ctime=02018.10.05 01:02:02.000 _t1 CADJPY,H1: 已初始化2018.10.05 01:02:02.000 _t1 CADJPY,H1: OnInit ctime=02018.10.05 01:02:02.000 _t1 CADJPY,H1: OnInit------------1 602018.10.05 01:02:01.078 自定义指标_t1 CADJPY,H1:加载成功 Any questions from newcomers 错误、漏洞、问题 专家顾问 - 杂项问题 Vitaly Gorbunov 2018.10.04 20:00 #6448 psyman:我很难记住事件处理 前的那段时间,这需要在哪里做? 决定按消息追踪,结果发现CHARTEVENT_CHART_CHANGE在一次点击中被处理了2次,ctime变量被重置。把代码正确地放在信息中!在这种形式下很难读懂。它必须看起来像这样。 #property strict #property indicator_chart_window int ctime; void OnInit() { Print(" OnInit------------1 ", ChartPeriod(0)); Print("OnInit ctime = ", ctime); // ctime=ChartPeriod(0); } 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[]) { ctime=ChartPeriod(0); return(rates_total); } void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { if(id==CHARTEVENT_CHART_CHANGE) { Print("CHARTEVENT_CHART_CHANGE is started ctime=", ctime); if(ctime!=ChartPeriod(0)) { Print(ChartPeriod(0), " CHANGED!!!!!!!!!!!!!!! ", ctime); } } } 当你改变图表的参数时,指标会被强制重新加载,请阅读文档中的去初始化的原因及其原因变量。 你可以使用全局终端变量来保存所需的参数。 Taras Slobodyanik 2018.10.04 20:14 #6449 Vitaly Gorbunov:在信息中正确插入代码!这样读起来非常困难。它应该是这样的。 当你改变图表参数时,指标将强行重新启动,请阅读文档中的去初始化的原因及其原因变量。 你可以使用终端的全局变量来保存所需的参数。是的,你需要在GlobalVariable中存储这些值,然后在启动时,检查它们的存在。 也就是说,应该保存图表编号、符号、周期。 然后删除不必要的变量,或使它们最初成为临时全局变量。 你也可以将信息存储在图表的对象中--只要图表存在,对象就存在。 psyman 2018.10.04 20:54 #6450 我以为会简单得多 :-) 然后是一个相当幼稚的问题--我的代码不涉及任何交易或图形,我应该使用什么类型的程序? 脚本是一次性的,但它们可以循环运行吗?我申报一个自定义指标 纯粹是出于惯性,因为我从来没有使用过专家顾问。我以前从未使用过它们,但它们会自动重新启动,我不需要。我需要你的建议。诗句 物体可以是零尺寸,这样在视觉上就不会妨碍到它们? 1...638639640641642643644645646647648649650651652...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
塔拉斯,是否有可能通过鼠标点击使这种图形规范化的框架变化?
有时出于习惯,我在光标靠近按钮的时候点击,但我不喜欢这样的结果。
在事件处理 列表中,我没有找到合适的东西,只有CHARTEVENT_CHART_CHANGE,没有任何具体描述。我可以尝试绑定鼠标点击,但据我所知,用户不能使用系统菜单,只有当他创建自己的按钮时才可以。有什么简单的解决办法吗?
塔拉斯,是否有可能通过鼠标点击使这种图形规范化的框架变化?
有时出于习惯,我在光标靠近按钮的时候点击,但我不喜欢这样的结果。
我在事件处理的 列表中没有找到合适的东西,只有CHARTEVENT_CHART_CHANGE,没有任何具体描述。我可以尝试绑定鼠标按钮,但据我所知,用户不能使用系统菜单,只有当他创建自己的按钮时才能使用。有什么简单的解决办法吗?
也就是说,要点击图表上的一些 "水龙头区"?
你可以,你需要跟踪光标坐标和鼠标按钮的点击。
鼠标移动
关于交易、自动交易系统和策略测试的论坛
关于MQL4的初学者的任何问题,对算法和代码的帮助和讨论
Taras Slobodyanik, 2018.10.04 09:37
你的意思是用鼠标点击图表上的一些 "敲击区"?
你可以,你需要跟踪光标坐标和鼠标点击。
记住当前的字符周期,在"CHARTEVENT_CHART_CHANGE"检查变化,并做你需要做的事情。
请告诉我,为什么EA主体OnTick()的同一个函数不能工作(或者说,它能工作,但在所有图表上都不能正常工作)。
但从过程OnInit()中可以正常工作,从普通脚本中也可以。专家顾问同时安装在80个图表上(20种货币,每个4个窗口W1 D1 H4 H1),只是我的电脑无法应付吗?请告知。该机器人的目的是在屏幕上输出MessageBox 信息,如果在其中一个图表上检测到信号。也许电脑在开始发送这些信息的时候速度很慢?我很难记住事件处理 前的时期,我在哪里做这个?
决定按消息追踪,结果发现CHARTEVENT_CHART_CHANGE在一次点击中被处理了2次,ctime变量被重置。
#属性严格
#property indicator_chart_window
int ctime。
空白的OnInit()
{
Print(" OnInit------------1 ", ChartPeriod(0));
Print("OnInit ctime = ", ctime);
// ctime=ChartPeriod(0)。
}
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[])
{
ctime=ChartPeriod(0)。
return(rate_total)。
}
空白的OnChartEvent(const int id,
const long &lparam,
const double &dparam,
const string &sparam)
{
如果(id==CHARTEVENT_CHART_CHANGE)
{
Print("CHARTEVENT_CHART_CHANGE开始了 ctime=", ctime)。
如果(ctime!=ChartPeriod(0))
{
Print(ChartPeriod(0), " CHANGED!!!!!!!!!!!!!!!", ctime)。
}
}
}
在每小时上添加指标,然后切换到每天
2018.10.05 01:04:45.171 _t1 CADJPY,Daily: CHARTEVENT_CHART_CHANGE已启动 ctime=1440
2018.10.05 01:04:45.156 _t1 CADJPY,Daily: 1440 CHANGED!!!!!!!!!!!!!!!0
2018.10.05 01:04:45.156 _t1 CADJPY,Daily: CHARTEVENT_CHART_CHANGE已启动 ctime=0
2018.10.05 01:04:45.156 _t1 CADJPY,Daily: Initialized
2018.10.05 01:04:45.156 _t1 CADJPY,Daily: OnInit ctime=0
2018.10.05 01:04:45.156 _t1 CADJPY,Daily: OnInit------------1 1440
2018.10.05 01:04:45.156 _t1 CADJPY,H1: uninit reason 3
2018.10.05 01:02:02.000 _t1 CADJPY,H1: CHARTEVENT_CHART_CHANGE已启动 ctime=60
2018.10.05 01:02:02.000 _t1 CADJPY,H1: 60 CHANGED!!!!!!!!!!!!!!!0
2018.10.05 01:02:02.000 _t1 CADJPY,H1: CHARTEVENT_CHART_CHANGE已启动 ctime=0
2018.10.05 01:02:02.000 _t1 CADJPY,H1: 已初始化
2018.10.05 01:02:02.000 _t1 CADJPY,H1: OnInit ctime=0
2018.10.05 01:02:02.000 _t1 CADJPY,H1: OnInit------------1 60
2018.10.05 01:02:01.078 自定义指标_t1 CADJPY,H1:加载成功
我很难记住事件处理 前的那段时间,这需要在哪里做?
决定按消息追踪,结果发现CHARTEVENT_CHART_CHANGE在一次点击中被处理了2次,ctime变量被重置。
把代码正确地放在信息中!在这种形式下很难读懂。它必须看起来像这样。
当你改变图表的参数时,指标会被强制重新加载,请阅读文档中的去初始化的原因及其原因变量。
你可以使用全局终端变量来保存所需的参数。
在信息中正确插入代码!这样读起来非常困难。它应该是这样的。
当你改变图表参数时,指标将强行重新启动,请阅读文档中的去初始化的原因及其原因变量。
你可以使用终端的全局变量来保存所需的参数。
是的,你需要在GlobalVariable中存储这些值,然后在启动时,检查它们的存在。
也就是说,应该保存图表编号、符号、周期。
然后删除不必要的变量,或使它们最初成为临时全局变量。
你也可以将信息存储在图表的对象中--只要图表存在,对象就存在。
我以为会简单得多 :-)
然后是一个相当幼稚的问题--我的代码不涉及任何交易或图形,我应该使用什么类型的程序?
脚本是一次性的,但它们可以循环运行吗?我申报一个自定义指标 纯粹是出于惯性,因为我从来没有使用过专家顾问。我以前从未使用过它们,但它们会自动重新启动,我不需要。我需要你的建议。
诗句
物体可以是零尺寸,这样在视觉上就不会妨碍到它们?