MQL5备忘(2016-8-28)
MQL5备忘
快捷操作:
·Ctrl+Space------The List Names dropdown
·Ctrl+Shift+Space------Show Parameter Info
整数类型:char、short、int、long
·数据范围char
·uchar、ushort、uint、ulong表示无符号整数,皆无负数
string类型必须加双引号(“ ”)
·若要在string中加入单引号、双引号,必须要在引号前加上反斜杠:(\)---(\”)(\’)
·若要在string中加入反斜杠,必须要用两个反斜杠:\\
·在sting中加入\n表示另起一行
datetime类型若要直接输入时间,需要以D开头、用单引号括起
数组要常用ArrayResize( )函数,且只有建立动态数组才可以被重新建立大小:
·double A[
]
·double B[
][4][3]
·ArrayResize( )函数重设数组大小,原位置数据保留
函数:
·简洁转换参数类型:double
varA;
·函数中的参数带有默认参数值必须放在最后
·允许重载函数:函数名称相同,但是内部结构不同。
·void test( int & a
) {…}
int &a=b; a与b同时变化,a=a/2运算也会导致b变化
定义变量前加input,变量会在The Input tab面板显示:
·enum DayofWeek{Sunday,Monday,…,Saturday};
·用系统枚举定义更方便:
static(静态)变量不会被原始的static定义语句重新赋值:
·static int
A=1
除法运算要防止歧义
·double
A=10/3
实数运算要常用到NormalizeDouble(double value , int digits)
条件和循环操作:
·if--- ; if---else--- ; if---else if---…---else ; while ; do-while ;
·条件运算符:(?
·switch操作:
·for(int a=1 ; a!=5 ; a++) {…} //for语句中间判定为true就会执行循环
·break跳出最近的循环;continue结束当前循环,进入下一轮
class类型
·“ . ”表示成员运算符,常用于struct变量、class变量(注意是变量)的成员访问。
·“ :: ”表示域运算符,常用于class类型(注意是类型)的访问,如class类外定义class。
·可以定义构造函数:class A{ public:A (… );…;};// {}中的A与class的一样
·类的继承要用“:”,且要注明继承类型public/protected/private
·类中虚函数(virtual):基类的虚函数可被派生类的同名函数覆盖。若不加virtual,同样也会出现覆盖。
预处理指令:
·#define可直接定义简单函数形式:#define CIRC(Num) 100*Num
·#include <*.mqh> 表示系统Include目录下*.mqh
·#include “*.mqh” 表示该programe所在目录中的*.mqh
发送OrderSend:
·MqltradeRequest request={0};
MqltradeResult result={0};
OrderSend(request,result);
//默认赋值{0}
·MqltradeRequest request;
MqltradeResult result;
ZeroMemory(request); //非常重要
OrderSend(request,result);
OrderSend反馈:
·result.retcode返回代码:TRADE_RETCODE_PLACED(10008) or TRADE_RETCODE_DONE(10009)表示成功
·判定仓位时可以用到:
时间序列、技术指标:
·MqlRates仅用于数组创建,ArraySetAsSeries用于设置序列,CopyRates用于复制数据:
MqlRates bar[]; ArraySetAsSeries(bar, true); CopyRates(_Symbol, _Period, 0, 100, bar);
·CopyTime、CopyOpen…等也需要先创建对应的数组
·iMA( )…等返回的是(int) indicator_handle(指标处理器),再通过CopyBuffer赋值到数组:
int maHandle = iMA(…);
·iCustom返回默认目录下程序文件指标处理器,同样用CopyBuffer。