论坛全局菜单下方 - TICKMILL 285X70论坛全局菜单下方 - ThinkMarkets285X70论坛全局菜单下方 - 荔枝返现285X70论坛全局菜单下方 -  icmarkets285X70
  • 1
  • 2
  • 3
  • 4
前往
共 74 条
查看:18782回复:73
boolapi
注册时间2014-03-23
[MT4-EA]一个简单的 EA 模板, 让现成的指标具有警报提示功能 [含EA和指标代码]
楼主发表于:2014-05-11 03:17只看该作者倒序浏览
1楼 电梯直达
电梯直达
本帖最后由 boolapi 于 2014-5-11 11:30 编辑 这是两个星期前写的类似解说型的文, 也许在这论坛的朋友会需要这类通知型的 EA 或指标修改, 让面对这些全天开盘的商品在看盘上更加便利, 让 EA 帮你叮住自定的需求, 所以转贴于下. 趋势线突破通知型指标以前在论坛贴过帖. 附件 Indicator_Alert.mq4 是单一商品的指标通知 EA 范例模版, 可以依据自己的需要修改成复杂点成多指标判断的如 RSI+MACD, 或是依据客制指标如 Kaufman Adaptive Moving Average 或是阶梯线之类的, 如果需要更细的解说, 在下面留个言. 下图是个玩笑的图, 标普过去二十年用自写的 SuperLadder 指标套在周线图上, 这个就要许多年年才变一次方向, 牛熊市非常清晰, 基本上就不需要任何通知了, 也不需浪费时间在臆想什么时候走牛或走熊:) 附件的 TrendAlert.mq4 是"多"商品同时监控指标通知 EA 的范例 (但只作了 email 输出和 MT4 手机间通知两种选项), 是叮住另一个附件 SuperLadder.mq4 这个客制指标 (需要放在指标文件夹内) 在多商品的多空转换, 解说就不在这里写了, 如果能看懂单一商品的通知方法, 多商品也是类似的方法, 看代码即可了解, 要叮住其他自定的标准或需求, 按照那个思路来修改即可, 通知型的 EA 或指标写法都是类似简单的原理, 改个几次就上手了. 需要注意的 EA 调用指标的参数需要与显示在图表上的指标参数调成一致, 不然会发生 EA 发出通知, 但图表上指标还未碰到条件. 不过 MT4 在单一图表上挂 EA 来监控多商品, 因为其他商品的图表没有开启, 有时在反应上会迟钝些. ======解说文=============================== MT4 对于价格到达有警报提醒功能, 而警报提示功能包括 (1) 警报窗口, (2) 声音, (3) Email 提示, (4) 与手机 MT4 间提示四个选项. 相信不少朋友会想要当某个现成的指标达到某个指标值可以发出警报提示的简单功能, 之前也的确帮两位网上的朋友义务修改过, 这个功能可以写在现成的指标内, 也可以独立作个 EA 调用现成的指标来达成, 架构都是类似的, 因为指标和 EA 都是靠价格跳动来驱动的. 我把这个 EA 模版的解说写详细点, 让对 MT4 编程不太熟悉的朋友也能容易上手. 1. 指标档案名, 预设为 Indicator_Alert, 如果是对 RSI 指标作警告提示用, 指标档案名可以改为 RSI_Alert, 如果是对 MACD, 可以改为 MACD_Alert. 2. 如果之前没有用过 EA, 在 MT4 "工具"->"选项"->"智能交易系统" 里的 "允许自动交易" 打勾, 再把 EA 拉到图表上是, 在图表右上角需要看到一个笑脸表示 EA 才真正生效. 3. 输入参数的解释: input bool AlertPopup = true; /// 警告窗口, 默认为 有 警告窗口 input bool Sound = true; /// 提示声音, 默认为 有 声音 input bool Email = false; /// Email 通知, 默认为 没有 通知 input bool Mobile = false; /// 与手机 MT4 间的提示通知, 默认为 没有 通知 input double UpThreshold = 30.0; /// 指标大于此值, 作 UP 提示 input double DownThreshold = 70.0; /// 指标小于此值, 作 DOWN 提示 input string IndicatorName = "RSI"; /// 提示中显示的指标名称 4. 抓取指标值, 这个模板是提取指标在最新的一根 K 棒, 和前一根 K 棒的指标值 (也就是 Index = 0 & Index = 1) 来比较. // Indicator value for Index 0 dIndicatorCurrent = iRSI(Symbol(),Period(),14,PRICE_CLOSE,0); // Indicator value for Index 1 dIndicatorPrevious = iRSI(Symbol(),Period(),14,PRICE_CLOSE,1); 指标提取的函数 iRSI(...), iMACD(...) 的解说可以参考 MQL4 文档资料网站: http://docs.mql4.com/cn/indicators 基本上调用函数的最前面两个参数就是 Symbol(), Period(), 也就是图表当前的商品名, 周期, 也可以用 NULL, 0 来代替, 接下来是该指标的默认输入值, 在 RSI 这个例子就是 14, 如果是 MACD 是 12, 26, 9. 客制指标的调用是用 iCustom(.....) 函数. 最后一个参数就是那根 K 棒的 index 值, 最新的 K 棒的指标值放 0, 前一根放 1. 5. 判断的逻辑 如果是要比 UpThreshold 值高, 发出 UP 的提示, 前一根 K 棒的指标值要小于 UpThreshold, 这根 K 棒指标值大于 UpThreshold (也就是"交叉"过这个 RSI=30 Threshold 值), 也就是提示 UP 成立的条件. 要判断 DOWN 提示逻辑与上面相反, RSI 低于 70 时发出 DOWN 提示. 因为 Index = 0 这个当前 K 棒的价格是不断的变动的, 也会不断的触发这个 EA, 可能到这根 K 棒收完, 并没有达到提示的要求, 有的交易者并不介意, 因为这只是个通知型的 EA, 并没有自动交易, 收到提示再用人工判断, 但也有交易者喜欢确定的信号, 可以改为 Index = 1 和 2, 也就是前一根 K 棒(确定收完)和前前一根 K 棒的判断. 如果是 Index = 0 & Index = 1 两个指标值的判断, 还需要另外有个特别的处理, 因为 Index = 0 的最新价格是不断的跳动来触发 EA, 一旦条件成立会不断触发而发出许多提示, 解决的方法是当条件一旦被触发时, 设一个时间值 (MT4 的时间值就是从 1970/01/01 到现在的总秒数), 等于这根 Index = 0 的 K 棒的 Open 时间 Time[0], 在这根 K 棒没有收完前, 只要这个时间还等于这根 K 棒的 Open 时间值 就不要再让提示发出, 到了新的 K 棒出现后, Time[0] 值就改变, 判断逻辑又可以开始. 6. 发出的提示信息, 都将是这样的 Alert: EURUSD_M5 RSI UP 的信息, StringConcatenate(...) 是 MT4 把多字串组合起来的函数. strAlertMessage = StringConcatenate("Alert: ",Symbol(),"_",PeriodToString(Period())," ",IndicatorName," UP"); 因为 email 可以显示多点内容, 在 email 文本里会多显示当前价格和指标值. Period() 是 MT4 传回当前图表周期分钟的函数, 如果是 M5 周期就是传回 5 的数值, 如果要显示 "M5" 的文字, 需要简单的函数来转化显示周期文字, 这个简单自写的 PeriodToString(...) 函数功能也含在 EA 里. 7. 提示声音档 "alert.wav" 在 MT4 文件夹内的 Sounds 文件夹, 可以自行置换喜欢的提示声音 wav 档. 补充内容 (2014-5-13 00:04): 多商品趋势监控 TrendAlert.mq4 EA 的详细说明和最后修改版 附于第七楼spx500weekly.jpgspx500weekly.jpgAlert.zip
TK29帖子1楼右侧xm竖版广告90-240
个性签名

