交易危机

 找回密码
 快捷注册(禁q号)

QQ登录

只需一步,快速开始

搜索
广告位
查看: 7482|回复: 61
打印 上一主题 下一主题

[指标] 求助:将所有单子设平保的代码怎么写?

[复制链接]

1105

主题

2万

积分

17

精华

操盘专家

金钱
24261 美元
权重
251
跳转到指定楼层
楼主
发表于 2020-4-15 11:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我想一键实现,所有单子独立平保的功能。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 保留保留
太阳每天升起,每天都是新的一天。

1105

主题

2万

积分

17

精华

操盘专家

金钱
24261 美元
权重
251
推荐
 楼主| 发表于 2020-4-15 23:01 | 只看该作者
usdjpy 发表于 2020-4-15 22:49
5 老板  能不能帮忙 做个这样的指标  不是EA  谢谢了

这个容易


订单统计+日期时间.rar (2.1 KB, 下载次数: 3)
太阳每天升起,每天都是新的一天。
回复 支持 1 反对 0

使用道具 举报

12

主题

2192

积分

2

精华

中级操盘手

金钱
2192 美元
权重
0
推荐
发表于 2020-4-15 17:31 | 只看该作者
本帖最后由 hpy6666 于 2020-4-15 17:32 编辑
573 发表于 2020-4-15 17:08
我只会这种简单的,不过作为手动交易的一个辅助工具,对我来说足够了:


哈哈,平保EA的目的是盈利的单子不亏损,你这样弄手续费全部是白交了的!
附件是源码; 能把你的这个源码分享下么,我想改一改!

自动盈利平保2点EA.zip

1.5 KB, 下载次数: 4, 下载积分: 金钱 -3

售价: 3 金钱  [记录]

不能用于黄金和白银

回复 支持 1 反对 0

使用道具 举报

12

主题

2192

积分

2

精华

中级操盘手

金钱
2192 美元
权重
0
沙发
发表于 2020-4-15 12:32 | 只看该作者
沙发,MT4的我有!不能用于黄金!

1105

主题

2万

积分

17

精华

操盘专家

金钱
24261 美元
权重
251
板凳
 楼主| 发表于 2020-4-15 13:31 | 只看该作者
hpy6666 发表于 2020-4-15 12:32
沙发,MT4的我有!不能用于黄金!

有源码吗?
太阳每天升起,每天都是新的一天。

2127

主题

6万

积分

157

精华

大型投行

金钱
61358 美元
权重
640
地板
发表于 2020-4-15 15:10 | 只看该作者
modify 止损=开仓价

30

主题

1万

积分

0

精华

操盘专家

金钱
13785 美元
权重
1
5
发表于 2020-4-15 16:04 | 只看该作者
大爷说的对。
大概流程:
先对比能否设置平保价。再对比是否已经设置完避免重复。
取3个价,当前价、止损价、开仓价

对比当前是否可以设置平保(有时大于安全点范围由你自己设定,这要有个判断黄金点数与其他不同):当前价能否设置平保,如果能就将止损价+-点差设成平保价。

再对比是否已经设置完:取出持仓单的止损价是否与开仓价对应(因为有多空方向所以多大于开仓;空小于开仓)。如果对应就不操作,不对应再检查

1105

主题

2万

积分

17

精华

操盘专家

金钱
24261 美元
权重
251
6
 楼主| 发表于 2020-4-15 16:21 | 只看该作者
frlin2003 发表于 2020-4-15 15:10
modify 止损=开仓价

这么简单,我怎么没想到
太阳每天升起,每天都是新的一天。

1105

主题

2万

积分

17

精华

操盘专家

金钱
24261 美元
权重
251
7
 楼主| 发表于 2020-4-15 16:22 | 只看该作者
过去了 发表于 2020-4-15 16:04
大爷说的对。
大概流程:
先对比能否设置平保价。再对比是否已经设置完避免重复。

是的,如果要完整无漏洞的写出来,还要费一番功夫才行
太阳每天升起,每天都是新的一天。

1105

主题

2万

积分

17

精华

操盘专家

金钱
24261 美元
权重
251
8
 楼主| 发表于 2020-4-15 16:24 | 只看该作者
过去了 发表于 2020-4-15 16:04
大爷说的对。
大概流程:
先对比能否设置平保价。再对比是否已经设置完避免重复。

