对于每个执行的MQL4程序,一定数量的变量设定可以轻松应对图表中的价格状态: 智能交易,脚本或者是客户指标。. 资料应用到可变量的模型中来。 可以由预定义的变量分开处理。 这些数据会在开启后应用 RefreshRates()函数更新。 Ask Bars Bid Close Digits High Low Open Point Time Volume Ask double Ask 对于当前货币对的最新卖价格。使用RefreshRates()函数更新。 参见 MarketInfo(). 示例: if(iRSI(NULL,0,14,PRICE_CLOSE,0)<25) { OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "My order #2",3,D'2005.10.10 12:30',Red); return; } Bars int Bars 返回图表中的柱数。 参见 iBars(). 示例: int counter=1; for(int i=1; i<=Bars; i++) { Print(关闭[i-1]); } Bid double Bid 对于当前货币对的最新买价格。使用RefreshRates()函数更新。 参见 MarketInfo(). 示例: if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75) { OrderSend("EURUSD",OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "My Order #2",3,D'2005.10.10 12:30',Red); return(0); } Close double Close[] 系列数组包含当前图表每个柱的收盘价格。 系列数组元素被索引入倒序的定单,即从最后一个到第一个。. 当前最后一个柱在数组中的索引为0。图表中的第一个柱的索引为Bars-1. 参见 iClose(). 示例: int handle = FileOpen("file.csv", FILE_CSV|FILE_WRITE, ";"); if(handle>0) { // 表格栏标题记录 FileWrite(handle, "Time;Open;High;Low;Close;Volume"); // 数据记录 for(int i=0; i<Bars; i++) FileWrite(handle, Time, Open, High, Low, Close, Volume); FileClose(handle); } Digits int Digits 返回当前货币对的汇率小数位 参见 MarketInfo(). 示例: Print(DoubleToStr(Close[0], 小数位)); High double High[] 系列数组包含当前图表每个柱的最高价格。 系列数组元素被索引入倒序的定单,即从最后一个到第一个。. 当前最后一个柱在数组中的索引为0。图表中的第一个柱的索引为 Bars-1. 参见 iHigh(). 示例: //---- 最大值 i=Bars-KPeriod; if(counted_bars>KPeriod) i=Bars-counted_bars-1; while(i>=0) { double max=-1000000; k = i + KPeriod-1; while(k>=i) { price=High[k]; if(max<price) max=price; k--; } HighesBuffer=max; i--; } //---- Low double Low[] 系列数组包含当前图表每个柱的最低价格。 系列数组元素被索引入倒序的定单,即从最后一个到第一个。. 当前最后一个柱在数组中的索引为0。图表中的第一个柱的索引为 Bars-1. 参见 iLow(). 示例: //---- 最小值 i=Bars-KPeriod; if(counted_bars>KPeriod) i=Bars-counted_bars-1; while(i>=0) { double min=1000000; k = i + KPeriod-1; while(k>=i) { price=Low[k]; if(min>price) min=price; k--; } LowesBuffer=min; i--; } //---- Open double Open[] 系列数组包含当前图表每个柱的开盘价格。 系列数组元素被索引入倒序的定单,即从最后一个到第一个。. 当前最后一个柱在数组中的索引为0。图表中的第一个柱的索引为Bars-1. 参见 iOpen(). 示例: i = Bars - counted_bars - 1; while(i>=0) { double high = High; double low = Low; double open = Open; double close = Close; AccumulationBuffer = (close-low) - (high-close); if(AccumulationBuffer != 0) { double diff = high - low; if(0==diff) AccumulationBuffer = 0; else { AccumulationBuffer /= diff; AccumulationBuffer *= Volume; } } if(i<Bars-1) AccumulationBuffer += AccumulationBuffer[i+1]; i--; } double Point 返回当前图表的点值 参见 MarketInfo(). 示例: OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point); datetime Time datetime Time[] 系列数组包含当前图表的每个柱开盘时间。数据像日期时间一样呈现时间,从1979年1月1日零点开始以秒计算。 系列数组元素被索引入倒序的定单,即从最后一个到第一个。当前最后一个柱在数组中的索引为0。图表中的第一个柱的索引为 Bars-1. 参见 iTime(). 示例: for(i=Bars-2; i>=0; i--) { if(High[i+1] > LastHigh) LastHigh = High[i+1]; if(Low[i+1] < LastLow) LastLow = Low[i+1]; //---- if(TimeDay(Time) != TimeDay(Time[i+1])) { P = (LastHigh + LastLow + Close[i+1])/3; R1 = P*2 - LastLow; S1 = P*2 - LastHigh; R2 = P + LastHigh - LastLow; S2 = P - (LastHigh - LastLow); R3 = P*2 + LastHigh - LastLow*2; S3 = P*2 - (LastHigh*2 - LastLow); LastLow = Open; LastHigh = Open; } //---- PBuffer = P; S1Buffer = S1; R1Buffer = R1; S2Buffer = S2; R2Buffer = R2; S3Buffer = S3; R3Buffer = R3; } Volume double Volume[] 系列数组包含当前图表每个柱替克成交量。 系列数组元素被索引入倒序的定单,即从最后一个到第一个。. 当前最后一个柱在数组中的索引为0。图表中的第一个柱的索引为 Bars-1. 参见 iVolume(). 示例: if(i==0 && time0<i_time+periodseconds) { d_volume += Volume[0]; if(Low[0]<d_low) d_low = Low[0]; if(High[0]>d_high) d_high = High[0]; d_close = Close[0]; } last_fpos = FileTell(ExtHandle); last_volume = Volume; FileWriteInteger(ExtHandle, i_time, LONG_VALUE); FileWriteDouble(ExtHandle, d_open, DOUBLE_VALUE); FileWriteDouble(ExtHandle, d_low, DOUBLE_VALUE); FileWriteDouble(ExtHandle, d_high, DOUBLE_VALUE); FileWriteDouble(ExtHandle, d_close, DOUBLE_VALUE); FileWriteDouble(ExtHandle, d_volume, DOUBLE_VALUE); |
MT4 MT5外汇EA编程教程大全之常用函数(一)
回复:0 浏览:131
- 楼主admin 圈主
- 2019-05-05 13:41