MT4MT5外汇EA编程教程大全之交易函数复习课程_第1页
MT4MT5外汇EA编程教程大全之交易函数复习课程_第2页
MT4MT5外汇EA编程教程大全之交易函数复习课程_第3页
MT4MT5外汇EA编程教程大全之交易函数复习课程_第4页
MT4MT5外汇EA编程教程大全之交易函数复习课程_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Good is good, but better carries it.精益求精,善益求善。MT4MT5外汇EA编程教程大全之交易函数MT4MT5外汇EA编程教程大全之交易函数(三)从自定义指标中不能调用OrderSend(),OrderClose,OrderCloseBy,OrderDelete和OrderModify交易函数。OrderCloseOrderCloseByOrderClosePriceOrderCloseTimeOrderCommentOrderCommissionOrderDeleteOrderExpirationOrderLotsOrderMagicNumberOrder

2、ModifyOrderOpenPriceOrderOpenTimeOrderPrintOrderProfitOrderSelectOrderSendOrdersHistoryTotalOrderStopLossOrdersTotalOrderSwapOrderSymbolOrderTakeProfitOrderTicketOrderTypeboolOrderClose(intticket,doublelots,doubleprice,intslippage,voidColor)对定单进行平仓操作。如果函数成功,返回的值是真实的。如果函数失败,返回的值是假的。获得详细错误信息,请查看GetLas

3、tError()函数。参量:ticket-定单编号。lots-手数。price-收盘价格。slip最高划点数。Color-图表中标记颜色。如果参量丢失,CLR_NONE值将不会在图表中画出。示例:if(iRSI(NULL,0,14,PRICE_CLOSE,0)75)OrderClose(order_id,1,Ask,3,Red);return(0);boolOrderCloseBy(intticket,intopposite,voidColor)用相反定单对打开仓位进行平仓操作。如果函数成功,返回的值是真实的。如果函数失败,返回的值是假的。获得详细错误信息,请查看GetLastError()函

