MQL4 Reference MQL4命令手册(完整版)
 
 
 
| 
 
| AccountServer( )账户连接服务器 string AccountServer( )
 返回连接服务器的名称。
 示例:
 Print("服务器名称", AccountServer());
 AccountStopoutLevel( )账户停止水平值
 int AccountStopoutLevel( )
 返回停止水平值。
 示例:
 Print("停止水平 = ", AccountStopoutLevel());
 
 | 
 | 
|  | 
|
|  | 
|  | 
 
 
| 
 
| AccountStopoutMode( )账户停止返回模式 int AccountStopoutMode( )
 对于停止水平返回的的运算方式。运算方式值如下:
 0 - 计算保证金和净值之间的百分比;
 1 - 比较自由保证金水平和绝对值。
 示例:
 int level=AccountStopoutLevel();
 if(AccountStopoutMode()==0)
 Print("停止水平= ",水平, "%");
 else
 Print("停止水平= ", 水平, " ", AccountCurrency());
 
 
 | 
 | 
|  | 
|
|  | 
|  | 
 
 
| 
 
| Array functions数组函数 使用数组的一组函数。
 数组的最大维数为四维。每个维数被索引编为从0 至维度-1。 事实上,第一维数组的50 个,在调用时第一个数组显示为[0],最后一个数组显示为[49]。
 使用这些函数(除那些改变定量和定性的数组外) 能够预定义时间系列Time[], Open[], High[], Low[], Close[], Volume[]
 
 | 
 | 
|  | 
|
|  | 
|  | 
 
 
| 
 
| ArrayBsearch()数组搜索 int ArrayBsearch( double array[], double value, void count, void start, void direction)
 如果没有发现事件,值会返回到第一个维度的数组或者最近的一个数组。
 此函数不能用在字符型或连续数字的数组上(除打开柱的连续数组)。
 注解: 双元查找只能够存储数。存储数字数组使用ArraySort() 函数。
 参量:
 array[]   -   需要搜索的数组.
 value   -   将要搜索的值
 count   -   搜索的数量,默认搜索所有的数组.
 start   -   搜索的开始点,默认从头开始.
 direction   -   搜索的方向:
 MODE_ASCEND 顺序搜索,
 MODE_DESCEND 倒序搜索.
 示例:
 datetime daytimes[];
 int      shift=10,dayshift;
 // 全部 Time[] 数组被排列在后面的形式
 ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);
 if(Time[shift]>=daytimes[0]) dayshift=0;
 else
 {
 dayshift=ArrayBsearch(daytimes,Time[shift],WHOLE_ARRAY,0,MODE_DESCEND);
 if(Period()<PERIOD_D1) dayshift++;
 }
 Print(TimeToStr(Time[shift])," corresponds to ",dayshift," day bar opened at ",
 TimeToStr(daytimes[dayshift]));
 
 | 
 | 
|  | 
|
|  | 
|  | 
 
 
| 
 
| ArrayCopy()数组复制 int ArrayCopy( void dest[], object source[], void start_dest, void start_source, void count)
 复制一个数组到另外一个数组。 只有double[], int[], datetime[], color[], 和 bool[] 这些类型的数组可以被复制。
 返回复制元素总量。
 参量:
 dest[]   -   目标数组 。
 source[]   -   源数组 。
 start_dest   -   从目标数组的第几位开始写入,默认为0 。
 start_source   -   从源数组的第几位开始读取,默认为0 。
 count   -   读取多少位的数组 。默认值为WHOLE_ARRAY常数。
 示例:
 double array1[][6];
 double array2[10][6];
 // 数组2 被相同数据添满
 ArrayCopyRates(array1);
 ArrayCopy(array2,array1,0,0,60);
 // 现在数组2 的前10个柱来自历史(前10个柱包括索引[Bars-1])
 ArrayCopy(array2,array1,0,Bars*6-60,60);
 // 现在数组2 的后10个柱来自历史(后10个柱包括索引[0])
 
 | 
 | 
|  | 
|
|  | 
|  | 
 
 
| 
 
