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

    CT_EA_V3.0 效果还不错,就是运行5分线,有时会重复开单。有没高手知道怎么解决? 

    2016-06-08 · 11353 阅读
    CT_EA_V3.0 效果还不错,就是5分线,重复开单。
    有没高手知道怎么解决重复开单的问题?
    外汇1.png
    ""
    还没有人打赏,支持一下
    回复

    举报

     

    回答|共 22 个

    陈沫池 LV3

    发表于 2016-6-8 17:35:49 | 显示全部楼层

    增一个变量,做为交易的开关

    狠赵狠蛇蛇 LV0

    发表于 2016-6-8 17:41:59 | 显示全部楼层

    你可以研究下这个

    1. //+------------------------------------------------------------------+
    2. //|                                                    test14_EA.mq4 |
    3. //|                                                           wangyu |
    4. //|                                      http://wangyu204.taobao.com |
    5. //+------------------------------------------------------------------+
    6. //EA 模版功能
    7. //1.同一标识不会重复下单
    8. //2.止损止盈可以设置为0
    9. //3.兼容有些平台 开单不能下止损的问题
    10. //
    11. #property copyright "wangyu"
    12. #property link      "http://wangyu204.taobao.com"

    13. //定义全局变量
    14. double ema10_15M;
    15. double ema20_15M;
    16. double ema10_30M;
    17. double ema20_30M;
    18. double k;
    19. double d;
    20. double prevK;
    21. double prevD;

    22. //+------------------------------------------------------------------+
    23. //| expert initialization function                                   |
    24. //+------------------------------------------------------------------+
    25. int init()
    26.   {
    27.    return(0);
    28.   }
    29. //+------------------------------------------------------------------+
    30. //| expert deinitialization function                                 |
    31. //+------------------------------------------------------------------+
    32. int deinit()
    33.   {
    34.    return(0);
    35.   }
    36. //+------------------------------------------------------------------+
    37. //| expert start function                                            |
    38. //+------------------------------------------------------------------+
    39. int start()
    40.   {
    41.    int buyTicket=0;
    42.    int sellTicket=0;
    43.    getData();
    44.    
    45.    if(needOpenBuy())
    46.    {
    47.       buyTicket = buy(0.01,250,250,"buy",0);
    48.       if(buyTicket>0)
    49.       {
    50.          Alert("多单下单成功,订单号码是:"+buyTicket);
    51.       }else if(buyTicket<0)
    52.       {
    53.          Alert("多单下单失败");
    54.       }
    55.    }
    56.    if(needOpenSell())
    57.    {
    58.       sellTicket = sell(0.01,300,200,"sell",0);
    59.       if(sellTicket>0)
    60.       {
    61.          Alert("空单下单成功,订单号码是:"+sellTicket);
    62.       }else if(buyTicket<0)
    63.       {
    64.          Alert("空单下单失败");
    65.       }
    66.    }
    67.    
    68.    return(0);
    69.   }
    70. //+------------------------------------------------------------------+
    71. //get data
    72. void getData()
    73. {
    74.    //获取  均线 数据
    75.   ema10_15M = iMA(Symbol(),PERIOD_M15,10,0,MODE_EMA,PRICE_CLOSE,0);//最后一根k线
    76.   ema20_15M = iMA(Symbol(),PERIOD_M15,20,0,MODE_EMA,PRICE_CLOSE,0);//最后一根k线
    77.   ema10_30M = iMA(Symbol(),PERIOD_M30,10,0,MODE_EMA,PRICE_CLOSE,0);//最后一根k线
    78.   ema20_30M = iMA(Symbol(),PERIOD_M30,10,0,MODE_EMA,PRICE_CLOSE,0);//最后一根k线
    79.   
    80.   //获取 kdj 数据
    81.   k = iStochastic(Symbol(),PERIOD_M15,8,5,5,MODE_SMA,0,MODE_MAIN,0);//最后一根k线 主线 蓝色
    82.   d = iStochastic(Symbol(),PERIOD_M15,8,5,5,MODE_SMA,0,MODE_SIGNAL,0);//最后一根k线 线号线 红色
    83.   prevK = iStochastic(Symbol(),PERIOD_M15,8,5,5,MODE_SMA,0,MODE_MAIN,1);//上一根k线 主线 蓝色
    84.   prevD = iStochastic(Symbol(),PERIOD_M15,8,5,5,MODE_SMA,0,MODE_SIGNAL,1);//上一根k线 线号线 红色
    85. }


    86. // open sell contidion
    87. bool needOpenSell()
    88. {
    89.   bool result = FALSE;
    90.   if((ema10_15M<ema20_15M)&&(ema10_30M<ema20_30M))
    91.   {
    92.     if((k<d)&&(prevK>prevD))
    93.     {
    94.       result = TRUE;
    95.     }
    96.   }
    97.   return (result);
    98. }

    99.   // open buy contidion
    100. bool needOpenBuy()
    101. {
    102.   bool result = FALSE;
    103.   if((ema10_15M>ema20_15M)&&(ema10_30M>ema20_30M))
    104.   {
    105.    if((k>d)&&(prevK
    106.    {
    107.       result = TRUE;
    108.    }
    109.   }
    110.   return (result);
    111. }

    112. int buy(double lots,int stopLoss,int stopProfit,string comment,int magic)
    113. {
    114.    int ticket = 0;
    115.    int findBuyNum =0;   
    116.    for(int i=0;i
    117.    {
    118.       if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
    119.       {
    120.          if(OrderComment()==comment)
    121.          {
    122.             findBuyNum++;
    123.          }
    124.       }
    125.    }
    126.    
    127.    if(findBuyNum==0)  //避免同一标识 重复下单
    128.    {  
    129.       ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,30,0,0,comment,magic,0,White);  //适应开单不能下止盈止损的平台
    130.       if(ticket>0)
    131.       {
    132.          if(OrderSelect(ticket,SELECT_BY_TICKET)==true)
    133.          {
    134.             int stopLossValue=OrderOpenPrice()-stopLoss*Point;
    135.             int stopProfitValue=OrderOpenPrice()+stopProfit*Point;
    136.             if(stopLoss==0)
    137.             {
    138.                stopLossValue=0;
    139.             }
    140.             if(stopProfit==0)
    141.             {
    142.                stopProfitValue=0;
    143.             }
    144.          
    145.             if(OrderModify(OrderTicket(),OrderOpenPrice(),stopLossValue,stopProfitValue,0,White)==true) //下单成功没问题,修改订单成功后在返回
    146.             {
    147.                return (ticket);
    148.             }
    149.          }
    150.       }
    151.    }
    152.    
    153.    return (0);
    154. }

    155. int sell(double lots,int stopLoss,int stopProfit,string comment,int magic)  //magic 暂时没有用到
    156. {
    157.    int ticket = 0;
    158.    int findSellNum =0;   
    159.    for(int i=0;i
    160.    {
    161.       if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
    162.       {
    163.          if(OrderComment()==comment)
    164.          {
    165.             findSellNum++;
    166.          }
    167.       }
    168.    }
    169.    
    170.    if(findSellNum==0)  //避免同一标识 重复下单
    171.    {
    172.       ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,30,0,0,comment,magic,0,Red);    //适应开单不能下止盈止损的平台
    173.       if(ticket>0)
    174.       {
    175.          if(OrderSelect(ticket,SELECT_BY_TICKET)==true)
    176.          {
    177.             int stopLossValue=OrderOpenPrice()+stopLoss*Point;
    178.             int stopProfitValue=OrderOpenPrice()-stopProfit*Point;
    179.             if(stopLoss==0)
    180.             {
    181.                stopLossValue=0;
    182.             }
    183.             if(stopProfit==0)
    184.             {
    185.                stopProfitValue=0;
    186.             }
    187.          
    188.             if(OrderModify(OrderTicket(),OrderOpenPrice(),stopLossValue,stopProfitValue,0,Red)==true) //下单成功没问题,修改订单成功后在返回
    189.             {
    190.                return (ticket);
    191.             }
    192.          }
    193.       }
    194.       
    195.    }
    196.    
    197.    return (0);
    198. }
    复制代码


    2010c LV17

    发表于 2016-6-8 17:56:39 | 显示全部楼层



    int  OrdersTotal();


    Returned value

    Total amount of market and pending orders.

    阿强_cqgoY LV4

    发表于 2016-6-8 21:31:54 | 显示全部楼层

    陈沫池 发表于 2016-6-8 17:35
    增一个变量,做为交易的开关

    谢谢,如果只开一个单,统计总单数,开单判断就可以了,
    但我想每个顶点都开一单。最多开三单。
    但是,每次达标开单,都是一次开三个单。
    没找什么解决方法。

    阿强_cqgoY LV4

    发表于 2016-6-8 21:33:37 | 显示全部楼层

    陈沫池 发表于 2016-6-8 17:35
    增一个变量,做为交易的开关

    谢谢,
    能不能用柱子判断?就是开了单,同柱不重复开单?

    henaiyun LV7

    发表于 2016-6-8 23:20:46 | 显示全部楼层

    阿强_cqgoY 发表于 2016-6-8 21:33
    谢谢,
    能不能用柱子判断?就是开了单,同柱不重复开单?

    可以实现的

    阿强_cqgoY LV4

    发表于 2016-6-8 23:34:35 | 显示全部楼层


    真的吗?有没源码?

    henaiyun LV7

    发表于 2016-6-9 09:40:19 | 显示全部楼层

    阿强_cqgoY 发表于 2016-6-8 23:34
    真的吗?有没源码?

    加Q聊吧,私信你了

    阿强_cqgoY LV4

    发表于 2016-6-10 19:11:18 | 显示全部楼层

    谢谢大家,已经解决了。
    只是加了一个同BAR不重复开单的过滤。
    123下一页
    您需要登录后才可以回帖 登录 | 注册

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

    微信二维码

    有问题联系客服