论坛全局菜单下方 - TICKMILL 285X70论坛全局菜单下方 - ThinkMarkets285X70论坛全局菜单下方 - 荔枝返现285X70论坛全局菜单下方 -  icmarkets285X70
查看:2004回复:0
瞬间的光辉
注册时间2007-12-29
在MT5中如何获得开盘价.收盘价,最低价,最高价
楼主发表于:2009-11-05 11:52只看该作者倒序浏览
1楼 电梯直达
电梯直达
这个问题要是在MT4里,简直是基础的不能再基础的东西了,但是到了MT5里,却是异常的复杂。 要分两种情况: 1 在编写指标里: 是作为OnCalculate的参数带来的如下代码: [list=1][*]int OnCalculate (const int rates_total,[*] const int prev_calculated,[*] const datetime& time, // Time[*] const double& open, // Open[*] const double& high, // High[*] const double& low, // Low[*] const double& close, // Close[*] const long& tick_volume, // Tick Volume[*] const long& volume, // Real Volume[*] const int& spread // Spread[*] );[/list] 2 在EA里确实异常的复杂: 首先我做了如下测试: [list=1][*]void OnTick()[*] {[*] double open,close,low,high;[*] int Spread;[*] open=SymbolInfoDouble(Symbol(),SYMBOL_ASK);//得到当前的ask价格[*] close=SymbolInfoDouble(Symbol(),SYMBOL_BID);//得到当前的bid价格[*] low=SymbolInfoDouble(Symbol(),SYMBOL_BIDLOW);//注意这里没有时间段参数,这里得到的是一天的最低价。[*] high=SymbolInfoDouble(Symbol(),SYMBOL_BIDHIGH);//注意这里没有时间段参数,这里得到的是一天的最高价。[*] }[/list] 复制代码 找了半天SymbolInfoDouble这个函数根本不能实现得到指定时间周期的open close low high 价格。 后来我终于找到了解决方法,如下: 如果系统没有提供如何获得指定周期的开盘,最低价,最低价,那么我只能自己写函数来获得了。 iOpen(string symbol,ENUM_TIMEFRAMES timeframe,int index)//此函数是我构造的,和MT4中系统自带的iOpen 一样用法。 iOpen(Symbol(),PERIOD_MN1,0);//表示获得最近一根月线的开盘价。 iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)//此函数是我构造的,和MT4中系统自带的iLow 一样用法。 iLow(Symbol(),PERIOD_MN1,0);//表示获得最近一根月线的最低价。 iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index)//此函数是我构造的,和MT4中系统自带的iHigh 一样用法。 iHigh(Symbol(),PERIOD_MN1,0);//表示获得最近一根月线的最高价。 至于收盘价其实,和bid价格是一样的所以完全就可以用系统自带的SymbolInfoDouble(Symbol(),SYMBOL_BID)获得。 下面是完整的代码: [list=1][*]#property copyright "2009, MetaQuotes Software Corp."[*]#property link "http://www.mt5.net.cn"[*]#property version "1.00"[*]double Open,High,Low;[*]int OnInit()[*] {[*] return(0);[*] }[*]void OnDeinit(const int reason)[*] {[*] }[*]void OnTick()[*] {[*] double open,close,low,high;[*] open=iOpen(Symbol(),PERIOD_MN1,0); //表示获得最近一根月线的开盘价。[*] close=SymbolInfoDouble(Symbol(),SYMBOL_BID); //表示获得最近一根月线的收盘价。[*] low=iLow(Symbol(),PERIOD_MN1,0); //表示获得最近一根月线的最低价。[*] high=iHigh(Symbol(),PERIOD_MN1,0); //表示获得最近一根月线的最高价。[*] }[*]double iOpen(string symbol,ENUM_TIMEFRAMES timeframe,int index)[*] {[*] double open=0;[*] ArraySetAsSeries(Open,true);[*] int copied=CopyOpen(symbol,timeframe,0,Bars(symbol,timeframe),Open); //将指定时间周期的开盘价格复制到指定数组。[*] if(copied>0 && index0 && index0 && indexhttp://www.mt5.net.cn
原文地址:http://www.mt5.net.cn/read.php?tid=324
[*][/list]open,close,low,high.rar
TK29帖子1楼右侧xm竖版广告90-240
个性签名

韬客社区www.talkfx.co

广告
TK30+TK31帖子一樓廣告
TK30+TK31帖子一樓廣告

本站免责声明:

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

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

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

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

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

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