4、数。参量:ticket-定单编号。opposite-相对定单编号Color-图表中标记颜色。如果参量丢失,CLR_NONE值将不会在图表中画出示例:if(iRSI(NULL,0,14,PRICE_CLOSE,0)75)OrderCloseBy(order_id,opposite_id);return(0);doubleOrderClosePrice()对于当前选择定单返回收盘价格。注解:定单必须用OrderSelect()函数提前选定。示例:if(OrderSelect(ticket,SELECT_BY_POS)=true)Print(对于定单,定单编号=,OrderClosePrice()的

5、收盘价格);elsePrint(OrderSelect失败错误代码是,GetLastError();datetimeOrderCloseTime()对于当前选择定单返回平仓时间。如果定单时间不是0,所选定单会从账户历史重新尝试。开仓和挂单交易平仓时间必须等于0。注解:定单必须用OrderSelect()函数提前选定。示例:if(OrderSelect(10,SELECT_BY_POS,MODE_HISTORY)=true)datetimectm=OrderOpenTime();if(ctm0)Print(定单10开仓时间,ctm);ctm=OrderCloseTime();if(ctm0)Pr

6、int(定单10平仓时间,ctm);elsePrint(OrderSelect失败错误代码是,GetLastError();stringOrderComment()返回定单的注释。注解:定单必须用OrderSelect()函数提前选定。示例:stringcomment;if(OrderSelect(10,SELECT_BY_TICKET)=false)Print(OrderSelect失败错误代码是,GetLastError();return(0);comment=OrderComment();/.doubleOrderCommission()返回定单的佣金数。注解:定单必须用OrderSel

7、ect()函数提前选定。示例:if(OrderSelect(10,SELECT_BY_POS)=true)Print(定单10佣金,OrderCommission();elsePrint(OrderSelect失败错误代码是,GetLastError();boolOrderDelete(intticket,voidColor)删除先前打开挂单。如果函数成功,返回的值是真实的。如果函数失败,返回的值是假的。获得详细错误信息,请查看GetLastError()函数。参量:ticket-定单编号。Color-图表中标记颜色。如果参量丢失,CLR_NONE值将不会在图表中画出。示例:if(Askvar

8、1)OrderDelete(order_ticket);return(0);datetimeOrderExpiration()返回挂单的有效日期。注解:定单必须用OrderSelect()函数提前选定。示例:if(OrderSelect(10,SELECT_BY_TICKET)=true)Print(定单#10有效日期为,OrderExpiration();elsePrint(OrderSelect返回的,GetLastError()错误);doubleOrderLots()返回选定定单的手数。注解:定单必须用OrderSelect()函数提前选定。示例:if(OrderSelect(10,S

9、ELECT_BY_POS)=true)Print(定单10手数,OrderLots();elsePrint(OrderSelect返回的,GetLastError()错误);intOrderMagicNumber()返回选定订单的指定编号注解:定单必须用OrderSelect()函数提前选定。示例:if(OrderSelect(10,SELECT_BY_POS)=true)Print(定单10指定编号,OrderMagicNumber();elsePrint(OrderSelect返回的,GetLastError()错误);boolOrderModify(intticket,doublepri

10、ce,doublestoploss,doubletakeprofit,datetimeexpiration,voidarrow_color)对于先前的开仓或挂单进行特性修改。如果函数成功,返回的值为TRUE。如果函数失败,返回的值为FALSE。获得详细的错误信息,查看GetLastError()函数。注解:开价格和有效时间的改变只对挂单而言。如果未改变的值作为函数参量通过,将会生成错误1(ERR_NO_RESULT)。在一些服务器中挂单的有效时间会被隐藏。这种情况下,当一个非零值在有效参量被指定时,将生成错误147(ERR_TRADE_EXPIRATION_DENIED)。参量:ticket-

11、定单编号。price-收盘价格stoploss-新止损水平。takeprofit-新赢利水平。expiration-挂单有效时间。arrow_color-在图表中允许对止损/赢利颜色进行修改。如果参量丢失或存在CLR_NONE值,在图表中将不会显示。示例:if(TrailingStop0)OrderSelect(12345,SELECT_BY_TICKET);if(Bid-OrderOpenPrice()Point*TrailingStop)if(OrderStopLoss()Bid-Point*TrailingStop)OrderModify(OrderTicket(),OrderOpenP

12、rice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Blue);return(0);doubleOrderOpenPrice()对于当前选择定单返回开价格。定单必须由OrderSelect()函数首先选定。示例:if(OrderSelect(10,SELECT_BY_POS)=true)Print(对于定单10开价格,OrderOpenPrice();elsePrint(OrderSelect返回错误,GetLastError();datetimeOrderOpenTime()对于当前选择定单返回买入时间。注解:定单必须用OrderSelect(

13、)函数提前选定。示例:if(OrderSelect(10,SELECT_BY_POS)=true)Print(定单10买入时间,OrderOpenTime();elsePrint(OrderSelect返回的错误,GetLastError();voidOrderPrint()按照以下形式打印选择定单信息:定单编号;买入时间;交易业务;手数总数;开盘价格;止损;赢利;平仓时间;收盘价格;佣金;掉期;盈利;注释;指定编码;挂单有效日期定单必须用OrderSelect()函数提前选定。示例:if(OrderSelect(10,SELECT_BY_TICKET)=true)OrderPrint();e

14、lsePrint(OrderSelect失败错误代码是,GetLastError();doubleOrderProfit()对于选择定单返回净盈利值(除掉期和佣金外)。对于开仓位当前不真实盈利。对于平仓为固定盈利。对于当前选择定单返回盈利。注解:定单必须用OrderSelect()函数提前选定。示例:if(OrderSelect(10,SELECT_BY_POS)=true)Print(定单10盈利,OrderProfit();elsePrint(OrderSelect返回的错误,GetLastError();boolOrderSelect(intindex,intselect,voidpoo

15、l)函数选择定单。如果函数成功,返回的值为TRUE。如果函数失败,返回的值为FALSE。获得详细错误信息,请查看GetLastError()函数。如果定单编号被选定,此pool参量被认知。此定单编号为唯一识别符。找出所选定单的列表,它的平仓时间必须进行分析。如果定单卖出时间为零,开单和挂单将从终端位置列表打开。可以从定单类型区别开挂单和开单。如果定单的卖出时间不等于0,平单和删除定单是在终端历史中被选择。他们同样可以区分删除定单是在终端历史中被选择。他们同样可以区分定单类型。参量:index-定单索引。select-选定模式。可以为以下的任意值:SELECT_BY_POSSELECT_BY_T

16、ICKET。pool-可选择定单索引。当选择SELECT_BY_POS参量时使用。可以为以下的任意值:MODE_TRADES(default)-来自交易的定单(开单和挂单),MODE_HISTORY-来自历史的定单(平仓和取消定单)。示例:if(OrderSelect(12470,SELECT_BY_TICKET)=true)Print(定单#12470开价格,OrderOpenPrice();Print(定单#12470收盘价格,OrderClosePrice();elsePrint(OrderSelect返回的错误,GetLastError();intOrderSend(stringsym

17、bol,intcmd,doublevolume,doubleprice,intslippage,doublestoploss,doubletakeprofit,voidcomment,voidmagic,voidexpiration,voidarrow_color)这个功能主要应用于开仓位置和挂单交易.由交易服务器返回定单的定单编号或者-1,说明是错误的。获得另外的错误信息,查看GetLastError()函数。注解:市场定单的开启(OP_SELLorOP_BUY),只有最后的卖价格或买价格可以应用到开价格中.如果执行当前带有不同证券的业务,必须使用带有MODE_BID或MODE_ASK参量的

18、MarketInfo()函数获得.预测或是不标准的价格不可用.如果没有要求重新开价格或者没有按照小数点后的数字正常化,错误129(ERR_INVALID_PRICE)将会生成.如果请求开价格的日期完全过期,错误138(ERR_REQUOTE)将会生成.如果请求的价格是过时的,仓位只能够在当前价格位打开/只有当前价格位在price+-slippage范围内.止损和赢利水平线不能够关闭市场.最小距离的终止水平点可以使用MarketInfo()函数得到MODE_STOPLEVEL参量。在错误或水平位不正常停止情况下,错误130(ERR_INVALID_STOPS)将会生成.在挂单的位置,开价格不能够

19、终止市场活动.最小距离的终止水平点可以使用MarketInfo()函数得到MODE_STOPLEVEL参量。在错误或水平位不正常停止情况下,错误130(ERR_INVALID_STOPS)将会生成.挂单交易的期限在一些服务器上禁止应用。这种情况下,一个特殊的非零值的参量将会产生,错误147(ERR_TRADE_EXPIRATION_DENIED)将会生成。在一些服务器上,开仓和挂单交易的总数会被限定。如果超出限定,则不能开启新仓位。这样交易服务器返回到错误148(ERR_TRADE_TOO_MANY_ORDERS)。参量:symbol-交易货币对。cmd-购买方式。可以是购买方式列举的任意值。

20、volume-购买手数。price-收盘价格。slip最大允许滑点数。stoploss-止损水平。takeprofit-赢利水平。comment-注解文本。注解的最后部分可以由服务器改变。magic-定单指定码。可以作为用户指定识别码使用。expiration-定单有效时间(只限挂单)。arrow_color-图表上箭头颜色。如果参量丢失或存在CLR_NONE价格值不会在图表中画出。示例:intticket;if(iRSI(NULL,0,14,PRICE_CLOSE,0)25)ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Ask-25*Point,Ask+2

21、5*Point,Myorder#2,16384,0,Green);if(ticket0)Print(OrderSend失败错误#,GetLastError();return(0);intOrdersHistoryTotal()在账户历史返回关闭定单数加载进入终端。历史列表的大小取决于终端的帐户历史表格的当前的设置.示例:/来自交易历史的恢复信息inti,hstTotal=OrdersHistoryTotal();for(i=0;ihstTotal;i+)/检查选择结果if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)=false)Print(带有(,Get

22、LastError(),)错误的历史失败通道);break;/定单的一些工作doubleOrderStopLoss()对于当前选择定单返回止损值。注解:定单必须用OrderSelect()函数提前选定。示例:if(OrderSelect(ticket,SELECT_BY_POS)=true)Print(对于10止损值,OrderStopLoss();elsePrint(OrderSelect失败错误代码是,GetLastError();intOrdersTotal()返回市场和挂单的总数示例:inthandle=FileOpen(OrdersReport.csv,FILE_WRITE|FILE

23、_CSV,t);if(handle0)return(0);/写标题FileWrite(handle,#,开价格,买入时间,货币对,手数);inttotal=OrdersTotal();/编写定单命令for(intpos=0;postotal;pos+)if(OrderSelect(pos,SELECT_BY_POS)=false)continue;FileWrite(handle,OrderTicket(),OrderOpenPrice(),OrderOpenTime(),OrderSymbol(),OrderLots();FileClose(handle);doubleOrderSwap()对于当前选择定单返回掉期值。注解:定单必须用OrderSelect()函数提前选定。示例:if(OrderSelect(order_id,SELECT_BY_TICKET)=true)Print(对于定单#掉期,order_id,OrderSwap();elsePrint(OrderSelect失败错误代码是,GetLastError();stringOrderSymbol()对于选择定单返回定单货币对值。注解:定单必须用Orde

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论