技术指标

ChartObjectsCopyPaste:MetaTrader 5的实用图形对象复制工具
MetaTrader5
ChartObjectsCopyPaste:MetaTrader 5的实用图形对象复制工具

你是否曾经需要在多个图表之间复制和粘贴一些图形对象?我想你肯定有过这样的需求。然而,MetaTrader并没有提供“复制和粘贴”功能给这些对象。唯一能实现相似效果的就是模板(tpl文件),但模板会保存整个图表的状态,包括指标、设置和许多辅助信息,这些对你所需的复制过程来说可能并没有用处。 因此,我开发了这个指示器 ChartObjectsCopyPaste.mq5。它可以将选定的对象复制到剪贴板,然后可以粘贴到其他图表上,简单明了。 这个指示器基于另外一个发布在 算法交易书籍 中的指示器 - ObjectGroupEdit.mq5。 请点击链接了解更多关于底层类(ObjectMonitor、MapArray等)在幕后工作的细节。 此指示器没有缓冲区。它需要至少附加在两个图表上:一个是你想要复制对象的源图表,另一个是你计划粘贴对象的目标图表。 在图表上运行时,指示器会追踪现有的图形对象,并记录哪些对象被选中。 如同往常,“复制和粘贴”命令是成对使用的: 按下 Ctrl+Q 热键将所有选定对象复制到 Windows 剪贴板作为文本(你可以在任何文本编辑器中保存和查看它,示例见下文)。 在目标图表上按 Ctrl+J 粘贴剪贴板中的所有对象。 为什么是 Ctrl+Q/Ctrl+J?这两个组合键是从非常少的空闲键中自愿选择的,因为MetaTrader会拦截并不传播许多热键到MQL程序中。尤其是标准的 Ctrl+C/Ctrl+V/Ctrl+Ins/Shift+Ins,在这种情况下是无法使用的。 由于源代码是公开的,你可以将热键更改为其他组合。 由于指示器使用系统 DLL 访问 Windows 剪贴板,因此你需要在 属性 对话框的 依赖项 标签中允许 DLL 导入。 由于Codebase不允许DLL导入,相关的剪贴板代码被包裹在条件预处理指令 #ifdef DLL_LINK 中,因此请在编译之前取消注释以下行: #define DLL_LINK 否则,你会看到剪贴板功能存根在你按下热键时显示警报,而不会执行任何实际操作! 输入参数为: MakeAllSelectable - 使所有对象可选的标志(通常对于程序matically创建的对象为假); LogDetails - 输出所有传输对象属性到日志的标志; 该指示器不会检查粘贴的对象是否与实际目标图表(如符号、价格范围、子窗口数量等)匹配 - 这需要你自己来处理。 以下是包含两个对象的剪贴板文本示例: OBJ_VLINE       H1 Vertical Line 5578   0       0 enum ENUM_OBJECT_PROPERTY_INTEGER 0       OBJPROP_COLOR   55295 1       OBJPROP_STYLE   2 2       OBJPROP_WIDTH   1 3       OBJPROP_BACK    0 4       OBJPROP_SELECTED        1 7       OBJPROP_TYPE    0 8       OBJPROP_TIME    1726739940 10      OBJPROP_SELECTABLE      1 11      OBJPROP_CREATETIME      1726847009 12      OBJPROP_TIMEFRAMES      2097151 200     OBJPROP_LEVELS  0 207     OBJPROP_ZORDER  0 208     OBJPROP_HIDDEN    0 1032    OBJPROP_RAY     1 enum ENUM_OBJECT_PROPERTY_DOUBLE 9       OBJPROP_PRICE   1.11449 enum ENUM_OBJECT_PROPERTY_STRING 5       OBJPROP_NAME    H1 Vertical Line 5578 6       OBJPROP_TEXT     206     OBJPROP_TOOLTIP OBJ_CHANNEL     H1 Equidistant Channel 40885    5       1 enum ENUM_OBJECT_PROPERTY_INTEGER 0       OBJPROP_COLOR   255 1       OBJPROP_STYLE   0 2       OBJPROP_WIDTH   1 3       OBJPROP_BACK    0 4       OBJPROP_SELECTED        1 7       OBJPROP_TYPE    5 8       OBJPROP_TIME    1726758000 8       OBJPROP_TIME.1  1726797600 8       OBJPROP_TIME.2  1726758000 10      OBJPROP_SELECTABLE      1 11      OBJPROP_CREATETIME      1726847883 12      OBJPROP_TIMEFRAMES      2097151 200     OBJPROP_LEVELS  0 207     OBJPROP_ZORDER  0 208     OBJPROP_HIDDEN    0 1003    OBJPROP_RAY_LEFT        0 1004    OBJPROP_RAY_RIGHT       0 1031    OBJPROP_FILL    0 enum ENUM_OBJECT_PROPERTY_DOUBLE 9       OBJPROP_PRICE   -28.113879003558715 9       OBJPROP_PRICE.1  -21.708185053380777 9       OBJPROP_PRICE.2  -48.04270462633452 enum ENUM_OBJECT_PROPERTY_STRING 5       OBJPROP_NAME    H1 Equidistant Channel 40885 6       OBJPROP_TEXT     206     OBJPROP_TOOLTIP 下面是这些对象粘贴到图表上的效果:

