今天来介绍下OrderSend()函数。这个函数是用来发送订单的。先看下函数定义。
| int OrderSend( | string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
|
去掉参数说明既是调用方法。
| OrderSend( | symbol,cmd,volume, price,slippage, stoploss, takeprofit, comment=NULL, magic=0, expiration=0, arrow_color=CLR_NONE)
|
首先
int OrderSend()的定义规定了这个函数的返回值是个整型量。当正确的被调用(所谓的正确被调用,就是定单发送成功被服务器接受也就是语法和参数都没有问题)则返回订单的编号。如果订单发送不成功则返回一个小于0的数。这也就是为什么有些EA会将这个函数返回值赋给一个整型变量。通过判断整型变量的值来来判断是否下单成功。
接下来一个的说明个个实参的用法。
1、symbol这个参数是一个字符串参量用来表明要对那个货币品种实施下单操作。可以用
Symbol()函数或NULL常量来表示。当然也可以用具体的字符串例如:"EUR/USD"这样的具体标示。
2、cmd这个参数是一个整型变量。用来标记订单的类型。因此它有6个可选参数。可以用下面的内置常量也可以用0~5的整数实现输入。内置常量如下。
常量1:OP_BUY 其值为 0 现价买单
常量2: OP_SELL 其值为 1 现价卖单
常量3 :OP_BUYLIMIT 其值为 2 limit买单
常量4 :OP_SELLLIMIT 其值为 3 limit卖单
常量5 :OP_BUYSTOP 其值为 4 stop 买单
常量6:OP_SELLSTOP 其值为 5 stop卖单
3、volume这个参数是一个双精度浮点数,用来标记订单舱位的大小。这个数值必须大于等于平台的最小开仓量,小于等于平台的最大开仓量。并且是最小开仓量的整数倍。有些平台最小开仓是0.1手而有的是0.01手。一般平台的最大开仓量都是50手。
4、price这个参数是一个双精度浮点数,用来表示订单的开仓价格。这个参数要注意。有些人写的EA不能成交就是这个价格有问题。对于即时单买入这个价格必须用
Ask变量的值对于卖出这个价格必须用
Bid变量的值搞反了就不能成交了。对于挂单,也要安排好这个价格。一定要算好这个价格与现价之间的关系。例如limit买单这个价格要小于
Ask的值
5、slippage这个参数是个整型参数。用来表示滑点的限制我常用3,如果是0 标示非
price价格不成交。这个参数个人认为只是对于现价单有影响,对于挂单似乎没有影响。因为现价单才存在发送订单后几个变化的问题。
6、stoploss这个参数是双精度浮点数。用来设置订单的止损价格,
尤其要注意这个一个价格。0表示不设置止损。这个参数要处理好点数和价格的运算。如果输入的止损是个点数就要和开仓价格
price进行运算。并用乘以
Point内置变量来取点数。(切忌不要用0.0001来运算,因为有些货币的小数位不是4位的。比如日元差盘)。
7、 takeprofit这个参数也是双精度浮点数。用来设置订单的止赢价格。特点同
stoploss。
8、comment这个参数是个字符串参数。用来输入订单的描述语句。可以用NULL或者" "表示什么都不输入。
9、magic这个参数是个整型量。用来标记特定的订单。这个参数一般不为0。因为0的意思是手动订单。我比较喜欢这个参数,因为这个参数可以区分订单。不同的EA可以设置不停的
magic值,这样即使挂几个EA也不会互相干扰。而且在在后续处理的时候可以通过这个参数来查找指定的订单。例如同一个信号下两个单,一个长线一个短线。通过不同的
magic在后续处理的时候就不会搞错。
10、expiration 这个参数是时间量。用来表示订单的有效期。在这个时间前是有效的。这个参数对于挂单有效。现价单无效。
11、arrow_color这个参数是个颜色变量,用来标记下单箭头的颜色。可以省略或者用
NULL常量代替。
ok了。