138888 发表于 2020-5-16 19:14:40

双重时间框架双均线交易系统

//+------------------------------------------------------------------+
//|                                                myEA20180104.mq4 |
//|                                                Copyright 2017,CuiYi |
//|                                                010333562@qq.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017,CuiYi"
#property link      "1010333562@qq.com"
#property version   "1.00"
#property stric
#define MAGICMA 19880305

extern double Lots=0.01;

int CalculateCurrentOrder(string symbol)
        {
        int buys=0,sells=0;
        for(int i=0;i<OrdersTotal();i=i+1)
                {
                if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
                if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MAGICMA)
                        {
                        if(OrderType()==OP_BUY)         buys++;
                        if(OrderType()==OP_SELL)        sells++;
                        }
                }
        if(buys>0)        return(buys);
        else                return(-sells);
        }

void CheckForOpen()
        {
        double ma1,ma2,ma3,ma4,maA,maB;
        int res;
       
        ma1=iMA(NULL,30,10,6,MODE_EMA,PRICE_CLOSE,0);
        ma2=iMA(NULL,30,20,6,MODE_EMA,PRICE_CLOSE,0);
        ma3=iMA(NULL,240,10,6,MODE_EMA,PRICE_CLOSE,0);
        ma4=iMA(NULL,240,20,6,MODE_EMA,PRICE_CLOSE,0);
       
        maA=iMA(NULL,30,10,6,MODE_EMA,PRICE_CLOSE,1);
        maB=iMA(NULL,30,20,6,MODE_EMA,PRICE_CLOSE,1);
       
        if(ma1>ma2 && maA<maB && ma3>ma4)
                {
                res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",MAGICMA,0,Blue);
                return;
                }
       
        if(ma1<ma2 && maA>maB && ma3<ma4)
                {
                res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"",MAGICMA,0,Red);
                return;
                }
        }

void CheckForClose()
        {
        double ma1,ma2,ma3,ma4,maA,maB;
               
        ma1=iMA(NULL,30,10,6,MODE_EMA,PRICE_CLOSE,0);
        ma2=iMA(NULL,30,20,6,MODE_EMA,PRICE_CLOSE,0);
        ma3=iMA(NULL,240,10,6,MODE_EMA,PRICE_CLOSE,0);
        ma4=iMA(NULL,240,20,6,MODE_EMA,PRICE_CLOSE,0);
       
        maA=iMA(NULL,30,10,6,MODE_EMA,PRICE_CLOSE,1);
        maB=iMA(NULL,30,20,6,MODE_EMA,PRICE_CLOSE,1);
               
        for(int i=0;i<OrdersTotal();i++)
                {
                if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
                if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
               
                if(OrderType()==OP_BUY)
                        {
                        if(ma1<ma2 && maA>maB && ma3>ma4)       
                        OrderClose(OrderTicket(),Lots,Bid,3,White);
                        break;
                        }
                       
                if(OrderType()==OP_SELL)
                        {
                        if(ma1>ma2 && maA<maB && ma3<ma4)       
                        OrderClose(OrderTicket(),Lots,Bid,3,White);
                        break;
                        }
                }
        }       

void start()
        {
        if(Bars<100 || IsTradeAllowed()==false) return;
        if(CalculateCurrentOrder(Symbol())==0) CheckForOpen();
        else CheckForClose();
        }


系统回测

1.EUR/USD

回测时间:2017/01/01 - 2018/01/01

时间周期:M30

净值图:





规划局股份 发表于 2020-5-16 20:55:03

66666666666666666

jaryk 发表于 2020-5-17 09:42:34

简单有效!!!!

情无似归 发表于 2020-5-23 07:17:15

写法还是不错的

牛市 发表于 2020-7-19 11:28:33

帮你顶下哈!!

yoii0 发表于 2020-11-17 14:12:04

谢谢

没可规划和 发表于 2020-11-20 17:06:12

支持下

天马行1 发表于 2020-12-2 11:33:10

{:1_186:}

哈哈哈哈哈 发表于 2020-12-5 21:44:24

谢谢

138888 发表于 2020-12-8 17:27:24

{:1_181:}
页: [1] 2 3 4 5 6
查看完整版本: 双重时间框架双均线交易系统