Существуют 11 видов событий, которые можно обрабатывать с помощью функции предопределенной функции OnChartEvent(). Для пользовательских событий предусмотрено 65535 идентификаторов в диапазоне от CHARTEVENT_CUSTOM до CHARTEVENT_CUSTOM_LAST включительно. Для генерации пользовательского события необходимо использовать функцию EventChartCustom...
...
我将在未来版本中添加滚轮滚动功能....
我想分享一下我在实现滚轮滚动方面的经验。也许我的技术并不适合您,但它可能会给您提供正确的思路(如果您还没有决定实现方法的话)。
在 OnChartEvent() 函数的条件 :
1. 我使用 ChartNavigate 函数并将当前图表设置为 -100 bars back 位置。
2.2. 使用 ChartGetInteger(0,FIRST_VISIBLE_BAR),将第一个可见条的编号 设置为静态变量 "First_bar_number"。
3.3. 接下来,我将图表事件 CHARTEVENT_CHART_CHANGE 固定一次(为此我使用了标志 "a "和标志 "b")。
4.4. 比较 "Number_of_the_first_bar "和 "Number_of_this_bar"(也是通过 ChartGetInteger(0,FIRST_VISIBLE_BAR)获取,但在每个 CHARTEVENT_CHART_CHANGE 事件中,而不是像 "Number_of_the_first_bar "那样一次获取),并确定图表移动的方向。
并确定图表移动的方向。
5.接下来,一切都很简单--通过ObjectSetInteger(0,G_CORE[CANVAS][_NAME],OBJPROP_YOFFSET,G_CORE[CANVAS][_FIELD_TO_VIEW_Y_DISTANCE])移动 kanvas 图像;将图表返回到原始位置--ChartNavigate(0,CHART_END,-100);
6.我跳过下一个图表事件,因为它是由调用的ChartNavigate 函数生成的。然后一切重复进行。
代码如下:
这种方法的缺点是后台图表会晃动。不过,您的构造函数占据了图表的所有可见部分,因此不会引起注意。
这种方法的优点是滚轮滚动效果极佳,丝毫不逊色于 Windows 窗口的滚动效果。有能量、减速...此外,当鼠标悬停在水平滚动条上并滚动滚轮时,我就会看到一个水平滚动条。要做到这一点很容易。
有了这个滚动条,用户就会感觉自己是在上发条中工作)。
看起来是这样的: https://www.mql5.com/ru/forum/139237/page7
我想与大家分享一下我使用滚轮实现滚动的经验。也许我的技术并不适合你,但它可能会给你提供正确的思路(如果你还没有决定实施方法的话)。
在 OnChartEvent() 函数的条件 :
1. 我使用 ChartNavigate 函数并将当前图表设置为后退 -100 条的位置。
2.2. 使用 ChartGetInteger(0,FIRST_VISIBLE_BAR) 将第一个可见条的编号 设置为静态变量 "First_bar_number"。
3.3. 接下来,我将图表事件 CHARTEVENT_CHART_CHANGE 固定一次(为此我使用了标志 "a "和标志 "b")。
4.4. 比较 "Number_of_the_first_bar "和 "Number_of_this_bar"(我也是通过 ChartGetInteger(0,FIRST_VISIBLE_BAR)获取的,但在每个 CHARTEVENT_CHART_CHANGE 事件中,而不是在 "Number_of_the_first_bar "事件中)。
并确定图表移动的方向。
5.接下来,一切都很简单--使用ObjectSetInteger(0,G_CORE[CANVAS][_NAME],OBJPROP_YOFFSET,G_CORE[CANVAS][_FIELD_TO_ VIEW_Y_DISTANCE])移动 kanvas 图像;将图表返回到原始位置--ChartNavigate(0,CHART_END,-100);
6.我跳过下一个图表事件,因为它是由调用的ChartNavigate 函数生成的。然后一切重复进行。
代码如下
这种方法的缺点是背景中的图表会晃动。不过,您的构造函数占据了整个图表的可见部分,因此不会引起注意。
这种方法的优点是滚轮滚动效果极佳,丝毫不逊色于 Windows 窗口的滚动效果。有能量、减速...此外,当鼠标悬停在水平滚动条上并滚动滚轮时,我就会看到一个水平滚动条。要做到这一点很容易。
有了这种滚动,用户会感觉自己是在上发条中工作)。
看起来是这样的: https://www.mql5.com/ru/forum/139237/page7
谢谢。
CHARTEVENT_MOUSE_WHEEL 有 什么问题?
https://www.mql5.com/zh/docs/constants/chartconstants/enum_chartevents ;
谢谢。
CHARTEVENT_MOUSE_WHEEL 有什么问题?
https://www.mql5.com/zh/docs/constants/chartconstants/enum_chartevents ;
当我用滚轮滚动时,它还没有出现。所以我根本没试。(另外,我还在使用 MT4,那里似乎还没有这个功能)。
它能提供能量和减速吗?
当我用滚轮滚动时,它还没有出现。所以我根本没有尝试。(此外,我还在使用 MT4,那里似乎还没有这个功能)。
它能提供能量和减速吗?
我不知道,我没试过。我只记得有这样一个事件。
下午好。
我是 NEOPROGRAMMIST,本产品和相关文章就是为我而写的。
我有一个问题 - 出于教学目的,我试图复制示例 1 中的智能交易系统(快速和慢速 MA 的交叉)。我按照文章中的方法一个字母一个字母地操作。结果,Expert Advisor 有时打开并立即关闭 多个仓位,立即造成损失。有时,它打开一个仓位,一切正常,但当相反信号出现时,它又关闭仓位。至少在这些情况下,一切似乎都很好,但我注意到它们总是只有白。
重新启动计算机后(晚上更新),该方案就解除了,所以我找不到可能的错误,因为代码还是太弱了,而且太庞大,难以理解。
您能否查看一下代码,并指出我哪里做错了?
我不知道,我没试过。我只记得有这样一个事件。
事件是有的,但还没人用过它)。
我很想因为图表抽搐而放弃我的方法,但 MT4 没有这个事件,MT5 也不知道它是如何工作的....。
下午好。
我就是这个产品和这篇文章的作者。
我有一个问题 - 出于教学目的,我试图复制示例 1 中的智能交易系统(快速和慢速 MA 的交叉)。我按照文章中的方法一个字母一个字母地操作。结果,Expert Advisor 有时打开并立即关闭 多个仓位,立即造成损失。有时,它打开一个仓位,一切正常,但当相反信号出现时,它又关闭仓位。至少在这些情况下,一切似乎都很好,但我注意到,它们始终只是买入。
重新启动计算机后,该方案就失效了(晚上更新),所以我找不到可能的错误,因为代码还是太弱了,而且如此之大,难以理解。
您能不能查看一下代码,并指出我哪里做错了?
先看模式 1。这与文章中考虑的模式完全相同(只增加了 Travelling 和 Lossless)。您可以查看所有元素的参数并对其进行调整。
您的智能交易系统存在一些错误。其中之一是您没有更改销售元素中的交易类型(它显示的是 "购买 "而不是销售)。
从研究 1 号模式开始。这正是文章中考虑的方案(只增加了 Travelling 和 Breakeven)。您可以查看所有元素的参数,并对其进行调整。
您的智能交易系统中存在一些错误。其中之一是您没有更改销售元素中的交易类型(它显示的是 "购买",而不是销售)。
谢谢您,您的及时回复让我非常惊喜。
我明白交易类型不变的原因,这也是只有购买才能 正常工作的原因。
但是,在半秒钟内,显然在每一个跳动点上,都会同时打开和关闭一系列订单,而且既有买入订单,也有卖出订单,这在什么地方是错误的????
谢谢你,我对你的及时回复感到非常惊喜。
我理解交易类型不变的问题,这也是只有购买才能 正常工作的原因。
但是,在半秒钟内,显然在每一个刻度上,都有一连串的订单被打开并立即关闭,而且既有买入订单也有卖出订单,这在什么地方是错误的????