| ArrayCopyRates()数组复制走势 int ArrayCopyRates( void dest_array[], void symbol, void timeframe)
 复制一段走势图上的数据到一个二维数组,并返回复制柱总量,如果是-1表示失败。数组的第二维只有6个项目分别是:
 0 - 时间,
 1 - 开盘价格,
 2 - 最低价格,
 3 - 最高价格,
 4 - 收盘价格,
 5 - 成交量.
 如果数据(货币对名称/不同于当前的时间周期) 拒绝其他图表,这种情况下相应的图表不能够在客户端内打开,数据自然会拒绝服务器。这种情况, 错误 ERR_HISTORY_WILL_UPDATED (4066 - 拒绝刷新历史数据) 将被放置到 last_error 变量中,并且将再次拒绝(查看范例ArrayCopySeries()).
 注解:此数组通常用于到DLL函数的通过数据 。
 对于数据数组内存没有真正的分配,没有真正地执行复制。当数组访问时,将会改变方向。
 参量:
 dest_array[]   -   在二维数组上的双重目标数组。
 symbol   -   货币对名称
 timeframe   -   时间周期. 可以是列出时间周期的任意值。
 示例:
 double array1[][6];
 ArrayCopyRates(array1,"EURUSD", PERIOD_H1);
 Print("当前柱 ",TimeToStr(array1[0][0]),"开盘价格", array1[0][1]);
 
 | 
 | 
|  | 
|
|  | 
|  | 
 
 
| 
 
| ArrayCopySeries()数组复制系列走势 int ArrayCopySeries( void array[], int series_index, void symbol, void timeframe)
 复制一个系列的走势图数据到数组上.
 对于数据数组内存没有真正的分配,没有真正地执行复制。当数组访问时,将会改变方向。在客户指标内禁止数组作为 数组下标分配。这种情况下,数组被真正复制。
 如果数据从不同货币对/时间周期图表复制,数据可能缺乏。这种情况下, 错误 ERR_HISTORY_WILL_UPDATED (4066 - 拒绝刷新历史数据)将被放置到 last_error 变量中,并且在确定的时间周期内将重新尝试复制。
 注解: 如果series_index是MODE_TIME, 那么第一个参量必须是日期型的数组
 参量:
 array[]   -   目标第一维数字数组。
 series_index   -   连续数组识别符。必须是连续数组列表识别符其中的值。
 symbol   -   当前货币对名称
 timeframe   -   图表时间周期。可以是 列出时间周期的任意值。
 示例:
 datetime daytimes[];
 int      shift=10,dayshift,error;
 //---- 此Time[] 数组被排列在后面的命令
 ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);
 error=GetLastError();
 if(error==4066)
 {
 //---- 使两个以上接受只读
 for(int i=0;i<2; i++)
 {
 Sleep(5000);
 ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);
 //---- 检查但前每日柱时间
 datetime last_day=daytimes[0];
 if(Year()==TimeYear(last_day) && Month()==TimeMonth(last_day) && Day()==TimeDay(last_day)) break;
 }
 }
 if(Time[shift]>=daytimes[0]) dayshift=0;
 else
 {
 dayshift=ArrayBsearch(daytimes,Time[shift],WHOLE_ARRAY,0,MODE_DESCEND);
 if(Period()<PERIOD_D1) dayshift++;
 }
 Print(TimeToStr(Time[shift])," 相应 ",dayshift," day bar opened at ", TimeToStr(daytimes[dayshift]));
 
 | 
 | 
|  | 
|
|  | 
|  | 
 
 
| 
 
| ArrayDimension()返回数组维数 int ArrayDimension( object array[])
 返回数组的多元维数
 参量:
 array[]   -   将要返回的数组。
 示例:
 int num_array[10][5];
 int dim_size;
 dim_size=ArrayDimension(num_array);
 // dim_size=2
 
 | 
 | 
|  | 
|
|  | 
|  | 
 
 
| 
 
| ArrayGetAsSeries()返回数组序列 bool ArrayGetAsSeries( object array[])
 返回TRUE,如果数组有组织序列的数组(是否从最后到最开始排序过的),否则返回FALSE。
 参量:
 array[]   -   需要检查的数组。
 示例:
 if(ArrayGetAsSeries(array1)==true)
 Print("数组1是作为连续指数被编入索引");
 else
 Print("数组1 正常编入索引(从左到右)");
 
 | 
 | 
|  | 
|
|  | 
|  | 
 
 
| 
 
| ArrayInitialize()数组初始化 int ArrayInitialize( void array[], double value)
 对数组进行初始化,返回经过初始化的数组项的个数 。
 注解:在客户指标中的init()函数不建议使用到初始化缓冲,在这种函数自动初始化"空值"将自动分配和缓冲重新分配。
 参量:
 array[]   -   需要初始化的数组。
 value   -   新的数组项的值 。
 示例:
 //----初始化所有带有2.1的数组
 double myarray[10];
 ArrayInitialize(myarray,2.1);
 
 | 
 | 
|  | 
|
|  | 
|  |