系统交易

使用MA动量指标的EA交易策略详解
MetaTrader5
使用MA动量指标的EA交易策略详解

顾问的理念 这款EA基于自定义指标'MA动量'的信号进行交易。信号是指标中两条线的交叉点。只有当交叉点位于'100'以下时,才会产生'买入'信号;而当交叉点位于'100'以上时,才会产生'卖出'信号。 注意:'止盈'以点数表示(1.00055-1.00045=10点),'止损'以金额表示 当达到'止盈'水平(以点数设定)或'止损'水平(以金额设定)时,可以平仓。EA中没有追踪止损的功能。 如何优化专家顾问 对于初步优化,我建议使用以下参数: 图片说明:1. MA动量最小收益 特点: EA可以针对工作时间框架进行优化('工作时间框架') 每根K线只能有一个'进场'交易(这是一个内部参数,不包含在输入参数中,与'仅一单'参数无关) 在'内部K线'模式下工作(参数'搜索信号...'等于'K线#0(每个点)')时,当前K线为K线#0;而在'仅在新K线生成时'模式下工作(参数'搜索信号...'等于'K线#1(新K线时)')时,当前K线为K线#1。 现在我们来详细介绍每组参数: 交易设置: '工作时间框架' - 工作时间框架,指创建指标的时间框架和搜索新K线的时间框架。止损、止盈和追踪止损以点数设定。任何参数('止损'、'止盈'、'追踪止损')都可以禁用;只需将所选参数设置为'0.0'。追踪止损的工作方式已在TrailingStop代码中的图片中展示。 仓位管理(手数计算) 手数可以是固定的(将'资金管理'设置为'固定手数'并设置手数大小为'资金管理的值'),也可以是动态的——按每笔交易风险的百分比(将'资金管理'设置为'每笔交易风险百分比'并在'资金管理的值'中设置风险百分比)。你还可以将固定手数设置为最小手数——将'资金管理'设置为'最小手数'。 附加功能: 标志'仓位:仅一单'设置为'true',允许EA在市场上最多只持有一单仓位。 警告:'仓位:仅一单'设置为'true'并不会覆盖'仓位:平仓对立'设置为'true'的情况!换句话说:对立仓位会优先平仓。 标志'仓位:反向'用于信号反转。还有一个有趣的标志'仓位:平仓对立'——当设置为'true'时,在开仓之前会确保清除对立仓位。'打印日志'会打印所有操作的详细日志。'冻结和止损水平系数'参数设置符号的止损和冻结水平的系数,推荐值为'3'。

2022.04.28
如何在MetaTrader 4中检测新K线的开始
MetaTrader4
如何在MetaTrader 4中检测新K线的开始

在为 专家顾问(EA) 编写程序时,当新的报价到达时,MetaTrader 终端会调用默认的 OnTick() 事件处理函数。不过,默认情况下并没有针对新K线(蜡烛图)开始或打开的事件处理函数。 为了检测新K线的开始,我们需要监控当前最新K线的开启时间。一旦这个时间发生变化,就意味着一根新的K线开始了,我们可以对此做出反应并处理相应的事件。以下是一个兼容MQL4和MQL5的示例代码,展示了如何实现这一点: // 默认的tick事件处理函数    void OnTick()    {       // 检查是否有新K线(兼容MQL4和MQL5)。          static datetime dtBarCurrent  = WRONG_VALUE;                 datetime dtBarPrevious = dtBarCurrent;                          dtBarCurrent  = iTime( _Symbol, _Period, 0 );                 bool     bNewBarEvent  = ( dtBarCurrent != dtBarPrevious );       // 对新K线事件进行反应和处理。          if( bNewBarEvent )          {             // 检测是否是首次接收的tick并进行处理。                /* 例如,当它首次附加到图表上时,                   K线可能处于进展的中间,                   这时并不实际是新K线的开始。 */                if( dtBarPrevious == WRONG_VALUE )                {                   // 在首次tick或K线中间时做一些处理 ...                }                else                {                   // 当正常K线开始时做一些处理 ...                };             // 无论上述条件如何都可以做的事情 ...          }          else          {             // 处理其他情况 ...          };       // 其他操作 ...    }; 在上面的代码中,静态变量用于跟踪K线的开启时间,即使在从 OnTick() 函数返回时,它也不会丢失数据。这是检测当前K线开启时间变化的关键。 值得注意的是,当EA首次放置到图表上时,上述代码会将其反应为K线刚刚开启。这种情况需要特殊处理,以便在需要时进行不同的应对。请注意,我在 CodeBase 发表的所有源代码现在也可以在 MetaEditor 的“公共项目”标签下找到,名称为“FMIC”。