2024.09.21
使用 RSI EMA 吞没柱指标提升交易策略 - MetaTrader 5
MetaTrader5
使用 RSI EMA 吞没柱指标提升交易策略 - MetaTrader 5

大家好!今天我们来聊一聊如何使用 RSI EMA 吞没柱指标来提升我们的交易策略。这款指标专为 MetaTrader 5 设计,能够帮助我们识别潜在的买入机会。下面让我们详细了解一下它的工作原理: 买入条件 1. RSI 条件: 当前周期的相对强弱指数(RSI)低于设定的低阈值(RsiLow),这表明市场处于超卖状态。 2. 蜡烛图形态: 该指标会检查连续三根蜡烛图的特定形态: 当前蜡烛(1)收盘高于开盘(看涨) 前一根蜡烛(2)收盘低于开盘(看跌) 当前蜡烛的收盘价高于前一根蜡烛的开盘价 当前蜡烛的收盘价低于前一根蜡烛的最高价 3. 移动平均条件: 当前蜡烛的收盘价低于指数移动平均线(EMA)。 同时,长期 EMA(Shiftpast)低于短期 EMA(Shiftnow),这表明可能存在上升趋势。 你可以根据需要调整移动平均线的变化,例如,5 与 6 的比较,表示5根蜡烛前的 EMA ID5 高于 ID6,也可以调整为3-4、7-9或10-13等。 4. 买入信号: 当所有条件满足时,系统会在当前蜡烛的低点生成一个“买入”信号,配有向上的箭头。 这款警报工具旨在识别潜在的牛市或熊市反转信号。它结合了超卖条件(低 RSI)和特定蜡烛图形态,表明买入压力开始超过卖出压力。而移动平均条件则帮助确认整体趋势的方向。

2024.09.13
如何在MetaTrader 5中修改无缓冲指标对象
MetaTrader5
如何在MetaTrader 5中修改无缓冲指标对象

大家好,今天我们来聊聊在MetaTrader 5中如何修改那些没有源代码的指标对象。很多指标并不使用缓冲区,而是直接使用对象进行绘制。虽然如果指标使用缓冲区的话,通过iCustom函数更改输入会很简单,但如果指标只使用对象,那该怎么办呢? 为了演示这个过程,我们将使用一款名为“PZ Multidiagonals MT5”的免费市场指标。在尝试测试代码之前,您需要先从市场上安装这个指标。 我们需要一个对象前缀名称来开始操作这些对象。我们创建了一个名为 LogChartObjectNames() 的函数,用于记录在指标中存在的所有对象名称。 接下来,通过 ModifyChartObjects() 函数来操作这些对象。这个函数接受两个参数:一个是前缀名称(应该是描述性对象名称的开头部分),另一个是整数,用于指定要保留多少个未被修改的对象。 PZ Multidiagonals指标是一个趋势指标,它会自动绘制趋势线,但有时可能画得稍微多了一些。以下是默认预设的样子: 从数据显示窗口中,我们可以明显看出这个指标并没有使用缓冲区,所有的内容都是通过对象构建的。 现在,我们从一个干净的图表开始,加载这个指标“Hacking Objects.mq5”,你会看到我如何去掉了许多趋势线,只保留了我认为最相关的部分,这一切并不是通过访问输入,而是通过修改对象来实现的:

2024.07.17
首页 上一页 10 11 12 13 14 15 16 17 18 19 20 下一页 末页