当前位置:文档之家› EA编程教程第二讲-数据类型

EA编程教程第二讲-数据类型

EA编程教程第一讲-MQL语法什么是MQL?MetaQuotes Language 4 (MQL4)语言是MT4软件为了编写出执行交易策略的内置编程语言。

我们可以通过编写EA(Expert Advisors)来控制MT4客户端按照我们的预先定义好的交易策略来执行外汇交易。

另外,我们可以使用mql来编写技术分析指标,脚本和库。

1)MQL的语法MQL的语法与我们平时见到的C语言语法极其类似,但仍然有以下不一致的地方:一:没有地址运算符。

二:没有do while操作语句三:没有goto语句。

四:没有?::语句。

五:没有结构体。

六:不支持复杂的赋值语句,比如 val1=val2=0; arr[i++]=val; cond=(cnt=OrdersTotal)>0;这种复杂语句不被支持。

2)注释多行注释从/*开始并以*/结束。

注释符不能嵌套,只能头尾各一个。

单行注释符为//,仅注释一行。

我们写程序的时候要养成注释的习惯,可以让程序更好理解,同时MQL编译器自动忽略掉注释的内容。

注释的内容只给我们人看,不是给机器看的。

比如:// 这个是单行注释/* 这个是多行注释int i = 0;注释里面爱写什么都行*/3)标识符标识符是程序里面变量,函数,数据类型的名称,长度不能超过31个字符,标识符可以由数字,大小写字母a到z和A到Z,下划线(_),其中第一个符号不能是数字,并且标识符不能与保留字一样。

什么是保留字请看下文。

4)保留字保留字是MQL语言定义好的单词,每个单词都有这特殊的意义。

保留字如下:数据类型:bool,color,datetime,double,int,string,void存储类型: extern,static操作符:break,case,continue,default,else,for,if,return,switch,while其他:false,true课程简介:什么是MQL?MetaQuotes Language 4 (MQL4)语言是MT4软件为了编写出执行交易策略的内置编程语言。

我们可以通过编写EA(Expert Advisors)来控制MT4客户端按照我们的预先定义好的交易策略来执行外汇交易。

另外,我们可以使用mq本课程知识点:MT4:MT4是一个被广泛使用的外汇交易平台,内含4大类29种常用技术指标。

我认为我们只需要了解这些指标就足够了,如果你精力过剩,也可以研究网上近千种技术指标。

成交量类指标对外汇市场特点影响,判断趋势的效率不高。

EA:EA就是Expert Adviser的缩写,也就是我们俗称的智能交易,我们可以利用MQL语言来编写EA来实现机器自动交易的目的,它是外汇市场是唯一一个可以进行24小时交易的市场,以我们的作息时间来看我们无法做到24小时连续的交易,因此我们错过了很多好的进场机会。

技术分析:所谓技术分析,泛指利用某些历史资料来判断整个汇市或个别外汇币种价格未来变动的方向和程度的各种分析方法。

汇市的基础因素分析和技术分析既相互联系,又相互独立,共同构成对外汇投资的完整的分析。

EA编程教程第二讲-数据类型所有的程序就是对数据进行操作,我们根据不同的需求对数据定义不同的类型,比如数字类型的数据用于操作数组。

价格数据使用浮点型类型数据,MQL本身没有货币类型的数据类型。

不同的数据类型有着不同的处理速度,其中整形处理的最快,double类型的需要特殊处理,所以比整形要慢,string也就是字符串类型处理起来最慢,因为处理字符串需要动态的分配和释放内存,对内存的操作比较频繁。

以下是常用的数据类型1)int,整型,它就是我们常见的整数,入1,-100,908等等。

它的范围为-2147483648 to 2147483647,如果超出这个范围,则会程序会提示异常。

2)bool,布尔型。

它的值只有两个,true或false。

Bool型其实就是个int类型,不过它的值被限定为1:true和0:false。

例如:bool a = true;bool b = 0; //b的值为false3)char, 字符型:它的内部也是int型,范围为0到255。

如果超过这个范围,则程序会提示异常。

