Predefined variables 预定义变量
对于每个执行的 MQL4 程序,一定数量的变量设定可以轻松应对图表中的价格状态:智能交
易,脚本或者是客户指标。.
资料应用到可变量的模型中来。
可以由预定义的变量分开处理。 这些数据会在开启后应用 RefreshRates()函数更新。
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++)<=”” div=””> FileWrite(handle, Time[i], Open[i], High[i], Low[i], Close[i], Volume[i]);
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;</div”> k–;
}
HighesBuffer[i]=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[i]=min;
i–;
}
//—-
Open[] 开盘价
double Open[]
系列数组包含当前图表每个柱的开盘价格。
系列数组元素被索引入倒序的定单,即从最后一个到第一个。. 当前最后一个柱在数组中的
索引为 0。图表中的第一个柱的索引为 Bars-1.
参见 iOpen().
示例:
i = Bars – counted_bars – 1;
while(i>=0)
{
double high = High[i];
double low = Low[i];
double open = Open[i];
double close = Close[i];
AccumulationBuffer[i] = (close-low) – (high-close);
if(AccumulationBuffer[i] != 0)
{
double diff = high – low;
if(0==diff)
AccumulationBuffer[i] = 0;
else
{
AccumulationBuffer[i] /= diff;
AccumulationBuffer[i] *= Volume[i];
}
}
if(i<bars-1) accumulationbuffer[i]=”” +=”AccumulationBuffer[i+1];</div”> i–;
}
Point 点值
double Point
返回当前图表的点值
参见 MarketInfo().
示例:
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point);
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[i]) != 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[i];
LastHigh = Open[i];
}
//—-
PBuffer[i] = P;
S1Buffer[i] = S1;
R1Buffer[i] = R1;
S2Buffer[i] = S2;
R2Buffer[i] = R2;
S3Buffer[i] = S3;
R3Buffer[i] = R3;
}
Volume[] 成交量
double Volume[]
系列数组包含当前图表每个柱价格变动成交量。
系列数组元素被索引入倒序的定单,即从最后一个到第一个。. 当前最后一个柱在数组中的
索引为 0。图表中的第一个柱的索引为 Bars-1.
参见 iVolume().
示例:
if(i==0 && time0<i_time+periodseconds)< div=””> {
d_volume += Volume[0];
if(Low[0]<d_low) d_low=”Low[0];</div”> if(High[0]>d_high) d_high = High[0];
d_close = Close[0];
}
last_fpos = FileTell(ExtHandle);
last_volume = Volume[i];
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);
</d_low)> </i_time+periodseconds)<> </bars-1)> </price)> </bars;> |
for(int i=0; i<bars; i++)<=”” div=””>
if(max<price) max=”price;</div”>
if(i<bars-1) accumulationbuffer[i]=”” +=”AccumulationBuffer[i+1];</div”>
if(i==0 && time0<i_time+periodseconds)< div=””>
if(Low[0]<d_low) d_low=”Low[0];</div”>
</d_low)>
</i_time+periodseconds)<>
</bars-1)>
</price)>
</bars;>