📅 财经日历 📊 实时波动 📈 大盘云图 📶 行情走势 🆚 投机情绪 🚀 今日热点

    可以套用的简单交易系统

    2011-10-12 · 10041 阅读
    本人在学习当中,拿出心得跟大家分享吧
      下面的代码是一个智能交易系统,并不是很麻烦,仅有200多行代码
      
      开仓手数为了方便并未使用资金管理,如果还有不明白的地方可以跟帖询问。
      
      复制内容到剪贴板
      
      代码:
      
      //+------------------------------------------------------------------+
      
      //|                        Designed by . China                 |
      
      //|                          Copyright 2007,                |
      
      //|                      这是一个智能交易系统,不是指标               |
      
      //+------------------------------------------------------------------+
      
      #property copyright \"Copyright 2007, haha \"
      
      #property link     \"\"
      
      #define MAGICMA 200708081234
      
      //+------------------------------------------------------------------+
      
      //|                      注意没有指标文件那些property                |
      
      //+------------------------------------------------------------------+
      
      //在主函数和子函数外定义的变量为全局变量,全局变量的值在系统执行过程中是不变的,使用extern的作用是
      
      //定义时对全局变量进行赋值,系统使用过程中,用户可以修改.
      
      extern int whichmethod = 1;   //1~4 种下单方式
      
      extern double TakeProfit = 100;  //这个参数是止赢
      
      extern   double StopLoss = 20;   //止损
      
      extern double MaximumRisk     = 0.3;  //最大开仓量
      
      extern double TrailingStop =25;       //追止
      
      extern   int maxOpen = 3;   //最多持仓限制
      
      extern   int maxLots = 5;   //最多单仓限制
      
      extern int bb = 0;       //非零就跟踪止赢
      
      extern double MATrendPeriod=26;//使用26均线
      
      int i, p2, xxx,p1, res;
      
      double Lots;
      
      datetime lasttime;
      
      int init()   //初始化
      
      {
      
        Lots = 1;
      
        lasttime = NULL;
      
        return(0);
      
      }
      
      int deinit() { return(0); } //反初始化
      
      //主程序
      
      int start()
      
      {
      
        CheckForOpen();
      
        if (bb>0)   CTP();   //跟踪止赢
      
        return(0);
      
      }
      
      //+------下面是各子程序---------------------------+
      
      double LotsOptimized()   //确定下单量,开仓调用
      
      {
      
        double lot=Lots;
      
        int   orders=HistoryTotal();   // history orders total
      
        int   losses=0;             // number of losses orders without a break
      
        //MarketInfo(Symbol(),MODE_MINLOT);
      
        //MarketInfo(Symbol(),MODE_MAXLOT);
      
        //MarketInfo(Symbol(),MODE_LOTSTEP);
      
        lot=NormalizeDouble(MaximumRisk * AccountBalance()/AccountLeverage(),1);
      
        if(lotmaxLots) lot=maxLots;
      
        return(lot);
      
      }
      
      //平仓持有的买单
      
      void CloseBuy()
      
      {
      
        if (OrdersTotal( ) > 0 )  
      
        {
      
          for(i=OrdersTotal()-1;i>=0;i--)
      
          {
      
            if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)     break;
      
            if(OrderType()==OP_BUY)
      
            {
      
              OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
      
              Sleep(5000);
      
            }
      
          }
      
        }
      
      }
      
      //平仓持有的卖单
      
      void CloseSell()
      
      {
      
        if (OrdersTotal( ) > 0 )  
      
        {
      
          for(i=OrdersTotal()-1;i>=0;i--)
      
          {
      
            if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)     break;
      
            if(OrderType()==OP_SELL)
      
            {
      
              OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
      
              Sleep(5000);
      
            }
      
          }
      
        }
      
      }
      
      //判断买或卖或平仓
      
      int buyorsell()   //在这个函数计算设置你的交易信号
      
      {
      
        double MacdCurrent, MacdPrevious, SignalCurrent;
      
        double SignalPrevious, MaCurrent, MaPrevious;
      
       
      
        MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
      
        MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
      
        SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
      
        SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
      
        MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);
      
        MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);
      
       
      
        if(MacdCurrentSignalCurrent && MacdPreviousMaPrevious)
      
          return (1); // 买 Ma在上升,Macd在0线上,并且两线上交叉
      
        if(MacdCurrent>0 && MacdCurrentSignalPrevious && MaCurrent 19 ) return; //周五晚11点后不做
      
        }
      
       
      
        if (OrdersTotal( ) >= maxOpen) return ;  
      
        //如果已持有开仓数达到最大,不做
      
        if (nowbuyorsell==0) return;   //不交易
      
        TradeOK();   //去下单交易
      
      }
      
      void TradeOK()   //下单交易
      
      {
      
        int error ;
      
        if (nowbuyorsell == 1) //买
      
        {
      
          switch (whichmethod)
      
          {
      
            case 1:   res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,\"\",MAGICMA,0,Blue);break;
      
            case 2:   res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask-StopLoss*Point,0,\"\",MAGICMA,0,Blue); break;
      
            case 3:   res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point,\"\",MAGICMA,0,Blue);break;
      
            case 4:   res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,\"\",MAGICMA,0,Blue);break;
      
            default : res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,\"\",MAGICMA,0,Blue);break;
      
          }
      
          if (res  (TrailingStop * MarketInfo(OrderSymbol(), MODE_POINT)))
      
            {
      
              if ((OrderStopLoss()) > (Ask + TrailingStop * MarketInfo(OrderSymbol(), MODE_POINT)))
      
              {   
      
                bs = OrderModify(OrderTicket(), OrderOpenPrice(),
      
                Ask + TrailingStop * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(),0, Tan);
      
              }
      
            }
      
          }
      
        }
      
      }
      
      以上代码已编译通过,可直接在mt4上编译执行,感兴趣的可以下载编译后进行测试
    ""
    还没有人打赏,支持一下
    回复

    举报

     

    回答|共 32 个

    小明mjd LV4

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

    老大,我好崇拜你哟  

    l26709020 LV5

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

    想了解加下Q吧  绝对真实 OK   

    醉卧花丛 LV5

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

    好人一个  

    风伤依旧 LV5

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

    i love you

    怨女 LV6

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

    这贴?不回都不行啊  

    有多少爱 LV5

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

    对不起,我走错地方了,呵呵  

    elliott LV4

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

    刚刚接触EA ,楼主请发份给我…  

    小yo LV4

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

    多年复盘测试,收益相当理想的EA!!   

    xiwa2012 LV5

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

    偶真幸运哦...  
    1234下一页
    您需要登录后才可以回帖 登录 | 注册

    提醒: 禁止引战、谩骂、灌水内容

    微信二维码

    有问题联系客服