专业的就是不一样,思路清晰,结构严谨。
太阳每天升起,每天都是新的一天。

2127

主题

6万

积分

157

精华

大型投行

金钱
61358 美元
权重
640
9
发表于 2020-4-15 16:27 | 只看该作者
573 发表于 2020-4-15 16:21
这么简单,我怎么没想到

头脑简单的人,一般想问题都比较简单

1105

主题

2万

积分

17

精华

操盘专家

金钱
24261 美元
权重
251
10
 楼主| 发表于 2020-4-15 17:08 | 只看该作者
过去了 发表于 2020-4-15 16:04
大爷说的对。
大概流程:
先对比能否设置平保价。再对比是否已经设置完避免重复。

我只会这种简单的,不过作为手动交易的一个辅助工具,对我来说足够了:

  1. void dlpb()
  2.   {
  3.    int t=OrdersTotal();
  4.    for(int i=t-1; i>=0; i--)
  5.      {
  6.       if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
  7.         {
  8.          if(OrderSymbol()==Symbol())
  9.            {
  10.             double p=MarketInfo(OrderSymbol(),MODE_POINT);
  11.             if(OrderType()<=1 && OrderSymbol()==Symbol())
  12.               {
  13.                OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrRed);
  14.               }
  15.            }
  16.         }
  17.      }
  18.   }
复制代码


太阳每天升起,每天都是新的一天。

3

主题

4182

积分

0

精华

高级操盘手

金钱
4182 美元
权重
0
12
发表于 2020-4-15 17:47 | 只看该作者
看看这两个函数是否对你有用:


//+--------------------------------------------------------------------------------------------+
//平保函数(保本止损)
//所谓的平保,就是订单盈利后将止损移动到开仓价格位置,以零点利润保护订单不亏损出场。当然也可以保护到开仓价格上面指定点数,修改函数中的0即可。
//+--------------------------------------------------------------------------------------------+
//extern bool 使用平保功能=true;  //是否使用平保功能
//extern int 盈利多少点平保=30;   //盈利多少点才实施平保
//extern int 平保的盈利点数=10;   //实施平保附带要求的盈利点数
void 平保()
{
int ticket2;
//for(int j=0;j<OrdersTotal();j++)
for(int j=OrdersTotal()-1;j>=0;j--)
   {
      ticket2 = OrderSelect(j,SELECT_BY_POS,MODE_TRADES);
      if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==魔术号码)
         {
            if(OrderType()==OP_BUY) //多单
               {
                  if(NormalizeDouble((Bid-OrderOpenPrice()),Digits)>盈利多少点平保*Point)  //如果"(现价-订单的开仓价)>盈利多少点平保*Point”--盈利达到“盈利多少点平保”后才平保
                   {
                     //那么发出修改订单指令“新的止损价=订单的开仓价+平保的盈利点数*Point”
                     ticket2 = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+平保的盈利点数*Point,Digits),OrderTakeProfit(),0,Red);
                   }
               }
            if(OrderType()==OP_SELL)   //空单
               {
                  if(NormalizeDouble((OrderOpenPrice()-Ask),Digits)>盈利多少点平保*Point)  //如果"(订单的开仓价-现价)>盈利多少点平保*Point”--盈利达到“盈利多少点平保”后才平保
                   {
                     //那么发出修改订单指令“新的止损价=订单的开仓价-平保的盈利点数*Point”
                     ticket2 = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-平保的盈利点数*Point,Digits),OrderTakeProfit(),0,Green);
                   }
               }
         }
   }
}
//+--------------------------------------------------------------------------------------------+


