加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

移动止盈EA

(2013-01-19 04:42:36)
标签:

杂谈

一直想要一个合适的移动止盈EA怕晚上睡了大涨或大跌,
网上找了几个,一些是代码读不懂,不敢用,一些是不是要想要的,
自己初学MQL4,所以自己试着写了个,新手写的代码,写笑了,有什么不对的地方,请各位提出来我改进!
5位的系统中用!

#property copyright "bai"
#property link      ""
extern double TP=200;//止盈点
extern double SL=200;//止损点
extern double TPLow=70;//差止盈位x个点就开始重设置止损
extern bool MoveSL=true;//移动止损开关

int MoveSL_Function()
//Ver 1.0.0.0(20120830)
//移动止损函数,反回1就是成功,返回-1就是操作失败或不用止损
{
int cnt, total;
string s;
bool YN=false;

total=OrdersTotal();
for(cnt=total-1;cnt>=0;cnt--)
  {
  s=""; 
  if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)==false) continue; //如果选重不成功,就跳到下一个次循环
  
  
    if(OrderSymbol()==Symbol() && OrderType()==OP_BUY )//&& OrderMagicNumber()==MAGICMA 这测试是不是空单
    //多单
    {
    
    if( 
    ( OrderStopLoss()==0 || OrderTakeProfit()==0 ) || //没有设置止损或止盈价
     OrderTakeProfit()-Bid<=TPLow*Point
     )
     {
     
     s=TimeToStr(TimeLocal())+Symbol()+"移动止损设置:";
     YN= OrderModify(OrderTicket(),0, Bid-SL*Point,Bid+TP*Point,0,White);
  
     
     if(YN)
     {
      s=s+"失败!"; 
       SendMail(s,s);
       Print(s);
      }
      else 
      {
      
      s=s+"成功!"; 
      SendMail(s,s);
      Print(s);
      
      }
     

     
     }
     
     }
     
     
     
     
if(OrderSymbol()==Symbol() && OrderType()==OP_SELL )//&& OrderMagicNumber()==MAGICMA 这测试是不是多单
    //空单
    {
    
    if( 
    ( OrderStopLoss()==0 || OrderTakeProfit()==0 ) || //没有设置止损或止盈价
    Ask-OrderTakeProfit()<=TPLow*Point
     )
     {
     
     s=TimeToStr(TimeLocal())+Symbol()+"移动止损设置:";
     YN= OrderModify(OrderTicket(),0, Ask+SL*Point,Ask-TP*Point,0,White);

     
     if(!YN )
     {
      s=s+"失败!"; 
       SendMail(s,s);
       Print(s);
      }
      else 
      {
      
      s=s+"成功! "; 
      SendMail(s,s);
      Print(s);
      
      }
     

     
     }
     
       
     
     
}

if(YN ) return(1);
return(-1);

}


int init()
  {
//----
   
//----
   return(0);
  }
int deinit()
  {
//----
   
//----
   return(0);
  }
int start()
  {
if(MoveSL) MoveSL_Function();//移动止损
   return(0);
  }

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有