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

    请高手修正:这个EA编译时提示\\\'(\\\' - function ……错误

    2011-09-15 · 4400 阅读
    <div class=\"blockcode\"><div id=\"code_lVg\"><ol>/*
    这个当均线交叉后在交叉点的上下10点或20点分别挂多空单的EA,是在阻力位和支撑位同时挂单EA的基础上修改的,原EA的功能是:阻力位R和支撑位S在属性里输入,首先取消阻力位和支撑位置间的所有挂单,然后,当一张订单处于开仓状态(挂单价格被触发),就取消另一张反方向的挂单。   要求修改为:当均线交叉后在交叉点的上下10点或20点分别挂多空单(带止赢止损和移动止损),当发生新交叉时立即开新挂单并自动取消未成交的旧挂单,当一方成交后自动取消另一反向的挂单,如果有持仓时不开新挂单。
    */
    //+------------------------------------------------------------------+
    //|                                          Two Direction Order.mq4 |
    //|                       Copyright ?2010, MetaQuotes Software Corp. |
    //|                                        http://www.metaquotes.net|
    //+------------------------------------------------------------------+
    #define Magic 020909 //
    extern int Slippage=3;//滑点
    //extern double R=1.4200;//Zone 的阻力位
    //extern double S=1.4100;//Zone 的支撑位
    extern double 止损= 10;
    extern double 止盈=20;
    extern double 手数=0.01;
    extern double 与均线交叉点距离=10;
    extern int FasterMA = 5;    //均线1的周期   
    extern int SlowerMA = 24;  //均线2的周期
    extern int Trade_Bar = 1;  //下单的时机,如果为1,表示等待当前的K线完成,下一根K线刚出现的时候才下单;如果为0表示只要当前的价格
                                 //满足条件了就马上下单

    int last_t = 0;            //这个是用来避免重复下单  
    //----全局变量===================

    int OrderTotal;//持仓总单数
    int TickLong;//突破多单挂单单号
    int TickShort;//突破空单挂单单号
    int TickOther;

    double LongOpenPrice;
    double ShortOpenPrice;
    double OtherOpenPrice;
                   
    int TypeLong; //突破多单订单类型
    int TypeShort;//突破空单订单类型
    int TypeOther;//区间订单类型

    double StopLost;



    //+------------------------------------------------------------------+
    //| expert initialization function                                   |
    //+------------------------------------------------------------------+
    int init()//初始化函数,负责程序变量及数据初始输入;只在程序调入时执行一次,一般不用重写内容。
       {
       

       
    //----
        return(0);
       }
    //+------------------------------------------------------------------+
    //| expert deinitialization function                                 |
    //+------------------------------------------------------------------+
    int deinit()//反初始化函数,负责程序退出时,将数据从内存中清除;只在程序退出时,执行一次,一般不用重写内容。
       {

       
    //----
        return(0);
       }
    //+------------------------------------------------------------------+
    //| expert start function                                            |
    //+------------------------------------------------------------------+
    int start()
       {
       int Ticket; //自定义局部变量Ticket 用于记录每次下单后的状态,用于判断下单动作是否成功,如果不成功则做相应处理和提示
        int Ticket1;

        int OrderTotal=GetOrderTypeHolding();
         
       //----
       ///////////////////////////////////////////////////////////////////  
       ////////定义几个变量,从名字也可以很容易看出其代表的含义了: FasterMANow表示均线1当前的值、SlowerMANow表示均线2当前的值、  
       ///////FasterMAPrevious表示均线1的前值、SlowerMAPrevious表示均线2的前值;均线金叉,其实就是表示当均线1的前值小于均线2的前值,  
       ///////且均线1的当前值大于均线2的当前值。)
       double FasterMANow, SlowerMANow, FasterMAPrevious, SlowerMAPrevious;  
       

       ////////////////////////////////////////////////////////////////////////////  
       //////////下面是给各个变量赋值,iMA就是均线函数
       ///////////////////////////////////////////////////////////////////////////
       FasterMANow = iMA(NULL, 0, FasterMA, 0, MODE_EMA, PRICE_CLOSE, Trade_Bar);  
       SlowerMANow = iMA(NULL, 0, SlowerMA, 0, MODE_EMA, PRICE_CLOSE, Trade_Bar);  
       FasterMAPrevious = iMA(NULL, 0, FasterMA, 0, MODE_EMA, PRICE_CLOSE, Trade_Bar+1);
       SlowerMAPrevious = iMA(NULL, 0, SlowerMA, 0, MODE_EMA, PRICE_CLOSE, Trade_Bar+1);
       
       
       //////////////////////////////////////////////////////
       ///////////下面开始判断是否发生金叉了
       ///////////////////////////////////////////////////////
       if ((FasterMANow > SlowerMANow) && (FasterMAPrevious = SlowerMAPrevious)){
            
          if ((OrderTotal==0)&& (TotalOrders(Magic)==0) && (Time[0]>last_t))  ///如果当前的EA还没有下单
           {//1
             RefreshRates();  ///刷新市场报价
      
      //  if(OrderTotal==0)//完全没有订单的情况
          
      //      Ticket=OrderSend( Symbol(), OP_BUYSTOP, 手数, R, Slippage,R-止损*Point, R+止盈*Point, \"Long\", 020909, 0, Lime) ;
    //       Ticket1=OrderSend( Symbol(), OP_SELLSTOP, 手数, S, Slippage,S+止损*Point, S-止盈*Point, \"Short\", 020909, 0, Red) ;

            Ticket=OrderSend(Symbol(), OP_BUYSTOP, 手数, NormalizeDouble(Ask+与均线交叉点距离*Point,Digits), Slippage, NormalizeDouble(Ask-止损*Point+与均线交叉点距离*Point,Digits), NormalizeDouble(Ask+止盈*Point+与均线交叉点距离*Point,Digits), \"Long\", Magic, 0, Lime);         
            Ticket1=OrderSend(Symbol(), OP_SELLSTOP, 手数, NormalizeDouble(Bid-与均线交叉点距离*Point,Digits), Slippage, NormalizeDouble(Bid+止损*Point+与均线交叉点距离*Point,Digits), NormalizeDouble(Bid-止盈*Point+与均线交叉点距离*Point,Digits), \"Long\", Magic, 0, Red);
            
            
             last_t = Time[0];
                 return (0);  
             
                 if(Ticket=R&&TypeShort==OP_SELL)//突破空单已经开仓情况
      //         {//2-1-2
    //           OrderDelete(TickLong, Yellow);//消突破多单挂单
    //        }//2-1         
      //    }//2
      
       
          {//2  
          OrderDelete(TickOther, Yellow);//消区间空单挂单      
           if(LongOpenPrice>=NormalizeDouble(Ask+与均线交叉点距离*Point,Digits)||ShortOpenPrice=NormalizeDouble(Ask+与均线交叉点距离*Point,Digits)&&TypeLong==OP_BUY)//突破多单已经开仓情况
               {//2-1-1
                OrderDelete(TickShort, Yellow);//消突破空单挂单
               }//2-1-1
             if(ShortOpenPrice>=NormalizeDouble(Bid-与均线交叉点距离*Point,Digits)&&TypeShort==OP_SELL)//突破空单已经开仓情况
               {//2-1-2
                OrderDelete(TickLong, Yellow);//消突破多单挂单
               }//2-1-2
             }//2-1         
          }//2
          
        return(0);
        }
    //====================自定义函数部分================================================  
    //+------------------------------------------------------------------+
    //|自定义判断持仓情况                                                |
    //+------------------------------------------------------------------+
    int GetOrderTypeHolding()//从最近持仓单提取订单类型
       {//1
        OrderTotal=OrdersTotal();
       
        for(int i=OrdersTotal()-1;i>=0;i--)//循环条件
          {//1-1
           OrderSelect(i, SELECT_BY_POS, MODE_TRADES);//查找订单函数
           if(OrderSymbol()==Symbol())//如果仓单货币=目前的货币
             {//1-2
              StopLost=OrderStopLoss(); //自定义止损变量=返回的订单止损
              if(OrderOpenPrice( )>=NormalizeDouble(Ask+与均线交叉点距离*Point,Digits))
                {//1-2-1
                    TickLong=OrderTicket();//突破多单挂单单号
                    LongOpenPrice=OrderOpenPrice();
                    TypeLong=OrderType();
                }//1-2-1
              if(OrderOpenPrice( )
    ""
    还没有人打赏,支持一下
    回复

    举报

     

    回答|共 11 个

    御赐黄马甲 LV5

    发表于 2012-11-22 01:36:01 | 显示全部楼层

    不错,看看。  

    苍井空 LV5

    发表于 2012-11-22 01:36:01 | 显示全部楼层

    哦...............  

    xiaodong LV6

    发表于 2012-11-22 01:36:01 | 显示全部楼层

    是楼主原创吗  

    mlj LV4

    发表于 2012-11-22 01:36:01 | 显示全部楼层

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

    严守一 LV5

    发表于 2012-11-22 01:36:01 | 显示全部楼层

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

    一生跟随 LV5

    发表于 2012-11-22 01:36:01 | 显示全部楼层

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

    桃太郎 LV5

    发表于 2012-11-22 01:36:01 | 显示全部楼层

    呵呵 都没人想我~~  

    dslapu LV4

    发表于 2015-3-11 20:02:49 | 显示全部楼层

    赚钱,赚积分。顶....

    xia5815 LV1

    发表于 2015-3-24 18:57:36 | 显示全部楼层

    看看怎么样
    12下一页
    您需要登录后才可以回帖 登录 | 注册

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

    微信二维码

    有问题联系客服