韬客社区www.talkfx.co

广告
TK30+TK31帖子一樓廣告
TK30+TK31帖子一樓廣告
limuc
注册时间2011-09-30
积极参与奖
老正
注册时间2003-09-21
365热心助人奖
boolapi
注册时间2014-03-23
楼主发表于:2014-05-12 14:17只看该作者
4楼
老正 发表于 2014-5-12 19:52
static/image/common/back.gif
老正, 今天有位网上的朋友请我帮他改一个里面含中文的 EA, 我在改的过程, 之前 MetaEditor 编辑器有的一个问题, 也就是中文会黏在一起的问题已经被改掉了, 编辑中文变正常了, 我看了一下, 才发现我的 MT4 已经悄悄的被自动更新到 build 646 (日期四月三十日), 后来我上 MQL4 官网论坛看这版的 release note (要看英文那里才是完整的), 发现还修了不少小问题. 如果你的 MT4 没有帮你更新到这版, 值得手动更新, 毕竟编辑含有中文内容的指标和 EA 变方便了.
kanhost
注册时间2014-04-01
发表于:2014-05-12 14:45只看该作者
5楼
emoji-image
个性签名

韬客社区www.talkfx.co

梦如轻烟
注册时间2014-01-22
boolapi
注册时间2014-03-23
楼主发表于:2014-05-12 16:02只看该作者
7楼
多商品趋势监控 EA - TrendAlert.mq4 的详细解说和最后修改于附件, EA 只需要放在一个商品图表上即可监控多商品的趋势变化 参数输入: // 这两个是设定 EA 监控工作时间, 默认是 0-24 全天 extern int HourStart = 0; extern int HourEnd = 24; /// 这个是客制指标 SuperLadder 需要的参数, 可以根据自己需要的趋势指标来设计 extern double ATR_Factor = 2.5; extern int MA_Period = 20; /// 通知的方式, 这个 EA 只设计了 email 和与 MT4 手机间的通知两种方式, 可以参考上面单一商品通知 EA 多设计有声音和提示窗口 extern bool EmailAlert = true; // 默认有 email 通知 extern bool MobileAlert = false; // 默认没有与 MT4 手机间通知 MT4 email 设定可以参考个人博客上的 "使用 MT4 上的 email 发送功能", 与 MT4 手机间的通知设定可以参考 "利用 MT4 EA 作多商品价格爆发监控功能" 一文中有提到如何设定 PC 上的 MT4 与 手机 MT4 间的通知, 但有些国产安卓手机没有加上 Google push service 则无法开启这个 MT4 push 功能. 这个范例是监控十一个商品, 可以依据自己的需要改数量和商品名: int iTotalSymbol = 11; string strSymbol[11]={"SPX500","US30","GER30","JPN225","HKG33", "EURUSD","GBPUSD","AUDUSD","USDJPY","USOil","XAUUSD"}; 趋势转化的判断在, 基本上就是把自己常用的趋势指标放在 iCustom(...) 函数 内, 再比对 index = 1 & index = 2 (也就是上一根 K 棒和上上一根 K 棒指标的变化), 多商品不要比对 index = 0 和 index = 1, 因为 index=0 价格一直在变化, 会发出太多的通知. 每个趋势指标的多空判断逻辑都不同, 需要自行修改. bTrendAlertTriggered 是用来判断那个商品在这个 K 棒时间有没有发过通知 boolean 值, 如果这个商品发过通知就不要重复发出. indexCurrent = iCustom(strSymbol,Period(),"SuperLadder",ATR_Factor,MA_Period,3,1); indexPrev = iCustom(strSymbol,Period(),"SuperLadder",ATR_Factor,MA_Period,3,2); if ( indexCurrent != indexPrev && !bTrendAlertTriggered ) TrendAlert.zip
个性签名