//+--------------------------------------------------------------------------------------------+
//平保函数(保本止损)
//所谓的平保,就是订单盈利后将止损移动到开仓价格位置,以零点利润保护订单不亏损出场。当然也可以保护到开仓价格上面指定点数,修改函数中的0即可。
//+--------------------------------------------------------------------------------------------+
//extern bool 使用平保功能=true;  //是否使用平保功能
//extern int 盈利多少点平保=30;   //盈利多少点才实施平保
//extern int 平保的盈利点数=10;   //实施平保附带要求的盈利点数
void 手动平保()
{
int ticket3;
//for(int j=0;j<OrdersTotal();j++)
for(int j=OrdersTotal()-1;j>=0;j--)
   {
      ticket3 = OrderSelect(j,SELECT_BY_POS,MODE_TRADES);
      if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==魔术号码)
         {
            if(OrderType()==OP_BUY) //多单
               {
                  if(NormalizeDouble((Bid-OrderOpenPrice()),Digits)>平保的盈利点数*Point)  //如果"(现价-订单的开仓价)>平保的盈利点数*Point”--盈利达到“平保的盈利点数”后才平保
                   {
                     //那么发出修改订单指令“新的止损价=订单的开仓价+平保的盈利点数*Point”
                     ticket3 = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+平保的盈利点数*Point,Digits),OrderTakeProfit(),0,Red);
                   }
               }
            if(OrderType()==OP_SELL)   //空单
               {
                  if(NormalizeDouble((OrderOpenPrice()-Ask),Digits)>平保的盈利点数*Point)  //如果"(订单的开仓价-现价)>平保的盈利点数*Point”--盈利达到“平保的盈利点数”后才平保
                   {
                     //那么发出修改订单指令“新的止损价=订单的开仓价-平保的盈利点数*Point”
                     ticket3 = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()-平保的盈利点数*Point,Digits),OrderTakeProfit(),0,Green);
                   }
               }
         }
   }
}
//+--------------------------------------------------------------------------------------------+

3

主题

4182

积分

0

精华

高级操盘手

金钱
4182 美元
权重
0
13
发表于 2020-4-15 18:04 | 只看该作者
这两个“平保函数(保本止损)”的区别:

void 平保()————这个函数用于自编EA的时候实施自动平保的功能:条件是:盈利的点数>“盈利多少点平保”这个设定值

void 手动平保()——这个函数用于在EA中手动按键实施平保:条件是:盈利的点数>“平保的盈利点数”这个设定值

1105

主题

2万

积分

17

精华

操盘专家

金钱
24261 美元
权重
251
14
 楼主| 发表于 2020-4-15 18:05 | 只看该作者
hpy6666 发表于 2020-4-15 17:31
哈哈,平保EA的目的是盈利的单子不亏损,你这样弄手续费全部是白交了的!
附件是源码; 能把你的这个源码 ...

我的是修改拼凑出来的,

