MQL4 Reference MQL4命令手册(完整版)
Sleep指定的时间间隔内暂停交易业务
void Sleep( int milliseconds)
The Sleep()函数是指在指定的时间间隔内暂停交易业务
The Sleep()函数不能在客户指标内计算。
当进入函数停止状态 智能交易每0.1 second秒会检测。
参量:
milliseconds - 毫秒之内的内部睡眠。.
示例:
//---- 等待10秒
Sleep(10000);
|
|
|
|
|
Conversion functions格式转换函数
从一种格式转换到另一种格式提供数据的一组函数。
必须特别注意NormalizeDouble()函数它提供了价格介绍的必要的准确性。 在交易的操作中,如果当前的数字超出交易服务器的需求,意味着没有任何标准的价格可以使用。
CharToStr字符转换成字符串
string CharToStr( int char_code)
将字符型转换成字符串型结果。
参量:
char_code - 字符的ACSII码 。
示例:
string str="WORL" + CharToStr(44); // 'D'的44个代码。
// 结果字串符将被WORLD
|
|
|
|
|
DoubleToStr双精度浮点转换成字符串
string DoubleToStr( double value, int digits)
将双精度浮点型转换成字符串型的结果返回。
参量:
value - 浮点型数字。
digits - 精确格式,小数点后位(0-8)。
示例:
string value=DoubleToStr(1.28473418, 5);
// 值为"1.28473"
|
|
|
|
|
NormalizeDouble给出环绕浮点值的精确度
double NormalizeDouble( double value, int digits)
给出环绕浮点值的精确度。返回双重类型的正常化。
计算止损和赢利值,挂单交易交易的开盘价必须正常化。精确值需要在小数点中预定义。
参量:
value - 浮点值。
digits - 精确格式,小数点之后的精确数字 (0-8)。
示例:
double var1=0.123456789;
Print(DoubleToStr(NormalizeDouble(var1,5),8));
// 输入信息: 0.12346000
|
|
|
|
|
StrToDouble字符串型转换成双精度浮点型
double StrToDouble( string value)
将字符串型转换成双精度浮点型结果。
参量:
value - 数字的字符串转换格式 。
示例:
double var=StrToDouble("103.2812");
|
|
|
|
|
StrToInteger字符串型转换成整型
int StrToInteger( string value)
将字符串型转换成整型结果。
参量:
value - 数字的字符串转换格式。
示例:
int var1=StrToInteger("1024");
|
|
|
|
|
StrToTime字符串型转换成时间型
datetime StrToTime( string value)
将字符串型转换成时间型,输入格式为 "yyyy.mm.dd hh:mi"
参量:
value - 日期时间的字串符格式为 "yyyy.mm.dd hh:mi"。
示例:
datetime var1;
var1=StrToTime("2003.8.12 17:35");
var1=StrToTime("17:35"); // 返回当前给出日期
var1=StrToTime("2003.8.12"); // 返回午夜时间日期"00:00"
|
|
|
|
|
TimeToStr时间类型转换为 "yyyy.mm.dd hh:mi"格式
string TimeToStr( datetime value, void mode)
时间类型(从1970 1月1 日通过的相当数量秒数)转换为 "yyyy.mm.dd hh:mi"格式。
参量:
value - 自1970年1月所通过的数量秒数。
mode - 选择数据输出模式可以是以下的一个或者组合:
TIME_DATE 结果格式为 "yyyy.mm.dd",
TIME_MINUTES 结果格式为 "hh:mi",
TIME_SECONDS 结果格式为 "hh:mi:ss"。
示例:
string var1=TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS);
|
|
|
|
|
Custom indicators自定义指标
自定义指标中使用的一组函数。
这些函数不能在智能交易和脚本中使用。
IndicatorBuffers
void IndicatorBuffers( int count)
对于缓冲储存器分配记忆应用自定义指标计算。缓冲储存器的总数不能超过8或者是小于自定义缓冲 属性中所给出的值。 如果客户指标要求另外的缓冲器计数,那么这个功能必须使用为指定总额缓冲。
参量:
count - 在指标缓冲器和8缓冲储存器之间分配缓冲储存器的总量。
示例:
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Silver
//---- 自定义参量
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
//---- 自定义缓冲
double ind_buffer1[];
double ind_buffer2[];
double ind_buffer3[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- 使用2个添加缓冲。
IndicatorBuffers(3);
//---- 画出设定
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3);
SetIndexDrawBegin(0,SignalSMA);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);
//---- 绘制3 个添加缓冲位置
SetIndexBuffer(0,ind_buffer1);
SetIndexBuffer(1,ind_buffer2);
SetIndexBuffer(2,ind_buffer3);
//---- DataWindow 和自定义窗口标签名称
IndicatorShortName("OsMA("+FastEMA+","+SlowEMA+","+SignalSMA+")");
//---- 初始化结束
return(0);
}
|
|
|
|
|
IndicatorCounted
int IndicatorCounted( )
在自定义最后一次开启之后,函数返回柱的总数不会改变。计算过的柱数无须重新计算。大多数情况下, 同样数额的索引值不需要重估。函数应用到优化计算中。
注解: 最近的柱无须考虑计算, 在多数情况下, 这个柱是要被重估的。不过,自定义指标显示交易中的新柱的第一价格变动。 可能先前柱的最后一个价格变动没有处理的结果(因为在最后 一个价格变动进入时倒数第二个没有 处理 完成)客定义标将不会显示和计算。 在这样的情况下为了避免错误, IndicatorCounted()函数会返回前一个柱。
示例:
int start()
{
int limit;
int counted_bars=IndicatorCounted();
//---- 检验可能出现错误
if(counted_bars<0) return(-1);
//---- 最后数的柱将被重数
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- 主环
for(int i=0; i<limit; i++)
{
//---- ma_shift set to 0 because SetIndexShift called abowe
ExtBlueBuffer[i]=iMA(NULL,0,JawsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
ExtRedBuffer[i]=iMA(NULL,0,TeethPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
ExtLimeBuffer[i]=iMA(NULL,0,LipsPeriod,0,MODE_SMMA,PRICE_MEDIAN,i);
}
//---- 完成
return(0);
}
|
|
|
|
|