诚信为本
量力而为
当前位置:峰汇在线 ea编程知识 正文

mt4开新订单时提示无效交易参量的原因

mt4开新订单时提示无效交易参量的主要原因是 OrderSend 函数的参量出现错误。本文就 OrderSend 函数的参量结合相关交易规则来简单说明导致开新订单报错或失败的原因及解决办法。

首先,我们看下 OrderSend 函数的结构:

int OrderSend(string Sym, int type, double lots, double price, int slippage, double SL, double TP, string comm, int magic, datetime exp, color arrowclr);

OrderSend 函数一共11个参量,不论是手工交易还是编写智能交易EA,这11个参量的数值、类型等都必须符合其本身规则及平台所内置的交易规则才会正常执行,如有参量赋值出现错误,则交易就会报错。当然,报错的类型也是因不同参量的不同类型错误而不同的。要完全解决因OrderSend 函数的参量错误出现的交易报错或失败,我们就必须熟悉每个参量的赋值规则。下面一一介绍:

string Sym:该参量是指交易的货币对代码名称,当然,我这里习惯用Sym作为参量名称,具体用什么只要符合命名规则即可,如symbol用的较多。手工开仓平仓不用考虑该参量,默认都是在当前图表货币对,或者在订单界面选择货币对。而在编写自动交易EA时该参数设为 Symbol() 则表示当前图表货币,如果需要跨图表或者多货币同时开仓,那么该参量就要设置具体的货币名称,该参量类型为string,设置具体货币对名称时需要加双引号,如”EURUSD””EURUSDmicro”。

int type:该参量是指开仓类型。在mt4平台上一共6种订单类型,分别是 OP_BUY、OP_SELL、OP_BUYLIMIT、OP_SELLLIMIT、OP_BUYSTOP、OP_SELLSTOP。该参量为int类型。可直接设置OP_BUY、….OP_SELLSTOP或用数字0、1、2、3、4、5代替。

double lots:该参量为交易手数。设置交易手数的时候一定要注意所交易货币的手数位数、最小开仓手数、最大开仓手数及手数步长。比如外汇对EURUSD最小开仓0.01手,而原油最小开仓是1手的话,如果用0.01手去交易原油就会报错。如果在编写EA的时候,需要根据资金来计算手数,那么要考虑到手数的位数,如果该货币对最小交易手数为0.01手,那手数位数就是2位,对计算出来的手数要限定2位小数点。如果不做限定,计算出来0.003这种手数的话,就会发生交易报错。

double price:该参数是指开仓的价格。多单以Ask执行,空单以Bid执行,挂单以具体获取或设定的价格执行。如果需要计算价格则需要考虑到所交易货币对的报价位数。在编写跨图表或者多货币同时开仓程序时,该参数要针对具体所交易的货币对去获取,不能弄混。

double SL:该参数是指止损价格。设置该参数时既要考虑到止损规则也要考虑所开仓货币对的报价规则。止损规则是指多单开仓的初始止损是在开仓价格的下方,空单开仓的初始止损是在开仓价格的上方等。报价规则主要是要考虑货币对的报价位数,比如说黄金报价1530.23,这种小数点后面是2位报价,那么不管是设置还是动态计算,止损价格后面的小数点都必须限制在2位数之内。如设置1527.233这种止损位,那交易就会报错。

double TP:该参数是指止盈价格。设置规则和止损价格一样。只是多单开仓初始止盈在开仓价格上方,空单开仓初始止盈在开仓价格下方。

string comm:该参数为订单注释,类型为string,在编写EA程序时string类型参量要记得加上双引号。如多单注释为:”开多单”。手工交易的时候,大部分时候并不去设置订单注释。如果没有特殊需要,订单注释设置与不设置都没有关系的。在电脑端mt4开仓的时候,也有提供订单注释设置的输入框,如下图所示:

电脑端mt4开仓设置订单注释

int magic:该参量为订单识别码。mt4手工开仓该参数通常默认为0,对于智能交易EA开仓,该参数相当重要,可以用来识别处理特定类型的订单。在编写EA时,可以将需要单独处理的一组单子设置一个订单识别码,参量为int类型,设置0开始的正整数即可。12345、36521、200031等等都是可以的。

datetime exp:expiration参数是订单有效期,仅对挂单有效。在电脑端mt4上面执行挂单时,该参数可以设定具体日期。在编写智能交易EA时,该参数设置以秒为单位的数值即可。

color arrowclr :是交易标记箭头颜色。如果想要开仓时在图表对应位置有箭头提示,在这里设置颜色即可。当然,这是对编写智能交易EA而言的。手工交易的话通常不用理会该参数。它的默认值是没有颜色。

版权所有转载请注明标题及链接:峰汇在线 » mt4开新订单时提示无效交易参量的原因