130

ordersend && ordermodify , error no 130

这个错误经常发生,意思是无效的止损止盈位

price1 = Bid - step * Point;

OrderSend(Symbol(), OP_SELLSTOP, lots, price1, 3, 0, 0, "# ", 0 , 0 ,Red);

有的时候,我们没有设置成price1,而是直接设置成了step,止盈位也容易犯同样的错误;

但更多的时候,是因为价格不符合止损止盈位,具体说来这地方的原理是这样的,首先用

double spl = MarketInfo(Symbol(),MODE_STOPLEVEL);

取得止损位,如果是long order,那么止损位设置应满足:

stoplossPrice < Bid - spl * Point;
如果是short order,相应的止损位应满足:
stoplossPrice > Ask + spl * Point;
ps: Ask - Bid 成为点差,点差分固定点差和浮动点差。

但是现在还有个问题,就是orderModify的时候,仍然会报130的错误,好奇怪,OP_SELLSTOP会有这个错误,但OP_BUYSTOP就没有这个错误。

终于找到了,见原来的代码:

OrderModify(tic2,OpenPrice(),stoplossPrice2,takeprofitPrice2,0,Yellow)
因为这个是挂单,而OpenPrice()是0,所以报错,把这个价格改掉就OK了。

OrderModify(tic2,price2,stoplossPrice2,takeprofitPrice2,0,Yellow)

另外挂单的止损位设置并不严格,举例OP_BUYSTOP,价格设在Ask价格之上,比如1000,那么止损位只要设置在1000以下即可。另外要注意的就是,我这里当时

并没有先用OrderSelect选择一下,这样很容易出现的一个错误就是,这个单号如果已经不存在了,但是EA又没有退出,就会造成OrderModify报错,好像是4058,意思

就是无效的单号,所以最好OrderModify之前先用OrderSelect选择一下。


PS:有的时候会发现价格在变,但start函数进不去,这个时候需要注意上方的Expert Adviser开关是否打开,也可以看下所加载的EA名称右侧是否有笑脸。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值