19评论

0收藏

EA中如何计算止损和止赢

avatar everything | 5595 人阅读 | 19 人评论 | 2011-09-21

[原创转载] macy01.blogcn.com
  
  
  一般一个EA中会定义止损水平和止赢水平,一般大家定义的参数都是int型,即点数。例如下面的变量定义:
  extern int _SlipPage     = 2;   //最大允许滑点数
  extern int _StopLoss     = 30;  //止损水平
  extern int _TakeProfit   = 100; //赢利水平
  extern int _Magic        = 0;   //订单Migc号码
  
  在使用OrderSend开仓的时候,并不能够直接将上面的参数传递给OrderSend,因为OrderSend需要的是真实的市场价位,例如EURUSD开多仓位置为1.5000,则对应止损为1.4970,止赢为1.5100;对于其他货币小数位数可能不同,例如USDJPY。注意事项为:
  (1)如果没有经过转换,或者价位设置错误(例如多单的止损高于入场价位),则会返回错误码130: errorDescription=\"无效的止损(invalid stops)\";
  (2)在传入OrderSend时,最好使用NormalizeDouble(stopLoss,Digits)将参数处理为小数位数合适的Double类型
  
  转换的代码如下面所示:
  /*
  此函数的功能是根据指标返回信号进场交易。
  函数参数:无
  返回值类型:无
  */
  void Trade()
  {
    double openLots = LotsMgmt();    //开仓手数
    int ticket;                      //订单编号
    double stopLoss=0, takeProfit=0;
   
    if(CheckForOpen()==OPEN_BUY)
    {
      //计算止赢点位
      if(_TakeProfit==0)
        takeProfit=0;
      else
        takeProfit=Ask+_TakeProfit*Point;
        
      //计算止损点位   
      if(_StopLoss==0)
        stopLoss=0;
      else
        stopLoss=Ask-_StopLoss*Point;
            
      //这里止损和止赢必须使用NormalizeDouble处理和相应货币的小数位数对应
      ticket=OrderSend(Symbol(), OP_BUY, openLots, Ask, _SlipPage, NormalizeDouble(stopLoss,Digits),NormalizeDouble(takeProfit,Digits), ORDER_COMMENT, _Magic, 0, Red);  
      if(ticket==-1)
        Print(\"Error Occured : \"+ErrorDescription(GetLastError()));
    }
   
    if(CheckForOpen()==OPEN_SELL)
    {
      //计算止赢点位
      if(_TakeProfit==0)
        takeProfit=0;
      else
        takeProfit=Bid-_TakeProfit*Point;
         
      //计算止损点位   
      if(_StopLoss==0)
        stopLoss=0;
      else
        stopLoss=Bid+_StopLoss*Point;
         
      //这里止损和止赢必须使用NormalizeDouble处理和相应货币的小数位数对应
      ticket=OrderSend(Symbol(), OP_SELL, openLots, Bid, _SlipPage, NormalizeDouble(stopLoss,Digits),NormalizeDouble(takeProfit,Digits), ORDER_COMMENT, _Magic, 0, Green);
      if(ticket==-1)
        Print(\"Error Occured : \"+ErrorDescription(GetLastError()));
    }
  }
""
还没有人打赏,支持一下

评论|共 19 个

后山俗人

发表于 2012-11-21 23:54:18 | 显示全部楼层

晕死也不多加点分  

小林

发表于 2012-11-21 23:54:18 | 显示全部楼层

支持一下吧  

纸老虎

发表于 2012-11-22 00:02:14 | 显示全部楼层

看看现在变相卖EA的。。。越来越多!

bjsam68

发表于 2012-11-22 00:02:14 | 显示全部楼层

我在顶贴~!~  

dmpdc

发表于 2012-11-22 00:28:10 | 显示全部楼层

不是吧  

fxsin8.7

发表于 2012-11-22 00:28:10 | 显示全部楼层

哈哈,看的人少,回一下  

草比

发表于 2012-11-22 00:28:10 | 显示全部楼层

楼主good  

做梦吧你

发表于 2012-11-22 00:28:10 | 显示全部楼层

我有一个EA 好坏你自己定  免费的  需要的话 可以发给你玩玩  

2641318963

发表于 2012-11-22 00:28:10 | 显示全部楼层

貌似我真的很笨????哎  

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

EA之家评论守则