两个同时加载。

  1. //+------------------------------------------------------------------+
  2. //|                                                      ProjectName |
  3. //|                                      Copyright 2018, CompanyName |
  4. //|                                       http://www.companyname.net |
  5. //+------------------------------------------------------------------+

  6. #property strict
  7. int    FontSize=14;
  8. int    WhichCorner0_3=1;
  9. int        MarketSpread;
  10. int        firsttime=1;
  11. string FontType="微软雅黑";
  12. color  FontColor = Yellow;
  13. double p;
  14. int duokong=0;  
  15. double pip=0.0001,point,digits;
  16. int slip=5;
  17. string hbd ="===";
  18. //+------------------------------------------------------------------+
  19. //|                                                                  |
  20. //+------------------------------------------------------------------+

  21. int init()
  22.   {
  23.   ObjectCreate( "北京时间", OBJ_LABEL, 0,0,0,0,0,0,0);
  24.   ObjectSet( "北京时间", OBJPROP_CORNER, 1);
  25.   ObjectSet( "北京时间", OBJPROP_XDISTANCE, 110);
  26.   ObjectSet( "北京时间", OBJPROP_YDISTANCE, 70);
  27.   ObjectSetText(  "北京时间", "", 18, "微软雅黑", clrAqua);
  28.   ObjectCreate( "日期", OBJ_LABEL, 0,0,0,0,0,0,0);
  29.   ObjectSet( "日期", OBJPROP_CORNER, 1);
  30.   ObjectSet( "日期", OBJPROP_XDISTANCE, 115);
  31.   ObjectSet( "日期", OBJPROP_YDISTANCE, 26);
  32.   ObjectSetText(  "日期", "", 14, "微软雅黑", clrAqua);
  33.     return(0);
  34.   }


  35. int start()
  36.   {

  37.   ObjectSetText("日期", TimeToStr(TimeLocal(), TIME_DATE), 20, "微软雅黑", clrAqua );
  38.   ObjectSetText("北京时间", TimeToStr(TimeLocal(), TIME_MINUTES|TIME_SECONDS), 38, "微软雅黑", clrAqua );
  39.    MarketSpread=MarketInfo(Symbol(),MODE_SPREAD);
  40.    
  41. /*-------   
  42.    string Market_point5 = "输入点数     输入价格";

  43.    ObjectCreate("Market_Point5_Label", OBJ_LABEL, 0, 0, 0);
  44.    ObjectSetText("Market_Point5_Label", Market_point5, 12, FontType, clrAqua);
  45.    ObjectSet("Market_Point5_Label", OBJPROP_CORNER, WhichCorner0_3);
  46.    ObjectSet("Market_Point5_Label", OBJPROP_XDISTANCE, 110);
  47.    ObjectSet("Market_Point5_Label", OBJPROP_YDISTANCE, 150);
  48. -------*/

  49.    string Market_point4 = Ask;//买价

  50.    ObjectCreate("Market_Point4_Label", OBJ_LABEL, 0, 0, 0);
  51.    ObjectSetText("Market_Point4_Label", Market_point4, 20, FontType, clrRed);
  52.    ObjectSet("Market_Point4_Label", OBJPROP_CORNER, WhichCorner0_3);
  53.    ObjectSet("Market_Point4_Label", OBJPROP_XDISTANCE, 115);
  54.    ObjectSet("Market_Point4_Label", OBJPROP_YDISTANCE, 150);
  55.    
  56.       string Market_point = MarketSpread;//点差

  57.    ObjectCreate("Market_Point_Label", OBJ_LABEL, 0, 0, 0);
  58.    ObjectSetText("Market_Point_Label", Market_point, 20, FontType, FontColor);
  59.    ObjectSet("Market_Point_Label", OBJPROP_CORNER, WhichCorner0_3);
  60.    ObjectSet("Market_Point_Label", OBJPROP_XDISTANCE,115);
  61.    ObjectSet("Market_Point_Label", OBJPROP_YDISTANCE, 190);
  62.    
  63.       string Market_point3 = Bid;//卖价

  64.    ObjectCreate("Market_Point3_Label", OBJ_LABEL, 0, 0, 0);
  65.    ObjectSetText("Market_Point3_Label", Market_point3, 20, FontType, clrAqua);
  66.    ObjectSet("Market_Point3_Label", OBJPROP_CORNER, WhichCorner0_3);
  67.    ObjectSet("Market_Point3_Label", OBJPROP_XDISTANCE, 115);
  68.    ObjectSet("Market_Point3_Label", OBJPROP_YDISTANCE, 230);


  69.    if (hbd=="===")hbd=Symbol();
  70.      PointInit();
  71.      if(MarketInfo(hbd,MODE_DIGITS)==5){slip=slip*10;p=MarketInfo(Symbol(), MODE_SPREAD)/10;}
  72.      if(MarketInfo(hbd,MODE_DIGITS)==4)p=MarketInfo(Symbol(), MODE_SPREAD);
  73.      
  74.      
  75.     if (CountTrades(1,hbd,"",0)!=0)
  76.     {
  77.    string Market_point2 = "多单:"+DoubleToStr(CountTrades(1,hbd,"",0),2)+" 手,    均价:"+AvgPrice(1,hbd,1);
  78.    
  79.    ObjectCreate("Market_Point2_Label", OBJ_LABEL, 0, 0, 0);
  80.    ObjectSetText("Market_Point2_Label", Market_point2, 14, FontType, clrWhite);
  81.    ObjectSet("Market_Point2_Label", OBJPROP_CORNER, 1);
  82.    ObjectSet("Market_Point2_Label", OBJPROP_XDISTANCE, 10);
  83.    ObjectSet("Market_Point2_Label", OBJPROP_YDISTANCE, 305);
  84.     }
  85.     if(CountTrades(2,hbd,"",1)!=0)
  86.     {
  87.       string Market_point1 = "空单:"+DoubleToStr(CountTrades(2,hbd,"",1),2)+" 手,    均价:"+AvgPrice(2,hbd,2);

  88.    ObjectCreate("Market_Point1_Label", OBJ_LABEL, 0, 0, 0);
  89.    ObjectSetText("Market_Point1_Label", Market_point1, 14, FontType, clrWhite);
  90.    ObjectSet("Market_Point1_Label", OBJPROP_CORNER, 1);
  91.    ObjectSet("Market_Point1_Label", OBJPROP_XDISTANCE,10);
  92.    ObjectSet("Market_Point1_Label", OBJPROP_YDISTANCE, 305);
  93.     }
  94.    return(0);
  95. }
  96. //+------------------------------------------------------------------+
  97. //|                                                                  |
  98. //+------------------------------------------------------------------+
  99. int deinit()
  100.   {
  101.    switch(UninitializeReason())
  102.      {
  103.       case REASON_CHARTCLOSE:
  104.       case REASON_REMOVE:
  105.       case REASON_RECOMPILE:
  106.          Comment("");
  107.          //ObjectDelete(OBJECT_NAME);
  108.          break;
  109.       case REASON_CHARTCHANGE:   // leave the object the way it is if simply switching timeframes
  110.       case REASON_PARAMETERS:
  111.       case REASON_ACCOUNT:
  112.          break;
  113.      }
  114.      ObjectDelete("北京时间");
  115.      ObjectDelete("日期");
  116.      ObjectDelete("Market_Point3_Label");
  117.      ObjectDelete("Market_Point4_Label");
  118.      ObjectDelete("Market_Point_Label");
  119.      ObjectDelete("Market_Point2_Label");
  120.      ObjectDelete("Market_Point1_Label");
  121.    return(0);
  122.   }
  123. //+------------------------------------------------------------------+

  124. //+-------------------------------订单数量统计--
  125.   double CountTrades(int duokong,string hb,string ordtip,int ordtype)
  126. {
  127.    double count;
  128.    for (int pos = OrdersTotal() - 1; pos >= 0; pos--)
  129.    {
  130.       OrderSelect(pos, SELECT_BY_POS, MODE_TRADES);
  131.       if (OrderSymbol() == hb  )
  132.       {
  133.          if (duokong == 1)
  134.          {
  135.             if ( OrderType() == ordtype)
  136.             {
  137.                count+=OrderLots();
  138.             }
  139.          }
  140.          
  141.          if (duokong == 2)
  142.          {
  143.             if ( OrderType() == ordtype)
  144.             {
  145.               count+=OrderLots();
  146.             }
  147.          }
  148.       }
  149.    }
  150.    
  151.    return (count);
  152. }  



  153. /////////////////////////////////////////////////////
  154.    void PointInit()
  155.    {
  156.       int digits = MarketInfo(hbd, MODE_DIGITS);
  157.       if (digits >= 2 && digits < 4)
  158.       {
  159.          point = 0.01;
  160.       }
  161.       if (digits >= 4)
  162.       {
  163.          point = 0.0001;
  164.       }
  165.    }
  166.    
  167.    //////////////////////////////////////////
  168. //计算多单或者空单的平均入场价,结果精确到汇率小数点位
  169.   double AvgPrice(int ddz,string hb,int duokong)
  170. {
  171.    double sum = 0;
  172.    double lots = 0;
  173.    
  174.    
  175.    for (int pos = OrdersTotal() - 1; pos >= 0; pos--)
  176.    {
  177.       OrderSelect(pos, SELECT_BY_POS, MODE_TRADES);
  178.       if (OrderSymbol() == hb )
  179.       {
  180.          if (duokong == 1)
  181.          {
  182.             if (OrderType() == 0)
  183.             {
  184.                sum += OrderOpenPrice() * OrderLots();
  185.                lots += OrderLots();
  186.             }
  187.          }
  188.          
  189.          if (duokong == 2)
  190.          {
  191.             if (OrderType() == 1)
  192.             {
  193.                sum += OrderOpenPrice() * OrderLots();
  194.                lots += OrderLots();
  195.             }
  196.          }
  197.       }
  198.    }
  199.    double ret;
  200.    if (lots!=0)
  201.       ret = NormalizeDouble(sum/lots,5);
  202.    else ret=0;
  203.    
  204.    return (ret);
  205. }  
  206. ///////////////////////////////////////////
