EA编程实训课程网摘.docx

上传人:b****1 文档编号:1636975 上传时间:2022-10-23 格式:DOCX 页数:13 大小:21.18KB
下载 相关 举报
EA编程实训课程网摘.docx_第1页
第1页 / 共13页
EA编程实训课程网摘.docx_第2页
第2页 / 共13页
EA编程实训课程网摘.docx_第3页
第3页 / 共13页
EA编程实训课程网摘.docx_第4页
第4页 / 共13页
EA编程实训课程网摘.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

EA编程实训课程网摘.docx

《EA编程实训课程网摘.docx》由会员分享,可在线阅读,更多相关《EA编程实训课程网摘.docx(13页珍藏版)》请在冰豆网上搜索。

EA编程实训课程网摘.docx

EA编程实训课程网摘

EA编程实训课程(网摘)

EA编程实训课程(网摘)

第一课:

查看基本信息

1.1课程目标:

不同平台、不同货币对的交易规则是不同的

ECN平台上的差点是浮动的

熟悉MQL4四种信息的输出方式:

1、在“屏幕左上角”显示:

Comment

2、在智能交易信息栏进行“输出”显示;Print

3、用“信息框”进行显示:

Alart

4、用“定位写出”函数进行显示:

iDisplayInfo

1.2实训内容:

编写EA程序,用Comment()命令分行显示:

帐户名称、帐户余额、帐户可用保证金、帐户已用保证金、当前货币对;

帐户杠杆、点差、停止水平、隔夜利息(分买卖)、1手保证金、1点价值;

使用Comment函数在主图右上角显示:

Ask、Bid价;

要求:

显示字符颜色、大小、字体、位置可调。

使用自定义函数iDisplayInfo()在主图右下角显示1根K线的开盘价、最高价、最低价、收盘价。

当前Ask价高于K线的最高价,或低于最低价时,用Alart弹出报警信息框。

编写自定义函数iAdd(),输入两个参数为整数型数字,输出两个参数相加的结果,在图中显示iAdd调用结果。

1.3参考资料:

iDispalyInfo(定位写出)是自定义函数用于在屏幕上显示相关信息,由于其位置、颜色、大小、字体可调而被经常使用。

例:

在屏幕上显示标签:

输入参数:

标签名称stringLableName

文本内容stringLableDoc

显示位置intCorner

标签X坐标intLableX

标签Y坐标intLableY

文本字号intDocSize

文本字体intDocStyle

文本颜色intDocColor

输出参数:

在指定的屏幕位置(X,Y),按照指定的字号、字体、颜色,显示指定的文本。

算法说明:

Void定位写出(标签名称,文本内容,显示位置,X坐标,Y坐标,字号、字体、颜色)

iDisPalyInfo(stringLableName,stringLableDoc,intCorner,intLabltX,intLableY,intDocsize,intDocStyle,intDoccolor)

{

创建对象(标签名称,对象类型,0,0,0)

ObjectCreate(LableName,OBJ_Lable,0,0,0)

文本属性(标签名称,文本内容,字号,字体,颜色)

ObjectSetText(LableName,LableDoc,DocSize,DocStyle,DocColor)

对象属性(标签名称,显示位置,位置)

ObjectSet(LableName,OBJPROP_CORNER,Corner)

对象属性(标签名称,X坐标,X)

Opjectset(LableName,OBJPROP_XDISTANCE,LableX)

对象属性(标签名称,Y坐标,Y)

OpjectSet(LableName,OBJPROP_YDISTANCE,LableY)

返回(0)

}

程序中调用举例说明:

定位写出("标注1","当前时间=25",0,1,1,8,"宋体",红色)

iDisStyleInfo("标注1","当前时间=25",0,1,1,8,"宋体",红色)

字符标签名:

标注1

显示内容:

当前时间=25

显示位置:

在右上角(其中:

0-左上角,1-右上角,2-左下角,3-右下角)

标签横坐标X:

1

标签纵坐标Y:

1

文字大小:

8号

字体类型:

宋体

文本颜色:

红色

自定义函数参考代码:

intiADD(inta,intb)

{

Return(a+b);

}

1.4思考题:

1、按照自己的理解,列表详细说明MarkteInfo()函数中28个信息参数(如MODE_LOW、MODE_HIGH等)含义

2、按照自己的理解,列表详细说明Account开头的16个帐户函数(AccountBalance、AccountCredit等)含义

3、将已经编制好的EA分别加载到MM平台和ECN平台,对比查看各项市场参数,说出两者不同之处。

4、将已经编制好的EA分别加载到同一平台不同货币对图表中,对比查看各项市场参数,说出两者不同之处。

5、详细说明滑点(Spread)及停止水平(StopLevel)在订单操作中的作用。

6、找到帮助文件中的字符颜色部分,复制粘贴颜色列表。

第二课K线图与时间序列

2.1课程目标:

K线时间是正整数,与一般的时间日期格式不同,需要进行相互转换。

时间参数的转换

K线序列的定义

2.2实训内容:

编写EA,显示在当前K线以及第5根K线的时间参数,传统的时间日期格式,显示图表中的K线总数

在以上基础上加“时间到期”限制,当时间超过2012-11-1时,显示“期限已到”

在上述基础上,添加两个EA的有效工作时段:

2:

00-8:

00,16:

00-21:

30

4个起止时间采用exturn定义预设。

另写EA,计算并显示第5到第20间15根K线的最高价、最低价,并显示最高价、最低价在K线上的出现位置(K线序号)

2.3参考资料:

帮助文件中关于“时间和日期函数”章节

EA有效工作时间段可以编写一个自定义函数以便调用,这个函数的参数为:

开始时间(hh:

mm)、结束时间(hh:

mm),输出参数为逻辑型(pool),真(true)为有效,假(false)为无效。

2.4思考题:

1、日期时间返回是一个正整数,这个数字是怎么计算的?

计量单位是什么?

2、当前时间函数TimeCurrent()返回是哪里的时间?

本地计算机时间怎样获取?

3、如何将时间2011.1.1转换成计算机能识别的正整数?

4、在M1图表中仔细观察图表中K线总数,什么时候发生变化?

5、按照自己的理解,详细列表说明帮助文档中关于时间和日期的18个函数的含义。

第三课开仓与平仓

3.1课程目标:

掌握开仓、平仓命令的使用

学会修改订单的止损、止赢价

学会调用默认、自定义指标

学会在图中标注箭头符号

学会指标两线交叉的应用

3.2实训内容:

编写EA,调用默认指标MovingAverage(按照默认参数),当前价高于MA时,在图中标注绿色向上箭头,表示出现“买入”信号;当前价低于MA时,在图中标注红色向下箭头,表示出现“卖出”信号。

在以上基础上,根据信号执行开仓动作,按实时报价开出1张买入(卖出)0.1手订单,并控制好一根K只操作1次(因为1根K线中会产生多次交易信号,这样要求是避免频繁开仓)

在持有订单的前提下,修改订单的止损、止赢价,止损为120点,止赢为100点。

当有持仓单时,且市场出现了与持仓单方向相反的信号,该持仓单平仓。

在以上基础上,修改默认指标为自定义指标中的MovingAverage(按照默认参数),调用该自定义指标的数据,发出交易信号。

在上述基础上,增加一个MA指标,平均周期为26,第一个默认周期的13。

当MA13上穿MA26时,发出买入信号;当MA13下穿MA26时,发出卖出信号。

另写EA,分别执行挂单交易的四种模式。

3.3参考资料:

教材中默认指标的章节、调用自定义指标(iCustom)的使用方法。

编写“交叉”自定义函数,输入参数为快速线当前价、快速线前1K线价、慢速线当前价、慢速线前1K线价,输出参数为无信号“N/A”,上穿信号“Upcross”,下穿信号“Downcross”。

iDrawSign是一个用于标注符号和画线的自定义函数,在编程中经常用于显示交易信号

VoidiDawSign(stringmyTapy,intmyBarPos,doublmyPrice,colormyColor,intmySymbol)

{

If(myType=”Dot”)

{

ObjectCreate(myType+TimeToStr(Time[myBarPos]),OBJ_ARROW,0,Time[myBarPos],myPrice);

ObjectSet(myType+TimeToStr(Time[myBarPos]),OBJPROP_COLOR,myCOLOR);

ObjectSet(myType+TimeToStr(Time[myBarPos]),OBJPROP_ARROWCODE,mySymbol);

}

If(myType=”HLine”)

{

ObjectCreate(myType+TimeToStr(Time[myBarPos]),OBJ_HLine,0,Time[myBarPos],myPrice);

ObjectSet(myType+TimeToStr(Time[myBarPos]),OBJPROP_COLOR,myCOLOR);

}

If(myType=”VLine”)

{

ObjectCreate(myType+TimeToStr(Time[myBarPos]),OBJ_VLine,0,Time[myBarPos],myPrice);

ObjectSet(myType+TimeToStr(Time[myBarPos]),OBJPROP_COLOR,myCOLOR);

}

}

iCrossSignal是一个返回两线交叉信号的自定义函数,在程序中判断指标快慢上穿(金叉)、下穿(死叉)的状况。

3.4思考题:

1、为什么通常会建议开仓时不做止损、止赢设置,而要等到开仓后通过修改订单的方式来设置?

2、挂单有4种模式:

BuyLimt、BuyStop、SellLimt、SellStop,详细解释这些模式的应用条件,重点说明停止水平(StopLevel)规则

3、详细阅读教材关于默认指标的章节,了解各项常用指标的调用语句

4、详细阅读教材关于自定义指标命令(iCustom)的使用方法

5、用自定义函数标注“*”号

6、找到帮助文件中特殊字符集部分,复制粘贴特殊字符与列表。

第四课移动止损

4.1课程目标

移动止损(TrallingLoss)是在持仓单盈利时实施一种保护利润的方法。

移动止损一般用“点数”表达,当前订单盈利,且价格区间大于等于移动止损点时,修改订单的止损价位,之后再与持仓单的止损价位比较价格区间,超过移动止损1次就修改价位1次。

通常不使用“移动止盈”概念。

掌握持仓单操作方法

4.2实训内容

在上一章程序的基础上完成以下任务。

用OrderSelect命令选中持仓单,在图表中显示持仓单单号、类型、开仓量、开仓价、止损价、止盈价。

预设移动止损(TrallingLoss)参数为40,编制移动止损自定义函数,在程序中调用。

4.3参考资料

ITrallingLoss是一个实现移动止损的自定义函数,输入参数为目标订单号和移动止损点数。

这是一个常用的自定义函数。

VoidiTrallingLoss(intmyTicket,intmyTrallingLoss)

{

If(!

OrderSelect(myTicket,SELECT_BY_TICKET,MODE_TRADES))

Return

(1);//选定单出错

If(OrderProfit()<0)return

(2);//亏损订单不修改

DoublemyBasePrice;//定义基本价变量

If(OrderStopLoss()==0)//如果没有止损价

MyBasePrice=OrderOpenPrice();

Else

MyBasePrice=OrderStopLoss();//有止损价

DoublemyTLPrice;//定义止损价变量

If(OrderType()==OP_BUY)//买入订单

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 销售营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1