我们不直接使用char,而是使用int,如:int a = 'a';int b = 'c';4)string 字符型,字符型可以保存字符串如:string a = "这是一个字符串";5)double 浮点型,用于保存含有小数的数字如:double a = "1.23";double b = "-90.98";6)color 颜色类型,颜色类型的内部实现,其实也是一个int型。

7)datetime 时间类型,时间类型的内部其实也是个int型,它的实际值为1970-1-1到指定时间的秒数。

时间类型的赋值如:datetime d = D'2010.1.1 12:3:4'datetime c = D'2010.2.3 3:56';课程简介:所有的程序就是对数据进行操作,我们根据不同的需求对数据定义不同的类型,比如数字类型的数据用于操作数组。

价格数据使用浮点型类型数据,MQL本身没有货币类型的数据类型。

本课程知识点:MT4:MT4是一个被广泛使用的外汇交易平台,内含4大类29种常用技术指标。

我认为我们只需要了解这些指标就足够了,如果你精力过剩,也可以研究网上近千种技术指标。

成交量类指标对外汇市场特点影响,判断趋势的效率不高。

EA:EA就是Expert Adviser的缩写,也就是我们俗称的智能交易,我们可以利用MQL语言来编写EA来实现机器自动交易的目的,它是外汇市场是唯一一个可以进行24小时交易的市场,以我们的作息时间来看我们无法做到24小时连续的交易,因此我们错过了很多好的进场机会。

技术分析:所谓技术分析,泛指利用某些历史资料来判断整个汇市或个别外汇币种价格未来变动的方向和程度的各种分析方法。

汇市的基础因素分析和技术分析既相互联系,又相互独立,共同构成对外汇投资的完整的分析EA编程教程第三讲-数据类型转换MQL语言目前仅支持隐式转换,MQL目前可以做一下数据类型自动转换。

int(bool, color, datetime) 可转换成 double 或 stringdouble 可转换成 string,除了以上两种转换外,不能进行其他的数据类型转换,如:int i = 1 / 2; //不进行数据转换,注意结果为0,而不是0.5,因为分子和分母都是整形,就不进行转换。

int i = 1 / 2.0; //表达式已经转换成double类型了,算出来的结果为0.5,但是由于变量i定义为int型,所以取整部分0,最终结果还是整数0。

课程简介:MT4是一个被广泛使用的外汇交易平台,内含4大类29种常用技术指标。

我认为我们只需要了解这些指标就足够了,如果你精力过剩,也可以研究网上近千种技术指标。

成交量类指标对外汇市场特点影响,判断趋势的效率不高。

EA:EA就是Expert Adviser的缩写,也就是我们俗称的智能交易,我们可以利用MQL语言来编写EA来实现机器自动交易的目的,它是外汇市场是唯一一个可以进行24小时交易的市场,以我们的作息时间来看我们无法做到24小时连续的交易...本课程知识点:MT4:MT4是一个被广泛使用的外汇交易平台,内含4大类29种常用技术指标。

我认为我们只需要了解这些指标就足够了,如果你精力过剩,也可以研究网上近千种技术指标。

成交量类指标对外汇市场特点影响,判断趋势的效率不高。

EA:EA就是Expert Adviser的缩写,也就是我们俗称的智能交易,我们可以利用MQL语言来编写EA来实现机器自动交易的目的,它是外汇市场是唯一一个可以进行24小时交易的市场,以我们的作息时间来看我们无法做到24小时连续的交易,因此我们错过了很多好的进场机会。

技术分析:所谓技术分析,泛指利用某些历史资料来判断整个汇市或个别外汇币种价格未来变动的方向和程度的各种分析方法。

汇市的基础因素分析和技术分析既相互联系,又相互独立,共同构成对外汇投资的完整的分析。