复制代码


  1. //+------------------------------------------------------------------+
  2. //|                                                      ProjectName |
  3. //|                                      Copyright 2018, CompanyName |
  4. //|                                       http://www.companyname.net |
  5. //+------------------------------------------------------------------+

  6. #property copyright "573"
  7. #property link      "https://www.mql5.com"
  8. #property version   "1.00"
  9. #property strict

  10. //+------------------------------------------------------------------+
  11. //|                                                                  |
  12. //+------------------------------------------------------------------+
  13. int OnInit()
  14.   {
  15. //biaoqian("shuoming","当前货币操作面板",75,5,10,White);
  16. //biaoqian("jiage","输入价格",95,200,12,White);
  17.    anniu("closeall",clrWhite,90,30,"全部平仓");
  18.    anniu("delgua",clrWhite,90,70,"删除挂单");
  19.    anniu("dlpb",clrWhite,90,110,"独立平保");
  20.    shurukuang("tp",clrWhite,90,190);
  21.    anniu("slm",clrWhite,90,150,"统一止损");
  22.    anniu("tpm",clrWhite,90,230,"统一止盈");
  23.    return(INIT_SUCCEEDED);
  24.   }

  25. //+------------------------------------------------------------------+
  26. //|                                                                  |
  27. //+------------------------------------------------------------------+
  28. void OnDeinit(const int reason)
  29.   {

  30.   }

  31. //+------------------------------------------------------------------+
  32. //|                                                                  |
  33. //+------------------------------------------------------------------+
  34. void OnTick()
  35.   {


  36.   }

  37. //+------------------------------------------------------------------+
  38. //|                                                                  |
  39. //+------------------------------------------------------------------+
  40. void OnChartEvent(const int id,
  41.                   const long &lparam,
  42.                   const double &dparam,
  43.                   const string &sparam)
  44.   {
  45.    if(id==CHARTEVENT_OBJECT_CLICK)
  46.      {
  47.       if(sparam=="closeall")
  48.         {
  49.          closeall();
  50.         }
  51.       if(sparam=="delgua")
  52.         {
  53.          delgua();
  54.         }
  55.       if(sparam=="dlpb")
  56.         {
  57.          dlpb();
  58.         }
  59.       if(sparam=="tpm")
  60.         {
  61.          string tp=ObjectGetString(0,"tp",OBJPROP_TEXT);
  62.          //Alert ("输入框的文字为:"+tp);
  63.          modifytp(StringToDouble(tp));
  64.         }
  65.       if(sparam=="slm")
  66.         {
  67.          string tp=ObjectGetString(0,"tp",OBJPROP_TEXT);
  68.          //Alert ("输入框的文字为:"+tp);
  69.          modifysl(StringToDouble(tp));
  70.         }
  71.      }
  72.   }

  73. //+------------------------------------------------------------------+
  74. //|                                                                  |
  75. //+------------------------------------------------------------------+
  76. void modifytp(double tp)
  77.   {
  78.    int t=OrdersTotal();
  79.    for(int i=t-1; i>=0; i--)
  80.      {
  81.       if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
  82.         {
  83.          if(OrderSymbol()==Symbol())
  84.            {
  85.             double p=MarketInfo(OrderSymbol(),MODE_POINT);
  86.             if(OrderType()<=1 && OrderSymbol()==Symbol())
  87.               {
  88.                OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),tp,0,clrRed);
  89.               }
  90.            }
  91.         }
  92.      }
  93.   }

  94. //+------------------------------------------------------------------+
  95. //|                                                                  |
  96. //+------------------------------------------------------------------+
  97. void modifysl(double tp)
  98.   {
  99.    int t=OrdersTotal();
  100.    for(int i=t-1; i>=0; i--)
  101.      {
  102.       if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
  103.         {
  104.          if(OrderSymbol()==Symbol())
  105.            {
  106.             double p=MarketInfo(OrderSymbol(),MODE_POINT);
  107.             if(OrderType()<=1 && OrderSymbol()==Symbol())
  108.               {
  109.                OrderModify(OrderTicket(),OrderOpenPrice(),tp,OrderTakeProfit(),0,clrRed);
  110.               }
  111.            }
  112.         }
  113.      }
  114.   }

  115. void dlpb()
  116.   {
  117.    int t=OrdersTotal();
  118.    for(int i=t-1; i>=0; i--)
  119.      {
  120.       if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
  121.         {
  122.          if(OrderSymbol()==Symbol())
  123.            {
  124.             double p=MarketInfo(OrderSymbol(),MODE_POINT);
  125.             if(OrderType()<=1 && OrderSymbol()==Symbol())
  126.               {
  127.                OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrRed);
  128.               }
  129.            }
  130.         }
  131.      }
  132.   }

  133. //+------------------------------------------------------------------+
  134. //|                                                                  |
  135. //+------------------------------------------------------------------+
  136. void anniu(string name,color yanse,int x,int y,string text,int changdu=0)
  137.   {
  138.    ObjectCreate(0,name,OBJ_BUTTON,0,0,0);
  139.    ObjectSetInteger(0,name,OBJPROP_COLOR,yanse);
  140.    ObjectSetInteger(0,name,OBJPROP_BGCOLOR,clrDarkGreen);
  141.    ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
  142.    ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
  143.    if(changdu==0)
  144.      {
  145.       int as=StringLen(text);
  146.       ObjectSetInteger(0,name,OBJPROP_XSIZE,as*20);
  147.      }
  148.    else
  149.      {
  150.       ObjectSetInteger(0,name,OBJPROP_XSIZE,changdu);
  151.      }
  152.    ObjectSetInteger(0,name,OBJPROP_YSIZE,30);
  153.    ObjectSetString(0,name,OBJPROP_FONT,"Arial");
  154.    ObjectSetString(0,name,OBJPROP_TEXT,text);
  155.    ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
  156.    ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,clrOrange);
  157.    ObjectSetInteger(0,name,OBJPROP_CORNER,1);
  158.   }

  159. //+------------------------------------------------------------------+
  160. //|                                                                  |
  161. //+------------------------------------------------------------------+
  162. void shurukuang(string name, color yanse, int x, int y)
  163.   {
  164.    ObjectCreate(0,name,OBJ_EDIT,0,0,0) ;
  165.    ObjectSetInteger(0, name, OBJPROP_XDISTANCE,x) ;
  166.    ObjectSetInteger(0, name, OBJPROP_YDISTANCE,y) ;
  167. //--- set object size
  168.    ObjectSetInteger(0, name, OBJPROP_XSIZE, 80) ;
  169.    ObjectSetInteger(0, name, OBJPROP_YSIZE,30) ;
  170.    ObjectSetInteger(0, name, OBJPROP_FONTSIZE,14) ;
  171. //--- set the type of text alignmerk in the object
  172.    ObjectSetInteger(0, name, OBJPROP_ALIGN, ALIGN_LEFT) ;
  173. //--- enable (true) or cancle (false) read-only mode
  174.    ObjectSetInteger(0, name, OBJPROP_READONLY, false) ;
  175. //--- set the chart's corner, relative to which object coo
  176.    ObjectSetInteger(0, name, OBJPROP_CORNER,1) ;
  177. //--- set text color
  178.    ObjectSetInteger(0, name, OBJPROP_COLOR, clrBlack) ;
  179. //--- set border color
  180.    ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,clrOrange);
  181.    ObjectSetInteger(0,name,OBJPROP_BGCOLOR,clrDarkGray);
  182. //--- display in the foreground (false) or background ()
  183.    ObjectSetInteger(0,name,OBJPROP_BACK,false);
  184.    ObjectSetString(0,name,OBJPROP_TEXT,"");
  185.   }

  186. //+------------------------------------------------------------------+
  187. //|                                                                  |
  188. //+------------------------------------------------------------------+
  189. void biaoqian(string name, string neirong,int x,int y,int daxiao,color yanse)
  190.   {
  191.    if(ObjectFind(name)<0)
  192.      {
  193.       ObjectCreate(name, OBJ_LABEL,0,0,0);
  194.       ObjectSetText(name, neirong, daxiao, "宋体", yanse);
  195.       ObjectSet(name, OBJPROP_XDISTANCE,x);
  196.       ObjectSet(name, OBJPROP_YDISTANCE,y);
  197.       ObjectSet(name, OBJPROP_CORNER,1);
  198.      }
  199.    else
  200.      {
  201.       ObjectSetText(name,neirong,daxiao,"宋体", yanse);
  202.       WindowRedraw();
  203.      }
  204.   }

  205. //+------------------------------------------------------------------+
  206. //|                                                                  |
  207. //+------------------------------------------------------------------+
  208. void closeall()
  209.   {
  210.    int cnt, total;
  211.    total=OrdersTotal();
  212.    for(cnt=total-1; cnt>=0; cnt--)
  213.      {
  214.       OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

  215.       if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
  216.         {
  217.          OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);
  218.         }
  219.       if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
  220.         {
  221.          OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE);
  222.         }

  223.      }

  224.   }
  225. //+------------------------------------------------------------------+
  226. //|                                                                  |
  227. //+------------------------------------------------------------------+
  228. void closeallduo()
  229.   {
  230.    int cnt, total;
  231.    total=OrdersTotal();
  232.    for(cnt=total-1; cnt>=0; cnt--)
  233.      {
  234.       OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);


  235.       if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
  236.         {
  237.          OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE);
  238.         }

  239.      }

  240.   }
  241. //+------------------------------------------------------------------+
  242. //|                                                                  |
  243. //+------------------------------------------------------------------+
  244. void closeallkong()
  245.   {
  246.    int cnt, total;
  247.    total=OrdersTotal();
  248.    for(cnt=total-1; cnt>=0; cnt--)
  249.      {
  250.       OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

  251.       if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
  252.         {
  253.          OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);
  254.         }


  255.      }

  256.   }

  257. //+------------------------------------------------------------------+
  258. //|                                                                  |
  259. //+------------------------------------------------------------------+
  260. void delgua()
  261.   {
  262.    int t=OrdersTotal();
  263.    for(int i=t-1; i>=0; i--)
  264.      {
  265.       if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
  266.         {
  267.          if(OrderType()>1 && OrderSymbol()==Symbol())
  268.            {
  269.             OrderDelete(OrderTicket());
  270.            }
  271.         }
  272.      }
  273.   }
  274. //+------------------------------------------------------------------+