2022.04.24
如何在MetaTrader 5中检测新K线的开始
MetaTrader5
如何在MetaTrader 5中检测新K线的开始

在使用专家顾问(EA)的时候,当新的报价到达时,MetaTrader终端会调用默认的 OnTick() 事件处理函数。但是,默认情况下并没有处理新K线开始或打开的事件。 为了检测这一点,我们需要监控当前最新K线的开盘时间。一旦这个时间发生变化,就表示新K线的开始,我们可以对此作出反应并处理事件。以下是一个兼容MQL4和MQL5的示例代码,展示了如何实现这一功能: // 默认的报价事件处理函数    void OnTick()    {       // 检查是否有新K线(兼容MQL4和MQL5)。          static datetime dtBarCurrent  = WRONG_VALUE;                 datetime dtBarPrevious = dtBarCurrent;                          dtBarCurrent  = iTime( _Symbol, _Period, 0 );                 bool     bNewBarEvent  = ( dtBarCurrent != dtBarPrevious );       // 对新K线事件作出反应并处理。          if( bNewBarEvent )          {             // 检测这是第一次接收到的报价并处理。                /* 例如,当它首次附加到图表时,K线可能正处于进程中,                    并且并不是新K线的开始。 */                if( dtBarPrevious == WRONG_VALUE )                {                   // 在第一次报价或K线中间做一些操作...                }                else                {                   // 当正常K线开始时做一些操作...                };             // 无论上述条件如何都做一些操作...          }          else          {             // 做其他事情...          };       // 处理其他事情...    }; 在上面的代码中,静态变量用于跟踪K线的开盘时间,即使在返回OnTick()函数时,它也能保持这个值。与普通的局部变量不同,静态变量会记住其数据内容,而不会在函数结束时释放它。这正是检测当前K线开盘时间变化的关键。 此外,当EA首次放置在图表上时,上述代码的反应就像K线刚刚打开一样。如果需要以不同的方式处理这种情况,必须进行特殊处理。 请注意,我所有的CodeBase出版物的源代码现在也可以在MetaEditor的“公共项目”标签下以“FMIC”的名称找到。

2022.04.24
利用DeMarker指标优化交易策略:MetaTrader 5的EA解析
MetaTrader5
利用DeMarker指标优化交易策略:MetaTrader 5的EA解析

交易策略 这款专家顾问(EA)的核心理念是:在每个新K线生成时,如果'DeMarker'指标低于'DeM: Level DOWN'水平,就开启'买入'仓位;反之,如果'DeMarker'指标高于'DeM: Level UP'水平,则开启'卖出'仓位。默认情况下,'仓位:仅一个'参数设置为'假',因此EA可以在市场上已有仓位的情况下开启新仓位。 每当新K线生成时,EA会立即开仓,不会检查开仓价格是否为最佳价位。 此专家顾问没有设置止损、止盈或追踪止损,仓位的关闭仅依据相反信号,并且只有在关闭仓位后能实现盈利(大于零)时才会执行。 图1:DeMarker指标仓位优化 全符号测试示例 图2:设置 图3:输入参数 图4:结果 接下来,我们来详细了解每组参数: 交易设置: '工作时间框架' - 指定EA运行的时间框架,即指标生成的时间框架和新K线的搜索时间框架。 仓位管理(手数计算) 手数可以是固定的(将'资金管理'设置为'固定手数',并设置手数为'资金管理的值'),也可以是动态的,即按交易风险百分比计算(将'资金管理'设置为'交易的风险百分比',并在'资金管理的值'中设置风险百分比)。您还可以将固定手数设置为最小手数(将'资金管理'设置为'最小手数')。 附加功能: 标志'仓位:仅一个'设置为'true',允许EA市场中只持有一个仓位。标志'仓位:反向'则用于信号反转。'打印日志'功能可以打印所有操作的详细日志。