韬客社区www.talkfx.co

dongxing
注册时间2014-05-09
发表于:2014-05-13 07:33只看该作者
8楼
大神 附件里的文件放在MT4中那个文件夹里? 没用过EA有这类方面的教程吗
老正
注册时间2003-09-21
365热心助人奖
发表于:2014-05-13 09:19只看该作者
9楼
boolapi 发表于 2014-5-12 22:17
static/image/common/back.gif 老正, 今天有位网上的朋友请我帮他改一个里面含中文的 EA, 我在改的过程, 之前 MetaEditor 编辑器有的一个 ...
哦? 修好了?? 我去升级下看看去 谢谢哈
个性签名

遇到矛盾 先站在对方的立场上想想问题,先试着去理解别人
如何使用WinMTR查询平台连接流畅度

boolapi
注册时间2014-03-23
楼主发表于:2014-05-13 09:24只看该作者
10楼
dongxing 发表于 2014-5-13 15:33
static/image/common/back.gif 大神 附件里的文件放在MT4中那个文件夹里? 没用过EA有这类方面的教程吗
Indicator_Alert 和 TrendAlert 是 EA, 放在 MT4 文件夹内的 \MQL4\Experts\ 里. SuperLadder 是指标, 放在 \MQL4\Indicators\ 里. 在 MT4 里, *.mq4 是代码档, *.ex4 是执行档
RongW
注册时间2008-10-18
发表于:2014-06-06 14:50只看该作者
11楼
boolapi兄,能私聊吗?我想编一个EA,谢谢!
boolapi
注册时间2014-03-23
楼主发表于:2014-06-06 15:06只看该作者
12楼
RongW 发表于 2014-6-6 22:50
static/image/common/back.gif boolapi兄,能私聊吗?我想编一个EA,谢谢!
只要你能把逻辑讲的非常清楚, 不要太复杂, 周末有空时可以帮你快速简单写写, 但写完 ea 后的实际运作测试一般需要花不少时间在模拟帐号先挂一段时间跑, 这你要自己作, 有什么问题再反馈修改. 个人没用 qq, 可以用 email 联系, 我跟论坛朋友联系的信箱就是这个帐号名 boolapi 后面加 @sina.com
RongW
注册时间2008-10-18
发表于:2014-06-06 15:53只看该作者
13楼
我已给你发邮件啦,看看能否收到,明晚联络,晚安~
kanhost
注册时间2014-04-01
发表于:2014-06-09 09:52只看该作者
14楼
emoji-image
个性签名