复制代码

太阳每天升起,每天都是新的一天。

1105

主题

2万

积分

17

精华

操盘专家

金钱
24261 美元
权重
251
15
 楼主| 发表于 2020-4-15 18:07 | 只看该作者
wsh9308 发表于 2020-4-15 18:04
这两个“平保函数(保本止损)”的区别:

void 平保()————这个函数用于自编EA的时候实施自动平保的功 ...

谢谢,有用,只要是源码都有用,我在学习中,还没入门呢
太阳每天升起,每天都是新的一天。

12

主题

2192

积分

2

精华

中级操盘手

金钱
2192 美元
权重
0
16
发表于 2020-4-15 18:29 | 只看该作者
573 发表于 2020-4-15 18:07
谢谢,有用,只要是源码都有用,我在学习中,还没入门呢


只要研究一些辅助性EA就行了, EA的目的是把稳定盈利的交易员的思想体现出来,减轻交易员的身体负担! 至于水平没到的想靠EA稳定盈利,就跟买彩票一样!
我更惨,得苦逼的自己学MT5 UEA风格写法!

146

主题

1000

积分

1

精华

初级操盘手

金钱
1000 美元
权重
0
17
发表于 2020-4-15 21:20 来自手机 | 只看该作者
微信搞死短信,炒外汇的估计也要搞死一批正宗程序员。

