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

【EA智能交易】移动止损EA 源代码-MT4

(2013-12-24 17:51:12)
标签:

365

分类: 外汇

源代码如下:


 //+------------------------------------------------------------------+
//|                                                   移动止损EA.mq4 |
//|                                                         混沌趋势 |
//|                              http://blog.sina.com.cn/u/1730225203|

//+------------------------------------------------------------------+
#property copyright "混沌趋势"
#property link      "http://blog.sina.com.cn/u/1730225203"

extern double Stoploss=30;///止损点数设置
extern double MoveStop=30;///移动止盈设置
extern int Maxslippage=5;//最大滑点数
extern bool FollwStop=true; //是否开启追踪止盈止损
extern double FollwMoveStop=0;///移动止盈点数

 

int  tempStopBP=0;
int  tempStopSP=0;


//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
 
  int con;
 
 int allLots= OrdersTotal();
 
    if(allLots>0){
    for(con=0;con
   OrderSelect(con, SELECT_BY_POS, MODE_TRADES);
                                       
   double tempStopPrice=0;

    //////-------多单
   if(OrderType()==OP_BUY) 
                             

               //  OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*Stoploss,OrderTakeProfit(),0,Green);
 
                  ///启动止损上移 追踪止损,固定止损 不变,回踩,止损不变、价格上移,止损上移,
                  if(iClose(OrderSymbol(),0,0)-OrderOpenPrice()>MarketInfo(OrderSymbol(),MODE_POINT)*MoveStop){
              
                     if((iClose(OrderSymbol(),0,0)-OrderStopLoss())/MarketInfo(OrderSymbol(),MODE_POINT) > tempStopBP )
                    // Print("tempStopBP========>>="+tempStopBP);
                        RefreshRates();
                    bool modify_b=    OrderModify(OrderTicket(),OrderOpenPrice(), iClose(OrderSymbol(),0,0) -MarketInfo(OrderSymbol(),MODE_POINT)*(MoveStop+Stoploss),OrderTakeProfit(),0,Green);
         tempStopBP= (iClose(OrderSymbol(),0,0)-OrderStopLoss())/MarketInfo(OrderSymbol(),MODE_POINT);
                           if(modify_b) {
                          Print("多单向上自动设置止成功");
                             else{
                            Print("多单向上自动设置止损失败"+GetLastError());
                            }
                       }
                      
                      
                
                
                 if(iClose(OrderSymbol(),0,0)-OrderOpenPrice()<(-1* MarketInfo(OrderSymbol(),MODE_POINT)*Stoploss))
     {
               //  Sleep(10000);   //---- 刷新价格数据
                 RefreshRates();
                if( OrderClose(OrderTicket(), OrderLots(),iClose(OrderSymbol(),0,0)-(MarketInfo(OrderSymbol(),MODE_POINT)),Maxslippage,Red))
      {
                Print("多单止损成功");
     }else{
        Print("多单止损失败"+GetLastError());
          }
                    }
               }
    
   /////////////////------------空单
   if(OrderType()==OP_SELL) 
                             
 
 
 
  ///启动止损上移 追踪止损,固定止损 不变,回踩,止损不变、价格上移,止损上移,
                  if(OrderOpenPrice()-iClose(OrderSymbol(),0,0)>MarketInfo(OrderSymbol(),MODE_POINT)*MoveStop){
              
                     {
                         RefreshRates() ;
                    bool modify_s=    OrderModify(OrderTicket(),OrderOpenPrice(), iClose(OrderSymbol(),0,0)+MarketInfo(OrderSymbol(),MODE_POINT)*(MoveStop+Stoploss),OrderTakeProfit(),0,Green);
                           tempStopSP=  (OrderOpenPrice()-iClose(OrderSymbol(),0,0))/MarketInfo(OrderSymbol(),MODE_POINT);
                           if(modify_s) {
                             Print("空单单向下自动设置止成功");
                             else{
                            Print("空单单向下自动设置止损失败"+GetLastError());
                            }
                        }
                       }
                      
                      
                      
                
                
               
                if((iClose(OrderSymbol(),0,0)-OrderOpenPrice())  >(MarketInfo(OrderSymbol(),MODE_POINT)*Stoploss))
                {
                 RefreshRates();
                     if(OrderClose(OrderTicket(), OrderLots(),iClose(OrderSymbol(),0,0)+(MarketInfo(OrderSymbol(),MODE_POINT)),Maxslippage,Red))
                     {
                        Print("空单止损成功==============");
         }else{
            Print("空单止损失败========="+GetLastError());
        }

                }
               }
      }
   return(0);
  }
   return(0);
  }

0

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

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

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

新浪公司 版权所有