韬客社区www.talkfx.co

广告
论坛谏言--外汇交易不应是你投资的全部,交易外汇也不应是你生活的全部
lhtvip
注册时间2014-06-01
发表于:2014-06-10 01:29只看该作者
15楼
谢谢 正需要呢
u8u9b3b7
注册时间2014-06-26
发表于:2014-06-27 15:53只看该作者
16楼
你好,看了你的(MT4-EA] 一个简单的 EA 模板, 让现成的指标具有警报提示功能 [含EA和指标代码])贴子,还是不 会弄,你能不能帮我弄了下谢谢。QQ:282975688
个性签名

韬客社区www.talkfx.co

广告
论坛谏言--外汇交易不应是你投资的全部,交易外汇也不应是你生活的全部
啥时赚
注册时间2008-09-15
发表于:2014-07-01 07:18只看该作者
17楼
下载是0啊,没有文件啊
boolapi
注册时间2014-03-23
楼主发表于:2014-07-01 07:56只看该作者
18楼
啥时赚 发表于 2014-7-1 15:18
static/image/common/back.gif 下载是0啊,没有文件啊
论坛上对于过去档案附件连接基本都失效了, 你可以百度这个标题找到个人的新浪博客, 上面有个人的 email 帐号, 看你喜欢博客上的那些指标或 EA 再写 email 给我, 我再转寄档案给你.
microscale
注册时间2014-02-08
HONGCHUN
注册时间2014-06-19
发表于:2015-07-07 15:37只看该作者
20楼
下来看看! 谢谢!
  • 1
  • 2
  • 3
  • 4
前往
共 74 条

本站免责声明:

1、本站所有广告及宣传信息均与韬客无关,如需投资请依法自行决定是否投资、斟酌资金安全及交易亏损风险;

2、韬客是独立的、仅为投资者提供交流的平台,网友发布信息不代表韬客的观点与意思表示,所有因网友发布的信息而造成的任何法律后果、风险与责任,均与韬客无关;

3、金融交易存在极高法律风险,未必适合所有投资者,请不要轻信任何高额投资收益的诱导而贸然投资;投资保证金交易导致的损失可能超过您投入的资金和预期。请您考虑自身的投资经验及风险承担能力,进行合法、理性投资;

4、所有投资者的交易帐户应仅限本人使用,不应交由第三方操作,对于任何接受第三方喊单、操盘、理财等操作的投资和交易,由此导致的任何风险、亏损及责任由投资者个人自行承担;

5、韬客不隶属于任何券商平台,亦不受任何第三方控制,韬客不邀约客户投资任何保证金交易,不接触亦不涉及投资者的任何资金及账户信息,不代理任何交易操盘行为,不向客户推荐任何券商平台,亦不存在其他任何推荐行为。投资者应自行选择券商平台,券商平台的任何行为均与韬客无关。投资者注册及使用韬客即表示其接受和认可上述声明,并自行承担法律风险。

版权所有:韬客外汇论坛 www.talkfx.com 联络我们:[email protected]