12

主题

2192

积分

2

精华

中级操盘手

金钱
2192 美元
权重
0
18
发表于 2020-4-15 21:27 | 只看该作者
花无缺 发表于 2020-4-15 21:20
微信搞死短信,炒外汇的估计也要搞死一批正宗程序员。

现在一大批程序员改行写EA 和做EA教程! 有的写一个EA直接收费几百元!  
再高深的做MT4黑平台的端口连接及提供数据源!

1105

主题

2万

积分

17

精华

操盘专家

金钱
24261 美元
权重
251
19
 楼主| 发表于 2020-4-15 22:11 | 只看该作者
加入均线跟踪止损功能,这个有些复杂,不好弄,

太阳每天升起,每天都是新的一天。

12

主题

2192

积分

2

精华

中级操盘手

金钱
2192 美元
权重
0
20
发表于 2020-4-15 22:46 | 只看该作者
你这均线取值不对吧!改下指标函数的周期就好了
您需要登录后才可以回帖 登录 | 快捷注册(禁q号)

本版积分规则

QQ|黄金吧|黄金论坛|手机版|指标下载|非农|目录|交易危机

版权所有: ©2014-2021 fx3q.com Powered by Discuz! X3
浙ICP备: ICP14039028

浙公网安备 33011802001420号

风险提示:杠杆风险高,交易要谨慎 声明:坛友发言和回复均为个人观点,不代表论坛立场。
若有侵权请联系fx3q@qq.com删除

快速回复 返回顶部 返回列表