excel打印在一张a4纸:如何获得MT5指定时间周期的开盘价、收盘价、最高价、最低价?——梁大鹏 黄金分析师 外汇分...
来源:百度文库 编辑:中财网 时间:2024/05/10 07:59:33
这个问题要是在MT4里,简直是基础的不能再基础的东西了,但是到了MT5里,却是异常的复杂。
要分两种情况:
1 在编写指标里:
是作为OnCalculate的参数带来的如下代码:
复制代码
1.
2. int _disibledevent=SymbolInfoDouble(Symbol(),SYMBOL_ASK);//得到当前的ask价格
7. close=SymbolInfoDouble(Symbol(),SYMBOL_BID);//得到当前的bid价格
8. low=SymbolInfoDouble(Symbol(),SYMBOL_BIDLOW);//注意这里没有时间段参数,这里得到的是一天的最低价。
9. high=SymbolInfoDouble(Symbol(),SYMBOL_BIDHIGH);//注意这里没有时间段参数,这里得到的是一天的最高价。
10. }
找了半天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)获得。
下面是完整的代码:
复制代码
1.
2. #property copyright "2009, MetaQuotes Software Corp."
3. #property link "http://www.mt5.net.cn"
4. #property version "1.00"
5. double Open[],High[],Low[];
6. int _disibledevent=iOpen(Symbol(),PERIOD_MN1,0); //表示获得最近一根月线的开盘价。
17. close=SymbolInfoDouble(Symbol(),SYMBOL_BID); //表示获得最近一根月线的收盘价。
18. low=iLow(Symbol(),PERIOD_MN1,0); //表示获得最近一根月线的最低价。
19. high=iHigh(Symbol(),PERIOD_MN1,0); //表示获得最近一根月线的最高价。
20. }
21. double iOpen(string symbol,ENUM_TIMEFRAMES timeframe,int index)
22. {
23. double pen=0;
24. ArraySetAsSeries(Open,true);
25. int copied=CopyOpen(symbol,timeframe,0,Bars(symbol,timeframe),Open); //将指定时间周期的开盘价格复制到指定数组。
26. if(copied>0 && index 27. return(open);
28. }
29. double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
30. {
31. double low=0;
32. ArraySetAsSeries(Low,true);
33. int copied=CopyLow(symbol,timeframe,0,Bars(symbol,timeframe),Low);
34. if(copied>0 && index 35. return(low);
36. }
37. double iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index)
38. {
39. double high=0;
40. ArraySetAsSeries(High,true);
41. int copied=CopyHigh(symbol,timeframe,0,Bars(symbol,timeframe),High);
42. if(copied>0 && index 43. return(high);
44. }
45. //+------------------------------------------------------------------+
要分两种情况:
1 在编写指标里:
是作为OnCalculate的参数带来的如下代码:
复制代码
1.
2. int _disibledevent=SymbolInfoDouble(Symbol(),SYMBOL_ASK);//得到当前的ask价格
7. close=SymbolInfoDouble(Symbol(),SYMBOL_BID);//得到当前的bid价格
8. low=SymbolInfoDouble(Symbol(),SYMBOL_BIDLOW);//注意这里没有时间段参数,这里得到的是一天的最低价。
9. high=SymbolInfoDouble(Symbol(),SYMBOL_BIDHIGH);//注意这里没有时间段参数,这里得到的是一天的最高价。
10. }
找了半天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)获得。
下面是完整的代码:
复制代码
1.
2. #property copyright "2009, MetaQuotes Software Corp."
3. #property link "http://www.mt5.net.cn"
4. #property version "1.00"
5. double Open[],High[],Low[];
6. int _disibledevent=iOpen(Symbol(),PERIOD_MN1,0); //表示获得最近一根月线的开盘价。
17. close=SymbolInfoDouble(Symbol(),SYMBOL_BID); //表示获得最近一根月线的收盘价。
18. low=iLow(Symbol(),PERIOD_MN1,0); //表示获得最近一根月线的最低价。
19. high=iHigh(Symbol(),PERIOD_MN1,0); //表示获得最近一根月线的最高价。
20. }
21. double iOpen(string symbol,ENUM_TIMEFRAMES timeframe,int index)
22. {
23. double pen=0;
24. ArraySetAsSeries(Open,true);
25. int copied=CopyOpen(symbol,timeframe,0,Bars(symbol,timeframe),Open); //将指定时间周期的开盘价格复制到指定数组。
26. if(copied>0 && index
28. }
29. double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
30. {
31. double low=0;
32. ArraySetAsSeries(Low,true);
33. int copied=CopyLow(symbol,timeframe,0,Bars(symbol,timeframe),Low);
34. if(copied>0 && index
36. }
37. double iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index)
38. {
39. double high=0;
40. ArraySetAsSeries(High,true);
41. int copied=CopyHigh(symbol,timeframe,0,Bars(symbol,timeframe),High);
42. if(copied>0 && index
44. }
45. //+------------------------------------------------------------------+
分析家公式编写的时候怎样获得历史指定某一天的开盘价或者收盘价?
分析家公式编写的时候怎样获得历史指定某一天的开盘价或者收盘价?
股票收盘后,下一个交易日的开盘价是怎么定的?
开盘价是如何确定的?
香港股市的开盘和收盘时间
如何获得当前的时间?
伦敦铜收盘时间?
我国的股票开盘, 收盘时间是什么时候啊
vb如何获得“真实的”时间
全国人民代表大会召开的时间周期?
约会的周期和时间
如何实现电脑在指定的时间自动关机?
如何让asp在指定的时间执行一个函数?
如何让QQ在指定的时间发出消息
如何让flash播在指定时间跳转到指定的网页页面
人类遗忘的时间周期是多少
网页编程中~如何获得某指定窗口当前的URL?~
如何使用google earth获得自己指定位置的清晰图像
如何使用google earth获得自己指定位置的清晰图像
漏沙摆的周期如何变化?
如何使QQ获得更多的上线时间
如何安排作息时间才能获得好的效果
MySQL中datetime类型如何获得系统的时间?
C#如何获得与当前时间差30天的时间