EA编程中【point的解读】什么是Point?Point是什么?为什么叫Point?为什么要乘以Point?为什么又除以Point?Point的英文解释是“点”MT4系统内定这个Point字代表一个变化的“点”比如:欧元的计算1.9356 / Point = 19356又比如:日元的计算132.66 / Point = 13266注意:Point是会自动变化的好处是当你编写程式的时候不会因为欧元对美元欧元对日元就会出错那么Point有什么用呢?再比如:High的值减Low的值或者关盘减开盘if(Close[0]-Open[0]/Point > 10){buyme();}他的值可能是1.3100-1.3270=-170-170 是没有大过 10因为是下降,所以没有成交交易再比如:macd1_0的值减macd1_1的值再比如:ma1now的值减ma2now的值总之是计算“点”用的Point 没有固定的值碰到 GU 可能是 0.0001碰到 EJ 可能是 0.001使用的目的就是要把他们变成“整数”你可以了解为除 /Point与乘 *point/Point小數點往後移小數變成整數*Point小數點往前移整數變成小數例子:EU小數點有4位EU / Point小數點往后移4位小數變成整數JY小數點有2位JY / Point小數點往后移2位也是小數点變成整數JY 的 high[0]-low[0]=小數点 /Point =整數EU 的 high[0]-low[0]=小數点 /Point =整數例子:JY 的 if( high[0]-low[0] > 10 *Point){buyme()}; JY 的高盘减低盘大过10点就买上EU 的 if (high[0]-low[0]> 10 *Point ){buyme()}; EU 的高盘减低盘大过10点就买上这两个答案一样if (high[0]-low[0]> 10 *Point ){buyme()};if ( (high[0]-low[0]) / Point > 10){buyme()}; 注意:Point 的 P 是大写的Ask 的 A 也是大写的Bid 的 B 要大写颜色Red 的 R 也是大写的如何解读EA告诉我以下怎样解读if(s+b==0&& ma1now>ma2now&& (ma1now-ma2now)/point>10&& macd1now>0&& macd2now/point>10&& close[0]>open[0]&& high[0]-low[0]/point>10 && close[0]-open[0]/point>10 ){buyme();}解读:如果(买卖等于零加上均线1大过均线2加上均线1减均线2大过10点加上 macd1超过零加上 macd2超过10点加上收盘大过开盘加上高减低大过10点加上收盘减开盘大过10点){这样才买上成交}认识Close[0]和Open[0]一个K线的开始叫Open[0]一个K线的结束叫Close[0]上一个的K线的开始叫Open[1] 上一个K线的结束叫Close[1]上上一个的K线的开始叫Open[2]上上一个K线的结束叫Close[2]所以要判断几时的K线就什么号码比如:Open[0] Open[1] Open[2] Open[3] Open[4]比如:Close[0] Close[1] Close[2] Close[3] Close[4] Close[0]>Open[0] 表示上升Close[0<Open[0] 表示下降如果你这样编写if(Close[0]>Open[0]&& Close[1]>Open[1]&& Close[2]>Open[2]&& Close[3]>Open[3]){buyme();}表示后方有3次上升然后这一次也是上升判断就下注上升也就是买上Buy反过来就卖下Sell认识High[0]和Low[0]一个K线的高点叫High[0]一个K线的低点叫Low[0]上一个的K线的高点叫High[1]上一个K线的低点叫Low[1]上上一个的K线的高点叫High[2]上上一个K线的低点叫Low[2]所以要判断几时K线的高低点就什么号码比如:High[0] High[1] High[2] High[3] High[4]比如:Low[0] Low[1] Low[2] Low[3] Low[4]High[0]-Low[0] 表示我们可以得到他们的差点High[1]-Low[1] 表示我们可以得到上一回的差点如果你这样编写if(Close[0]>Open[0]&& Close[1]>Open[1]&& (High[1]-Low[1])/Point>10&& (High[0]-Low[0])/Point>10){buyme();}表示后方有上升超过10点然后这一次是上升超过10点判断就下注上升也就是买上Buy反过来就卖下Sellif(Close[0]<Open[0]&& Close[1]<Open[1]&& (High[1]-Low[1])/Point>10&& (High[0]-Low[0])/Point>10){sellme();}iCustom()函数在外汇EA中的应用在mt中编写指标或EA时,iCustom()是一个非常有用的函数,它的功能是调用客户自己编写的的指标,并输出相应的指标值。

相关主题