2评论

0收藏

求教:历史订单的注释为什么只能获取到tp

avatar dre_dre | 3797 人阅读 | 2 人评论 | 2016-06-22

我的EA多单和空单注释不一样,具体是多单BUY-1.12535,空单SELL1.12434  ,我现在要搜索历史记录,代码如下:
    for(i=0;i<30;i++)
      {
        if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)&& OrderSymbol()==Symbol()&&OrderMagicNumber()==MyMagicNum)
         
            Print("719MyBuyComment=",MyBuyComment,"OrderComment()=",OrderComment(),"SringSubStr(OrderComment(),0,13)=",StringSubstr(OrderComment(),0,13));
      }

结果:OrderComment()     没有显示BUY-1.12535[tp],而只显示tp,请高手赐教,如何能获取到历史订单的完整注释
""
还没有人打赏,支持一下

评论|共 2 个

DX冲云海

发表于 2016-6-22 17:21:23 | 显示全部楼层

comment参数的特殊作用
A:这参数本意是用于记录这个订单的描述信息,程序只能在订单入场的时候设定它。同时系统会在这个订单发生止损 止赢或者拆单的时候自动修改这里的内容。
既然订单发生止损 止赢或者拆单的时候自动修改这里的内容。
那我可以在下单的时候给comment赋值”on”,当订单生成后我可以用OrderComment()
函数实时获取它的comment值如果不等于”on”那就说明订单已经止损或止赢了。



@string OrderComment()  返回定单的注释。
int ticket=12345678;
if ( OrderSelect( ticket, SELECT_BY_TICKET ) == true )
            {
            if( OrderCloseTime() != 0 && OrderProfit() < 0 )
               {
                Print(StringConcatenate("Order #", ticket, " closed by stoploss!");
              }
          }
这种方法就是判断订单的盈利是小于0来判断的,但是有个问题,就是如果是移动止损,虽然止损了但是有可能是盈利的,这样的就没法判断出来了
用OrderComment 函数,每次止损或者止盈后,系统自动给订单加入一个注释,如果是止损就是s/l,判断字符串里包含这个字符串就行了。同理,只赢的就是t/p。

dre_dre

发表于 2016-6-22 21:55:30 | 显示全部楼层

谢谢您的指点,对我很有帮助!

您需要登录后才可以回帖 登录 | 注册 微信登录

EA之家评论守则