EA编程实训课程网摘Word下载.docx
《EA编程实训课程网摘Word下载.docx》由会员分享,可在线阅读,更多相关《EA编程实训课程网摘Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
帐户名称、帐户余额、帐户可用保证金、帐户已用保证金、当前货币对;
帐户杠杆、点差、停止水平、隔夜利息(分买卖)、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-右上角,2-左下角,3-右下角)
标签横坐标X:
1
标签纵坐标Y:
文字大小:
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);
If(myType=”VLine”)
ObjectCreate(myType+TimeToStr(Time[myBarPos]),OBJ_VLine,0,Time[myBarPos],myPrice);
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()&
lt;
0)return
(2);
//亏损订单不修改
DoublemyBasePrice;
//定义基本价变量
If(OrderStopLoss()==0)//如果没有止损价
MyBasePrice=OrderOpenPrice();
Else
MyBasePrice=OrderStopLoss();
//有止损价
DoublemyTLPrice;
//定义止损价变量
If(OrderType()==OP_BUY)//买入订单