论坛风格切换切换到宽版
  • 3239阅读
  • 5回复

在MT5中如何获得开盘价.收盘价,最低价,最高价 [复制链接]

上一主题 下一主题
 
发帖
7
金钱
5
威望
35
贡献
50
交易币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-11-04
本帖最后由 瞬间的光辉 于 2009-11-4 21:35 编辑 K6 PC&+x  
C5W-B8>  
这个问题要是在MT4里,简直是基础的不能再基础的东西了,但是到了MT5里,却是异常的复杂。 i&AXPq>`  
要分两种情况: Bk@_]a  
1 在编写指标里: 3 8ls 4v3  
是作为OnCalculate的参数带来的如下代码: &El[  
int OnCalculate (const int rates_total, .5$V7t.t$\  
const int prev_calculated, :W1tIB  
const datetime& time[], // Time cmC&s'/8`D  
const double& open[], // Open <jg wdbT"6  
const double& high[], // High xf3/<x!B  
const double& low[],// Low \&|w;  
const double& close[], // Close :O_<K&  
const long& tick_volume[], // Tick Volume \ { E;u'F  
const long& volume[], // Real Volume ,L;c{[*rh  
const int& spread[] // Spread -$Z-hxs^  
); e?'k[ES^  
2 在EA里确实异常的复杂: N"Nd$4  
首先我做了如下测试: "q#kh,-C  
fCo2".Tk  
void OnTick() &JzF   
{ 1x5CsmS  
double open,close,low,high; Q $,kB<M  
int Spread; hdWp  
open=SymbolInfoDouble(Symbol(),SYMBOL_ASK);//得到当前的ask价格 '/)_{Ly  
close=SymbolInfoDouble(Symbol(),SYMBOL_BID);//得到当前的bid价格 "I 1M$^8n  
low=SymbolInfoDouble(Symbol(),SYMBOL_BIDLOW);//注意这里没有时间段参数,这里得到的是一天的最低价。 $@!&ML  
high=SymbolInfoDouble(Symbol(),SYMBOL_BIDHIGH);//注意这里没有时间段参数,这里得到的是一天的最高价。 |a~&E@0c  
} z.F+$6  
$ }bC$?^  
找了半天SymbolInfoDouble这个函数根本不能实现得到指定时间周期的open close low high 价格。 YQd&rkr  
后来我终于找到了解决方法,如下: ,> EY9j  
如果系统没有提供如何获得指定周期的开盘,最低价,最低价,那么我只能自己写函数来获得了。 tQ<2K*3]  
iOpen(string symbol,ENUM_TIMEFRAMES timeframe,int index)//此函数是我构造的,和MT4中系统自带的iOpen 一样用法。 %R5MAs&-5  
iOpen(Symbol(),PERIOD_MN1,0);//表示获得最近一根月线的开盘价。 -5B([jHgR  
<%5uzlp  
iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)//此函数是我构造的,和MT4中系统自带的iLow 一样用法。 Ceb i9R[  
iLow(Symbol(),PERIOD_MN1,0);//表示获得最近一根月线的最低价。 *wx^mB9  
Wm/k(R`O<  
iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index)//此函数是我构造的,和MT4中系统自带的iHigh 一样用法。 M|u5Vs1  
iHigh(Symbol(),PERIOD_MN1,0);//表示获得最近一根月线的最高价。 $e\R5L u  
aDEP_b;  
至于收盘价其实,和bid价格是一样的所以完全就可以用系统自带的SymbolInfoDouble(Symbol(),SYMBOL_BID)获得。 &^>r<~]  
下面是完整的代码: 4<HJD&@V  
;sJ2K"c  
#property copyright \"2009, MetaQuotes Software Corp.\" ^9E(8DD  
#property link \"http://www.mt5.net.cn\" 351'l7F\  
#property version \"1.00\" 2J <Z4Ap  
double Open[],High[],Low[]; +r"$?bw '  
int OnInit() 7Kjq1zl;  
{ ?a(3~dh|  
return(0); c9 c Nlp  
} \x}UjHYIc&  
void OnDeinit(const int reason) eU0-_3gN_  
{ <NO~TBHF  
} ?;Qk!t2U  
void OnTick() RCr:2 Iz  
{ ~sD'pS  
double open,close,low,high; YoA$Gw2  
open=iOpen(Symbol(),PERIOD_MN1,0); //表示获得最近一根月线的开盘价。 98"NUT  
close=SymbolInfoDouble(Symbol(),SYMBOL_BID); //表示获得最近一根月线的收盘价。 z7o5 9&  
low=iLow(Symbol(),PERIOD_MN1,0); //表示获得最近一根月线的最低价。 "-sz7}Mb  
high=iHigh(Symbol(),PERIOD_MN1,0); //表示获得最近一根月线的最高价。 ececN{U/  
} t!tBN  
double iOpen(string symbol,ENUM_TIMEFRAMES timeframe,int index) DWG}}vN:&  
{  <_~`)t  
double open=0; '4iu0ie>D  
ArraySetAsSeries(Open,true); _]g6 3q  
int copied=CopyOpen(symbol,timeframe,0,Bars(symbol,timeframe),Open); //将指定时间周期的开盘价格复制到指定数组。 ,aeFEsi  
if(copied>0 && index<copied) open=Open[index]; qXW 5_iX  
return(open); [M.Vu  
} H:`r!5&Qb5  
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index) ;]gph)2cd  
{ `k+k&t  
double low=0; F 1BPzRo`  
ArraySetAsSeries(Low,true); W \"cp[b  
int copied=CopyLow(symbol,timeframe,0,Bars(symbol,timeframe),Low); ,,?t>|3  
if(copied>0 && index<copied) low=Low[index]; W!{uEH{%l  
return(low); u{si  
} {2,V3*NF  
double iHigh(string symbol,ENUM_TIMEFRAMES timeframe,int index) nD!^0?  
{ : "UBeo<Z  
double high=0; +!X^E9ra  
ArraySetAsSeries(High,true); &.d~ M1Mz  
int copied=CopyHigh(symbol,timeframe,0,Bars(symbol,timeframe),High); zITXEorF!J  
if(copied>0 && index<copied) high=High[index]; `jP6;i  
return(high); ^K3{6}]  
} JIK;/1  
open,close,low,high.rar (1 K) 下载次数:11 Tmq:,.^}  
原文来自:第一MT5编程论坛:http://www.mt5.net.cn原文地址:http://www.mt5.net.cn/read.php?tid=324
 
发帖
7
金钱
5
威望
35
贡献
50
交易币
0
只看该作者 沙发  发表于: 2009-11-05
这里太排外了,技术无国界更无论坛之分。 j&ddpS(s  
气氛实在不对,版主发布的技术文章,千万人追捧。别的网站转来的技术文章无人问津。
 
离线shawnyau

发帖
49
金钱
41
威望
1173
贡献
151
交易币
6
只看该作者 板凳  发表于: 2009-11-05
建议多点文字说明,少点代码,呵呵。 &W:Wv,3  
毕竟单纯列举代码的话,能看懂的基本就是本来已经懂的人,不懂了看了还是不懂,对初学者来说,多文字少代码,能消除高门槛的感觉。
离线小辉
发帖
11
金钱
78
威望
137
贡献
53
交易币
1
只看该作者 地板  发表于: 2009-11-05
我也在想这个问题,非得这么复杂吗?
离线ray_donglei
发帖
59
金钱
276
威望
2932
贡献
130
交易币
0
只看该作者 地下室  发表于: 2009-11-05
支持下LZ.
发帖
8
金钱
197
威望
0
贡献
86
交易币
61
只看该作者 下水道  发表于: 2010-10-20
有点过分的复杂

  • 在线咨询
  • 400-881-0680