2022.04.21
CHO Smoothed EA:MetaTrader 5的交易专家
MetaTrader5
CHO Smoothed EA:MetaTrader 5的交易专家

交易策略 这款EA使用了一种自定义指标 'CHO Smoothed' ,该指标包含两条线:iCHO线(Chaikin Oscillator,CHO)和经过“移动平均”平滑处理的iCHO线。该指标是在指定的时间框架下创建的,称为工作时间框架,该时间框架用于确定新条形图的生成时刻(如果需要参数'Trailing on ...'和'Search signals on ...')。在设置中,您可以设定更严格的信号 - 为此,'Use ZeroLevel'参数必须设置为'true'。 交易信号: 信号是指标的两条线的交叉。如果设置为严格模式('Use ZeroLevel'参数必须设置为'true'),则'BUY'开仓信号仅会出现在零下,而'SELL'开仓信号仅会出现在零上。 图1. CHO Smoothed EA 特点: EA可以针对工作时间框架进行优化('工作时间框架') 每根条形图只允许一个“进场交易”(这是一个内部参数,不包含在输入参数中,与'Only one positions'参数无关) 在' 内部条形图 '模式下工作时(参数 'Search signals on ...'   等于' bar #0 (每个滴答) '),当前条形图为bar #0,而在' 仅在新条形图生成时 '模式下(参数 'Search signals on ...'    等于' bar #1 (在新条形图上) ')时,当前条形图为bar #1 '交易模式参数: ' - 限制交易方向。可以取值'仅允许BUY头寸'、'仅允许SELL头寸'和'允许BUY和SELL头寸' '使用时间控制'参数   - 查找交易信号的时间区间 从'开始小时'::'开始分钟'到'结束小时'::'结束分钟' 。时间范围可以在一天内设置,也可以跨过一天 现在让我们更详细地了解每组参数: 交易设置: '工作时间框架' - 工作时间框架。指标创建的时间框架,以及查找新条形图的时间框架。止损、止盈和跟踪止损在 点数 中设置。任何参数('止损','止盈','跟踪止损')都可以禁用 - 为此,将所选参数设置为'0.0'。跟踪止损的工作原理在 TrailingStop 代码中展示。 头寸规模管理(手数计算) 手数可以是固定的(将'资金管理'设置为'固定手数'并将手数大小设置为'资金管理的值')和动态的 - 每笔交易的风险百分比(将'资金管理'设置为'每笔交易的风险百分比'并在'资金管理的值'中设置风险百分比)。您还可以将固定手数设置为最小手数 - '资金管理'设置为'最小手数'。 时间控制: 该部分设置查找交易信号的时间范围。通过'使用时间控制'来启用时间范围,并设置从'开始小时'::'开始分钟'到'结束小时'::'结束分钟'的信号查找时间间隔。时间范围可以在一天内设置,也可以跨过一天。这不会影响跟踪止损。 其他功能: 将'头寸:仅一个'标志设置为'true'允许EA在市场中只持有一个头寸。 警告: '头寸:仅一个'设置为'true 并不会覆盖 '头寸:关闭相反' 设置为'true'!换句话说:相反的头寸将首先被关闭 '头寸:反向'标志负责信号反转。还有一个有趣的标志'头寸:关闭相反' - 当设置为'true'时,在开仓之前,保证会移除相反的头寸。'打印日志'打印所有操作的详细日志。'冻结和止损水平系数'参数设置止损和冻结水平的系数,当这些水平对于某个符号为零时,推荐值为'3'。

2022.04.13
首页 上一页 8 9 10 11 12 13 14 15 16 17 18 下一页 末页