1、EA编程实训课程网摘EA编程实训课程(网摘) EA编程实训课程(网摘)第一课:查看基本信息1.1课程目标:不同平台、不同货币对的交易规则是不同的ECN平台上的差点是浮动的熟悉MQL4四种信息的输出方式:1、在“屏幕左上角”显示: Comment2、在智能交易信息栏进行“输出”显示; Print3、用“信息框”进行显示: Alart4、用“定位写出”函数进行显示: iDisplayInfo1.2实训内容:编写EA程序,用Comment()命令分行显示:帐户名称、帐户余额、帐户可用保证金、帐户已用保证金、当前货币对;帐户杠杆、点差、停止水平、隔夜利息(分买卖)、1手保证金、1点价值;使用Comme
2、nt函数在主图右上角显示:Ask、Bid价;要求:显示字符颜色、大小、字体、位置可调。使用自定义函数iDisplayInfo()在主图右下角显示1根K线的开盘价、最高价、最低价、收盘价。当前Ask价高于K线的最高价,或低于最低价时,用Alart弹出报警信息框。编写自定义函数iAdd(),输入两个参数为整数型数字,输出两个参数相加的结果,在图中显示iAdd调用结果。1.3参考资料:iDispalyInfo(定位写出)是自定义函数用于在屏幕上显示相关信息,由于其位置、颜色、大小、字体可调而被经常使用。例:在屏幕上显示标签:输入参数:标签名称 string LableName文本内容 string
3、LableDoc显示位置 int Corner标签X坐标 int LableX标签Y坐标 int LableY文本字号 int DocSize文本字体 int DocStyle文本颜色 int DocColor输出参数:在指定的屏幕位置(X,Y),按照指定的字号、字体、颜色,显示指定的文本。算法说明:Void 定位写出(标签名称,文本内容,显示位置,X坐标,Y坐标,字号、字体、颜色)iDisPalyInfo (string LableName,string LableDoc,int Corner,int LabltX,int LableY,int Docsize,int DocStyle,in
4、t Doccolor)创建对象(标签名称,对象类型,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
5、(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号字体类型:宋体文本颜色:红色自定义函数参考代码:int iADD(int a,int b)Return(a+b);1.4思考题:1、按照自己的理解,列表详细说明MarkteInfo()函数中2
6、8个信息参数(如MODE_LOW、MODE_HIGH等)含义2、按照自己的理解,列表详细说明Account开头的16个帐户函数(AccountBalance、AccountCredit等)含义3、将已经编制好的EA分别加载到MM平台和ECN平台,对比查看各项市场参数,说出两者不同之处。4、将已经编制好的EA分别加载到同一平台不同货币对图表中,对比查看各项市场参数,说出两者不同之处。5、详细说明滑点(Spread)及停止水平(StopLevel)在订单操作中的作用。6、找到帮助文件中的字符颜色部分,复制粘贴颜色列表。 第二课 K线图与时间序列2.1课程目标:K线时间是正整数,与一般的时间日期格式
7、不同,需要进行相互转换。时间参数的转换K线序列的定义2.2实训内容:编写EA,显示在当前K线以及第5根K线的时间参数,传统的时间日期格式,显示图表中的K线总数在以上基础上加“时间到期”限制,当时间超过2012-11-1时,显示“期限已到”在上述基础上,添加两个EA的有效工作时段:2:00-8:00,16:00-21:304个起止时间采用exturn定义预设。另写EA,计算并显示第5到第20间15根K线的最高价、最低价,并显示最高价、最低价在K线上的出现位置(K线序号)2.3参考资料:帮助文件中关于“时间和日期函数”章节EA有效工作时间段可以编写一个自定义函数以便调用,这个函数的参数为:开始时间
8、(hh:mm)、结束时间(hh:mm),输出参数为逻辑型(pool),真(true)为有效,假(false)为无效。2.4思考题:1、日期时间返回是一个正整数,这个数字是怎么计算的?计量单位是什么?2、当前时间函数TimeCurrent()返回是哪里的时间?本地计算机时间怎样获取?3、如何将时间2011.1.1转换成计算机能识别的正整数?4、在M1图表中仔细观察图表中K线总数,什么时候发生变化?5、按照自己的理解,详细列表说明帮助文档中关于时间和日期的18个函数的含义。 第三课 开仓与平仓3.1课程目标:掌握开仓、平仓命令的使用学会修改订单的止损、止赢价学会调用默认、自定义指标学会在图中标注箭
9、头符号学会指标两线交叉的应用3.2实训内容:编写EA,调用默认指标Moving Average(按照默认参数),当前价高于MA时,在图中标注绿色向上箭头,表示出现“买入”信号;当前价低于MA时,在图中标注红色向下箭头,表示出现“卖出”信号。在以上基础上,根据信号执行开仓动作,按实时报价开出1张买入(卖出)0.1手订单,并控制好一根K只操作1次(因为1根K线中会产生多次交易信号,这样要求是避免频繁开仓)在持有订单的前提下,修改订单的止损、止赢价,止损为120点,止赢为100点。当有持仓单时,且市场出现了与持仓单方向相反的信号,该持仓单平仓。在以上基础上,修改默认指标为自定义指标中的Moving
10、Average(按照默认参数),调用该自定义指标的数据,发出交易信号。在上述基础上,增加一个MA指标,平均周期为26,第一个默认周期的13。当MA13上穿MA26时,发出买入信号;当MA13下穿MA26时,发出卖出信号。另写EA,分别执行挂单交易的四种模式。3.3参考资料:教材中默认指标的章节、调用自定义指标(iCustom)的使用方法。编写“交叉”自定义函数,输入参数为快速线当前价、快速线前1K线价、慢速线当前价、慢速线前1K线价,输出参数为无信号“N/A”,上穿信号“Upcross”,下穿信号“Downcross”。iDrawSign 是一个用于标注符号和画线的自定义函数,在编程中经常用于
11、显示交易信号Void iDawSign(string myTapy,int myBarPos,doubl myPrice,color myColor,int mySymbol)If(myType=”Dot”)ObjectCreate(myType+TimeToStr(TimemyBarPos),OBJ_ARROW,0,TimemyBarPos,myPrice);ObjectSet(myType+TimeToStr(TimemyBarPos),OBJPROP_COLOR,myCOLOR);ObjectSet(myType+TimeToStr(TimemyBarPos),OBJPROP_ARROW
12、CODE,mySymbol);If(myType=”HLine”)ObjectCreate(myType+TimeToStr(TimemyBarPos),OBJ_HLine,0,TimemyBarPos,myPrice);ObjectSet(myType+TimeToStr(TimemyBarPos),OBJPROP_COLOR,myCOLOR);If(myType=”VLine”)ObjectCreate(myType+TimeToStr(TimemyBarPos),OBJ_VLine,0,TimemyBarPos,myPrice);ObjectSet(myType+TimeToStr(Ti
13、memyBarPos),OBJPROP_COLOR,myCOLOR);iCrossSignal是一个返回两线交叉信号的自定义函数,在程序中判断指标快慢上穿(金叉)、下穿(死叉)的状况。3.4思考题:1、为什么通常会建议开仓时不做止损、止赢设置,而要等到开仓后通过修改订单的方式来设置?2、挂单有4种模式:BuyLimt、BuyStop、SellLimt、SellStop,详细解释这些模式的应用条件,重点说明停止水平(StopLevel)规则3、详细阅读教材关于默认指标的章节,了解各项常用指标的调用语句4、详细阅读教材关于自定义指标命令(iCustom)的使用方法5、用自定义函数标注“*”号6、找
14、到帮助文件中特殊字符集部分,复制粘贴特殊字符与列表。第四课 移动止损4.1课程目标移动止损(TrallingLoss)是在持仓单盈利时实施一种保护利润的方法。移动止损一般用“点数”表达,当前订单盈利,且价格区间大于等于移动止损点时,修改订单的止损价位,之后再与持仓单的止损价位比较价格区间,超过移动止损1次就修改价位1次。通常不使用“移动止盈”概念。掌握持仓单操作方法4.2实训内容在上一章程序的基础上完成以下任务。用OrderSelect命令选中持仓单,在图表中显示持仓单单号、类型、开仓量、开仓价、止损价、止盈价。预设移动止损(TrallingLoss)参数为40,编制移动止损自定义函数,在程序
15、中调用。4.3参考资料ITrallingLoss是一个实现移动止损的自定义函数,输入参数为目标订单号和移动止损点数。这是一个常用的自定义函数。Void iTrallingLoss(int myTicket,int myTrallingLoss)If(!OrderSelect(myTicket,SELECT_BY_TICKET,MODE_TRADES)Return(1);/选定单出错If(OrderProfit()<0) return(2);/亏损订单不修改Double myBasePrice;/定义基本价变量If(OrderStopLoss()=0)/如果没有止损价MyBasePrice=OrderOpenPrice();ElseMyBasePrice=OrderStopLoss();/有止损价Double myTLPrice;/定义止损价变量If(OrderType()=OP_BUY)/买入订单
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1