90评论

26收藏

言成马丁EA 源码奉送

 

评论|共 90 个

中国人

发表于 2022-10-9 20:24:55 | 显示全部楼层

笑看华尔街

发表于 2022-10-9 22:42:47 | 显示全部楼层

顶下

元杰

发表于 2022-10-11 13:50:29 | 显示全部楼层

顶下

福哥

发表于 2022-10-13 16:24:10 | 显示全部楼层

支持下

山石之间

发表于 2022-10-14 19:59:32 | 显示全部楼层

空之轨迹

发表于 2022-10-15 12:54:32 | 显示全部楼层

交易乐趣

发表于 2022-10-19 15:53:01 | 显示全部楼层

支持下

triple3

发表于 2024-10-29 15:57:55 | 显示全部楼层

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

  6. string 受限联系QQ号="2358587193";
  7. bool 是否限制使用时间=true;
  8. datetime 允许运行到终止时间=D'2021.03.28 00:00';
  9. bool 是否开启账号绑定限制他人使用=false;
  10. int 允许运行此EA的账号[100]= {10068018,137411,8088091,134903,630105,131891}; //允许多个账号时,账号间请用分号隔开,如下:允许运行此EA的账号[100]={12345,11111,22222,33333,44444,55555};

  11. input double 单量相对原来的倍率=0.1;
  12. extern int MaxTicket = 16;//最大开仓层数
  13. extern int AddPoint = 60;//加仓间隔
  14. string 灬b1="---------";
  15. input string 建仓手数_可增减="0.2/0.2/0.3/0.45/0.68/1.01/1.52/2.28/3.42/5.13/7.69/9.45/11.54/17.43/25.89/25.89";
  16. input int A_单边持仓达到N单后=5;
  17. input int A_价格间隔应大于N微点=100;
  18. input double A_单量相对原来的倍率=0.1;
  19. input int B_单边持仓达到N单后=9;
  20. input int B_价格间隔应大于N微点=150;
  21. input double B_单量相对原来的倍率=0.1;
  22. input int C_单边持仓达到N单后=12;
  23. input int C_价格间隔应大于N微点=200;
  24. input double C_单量相对原来的倍率=0.1;

  25. input string 灬d1="---------";
  26. input bool 是否开启收盘时加仓=false;
  27. int B_单向均价盈利N微点后_0为关闭=0;
  28. int B_追踪止损于盈利回撤N微点平仓_0为关闭=0;
  29. extern double KongStopPrice = 2000.0; //止损N微点
  30. extern int WinPoint = 30;//获利目标

  31. input string 灬d2="---------";
  32. input string 说明1: = "最大开仓数量,本EA基于五位报价";
  33. input string 说明2: = "基础参数";
  34. extern bool Duo = TRUE;//多单开关
  35. extern bool Kong = TRUE;//空单开关
  36. extern double DuoStopPrice = 0.1;
  37. extern string 说明3: = "";
  38. extern double XiShu = 0.1;
  39. extern string 说明4: = "";
  40. string 说明5: = "智能功能区,默认开启";
  41. extern bool IsCloseByTotal = TRUE;
  42. int Gi_164 = 6;
  43. extern bool IsCloseByTime = TRUE;
  44. int Hours = 24;
  45. bool IsSendMail = FALSE;
  46. string 说明7: = "";
  47. int Slippage = 10;//最大滑点
  48. string Flags = "QQ2358587193";
  49. extern int Magic = 501371;
  50. double Money = 10000000000000000.0;
  51. datetime Gt_212 = 0;
  52. double Gd_216 = 0.1;
  53. int ZH_01 = 5010541;//真实账号绑定
  54. string Gs_buy_224 = "Buy";
  55. string Gs_sell_232 = "Sell";
  56. int Gi_240 = 0;
  57. int Gi_244 = 0;
  58. double Gd_248 = 0.0;
  59. int Gi_256 = 0;
  60. //int Gi_tm2 = D'201.01.28';//时间年.月.日(EA的到期时间)
  61. int Gi_260 = 0;
  62. int Gi_264 = 0;
  63. bool Gi_268 = TRUE;

  64. //+------------------------------------------------------------------+
  65. //| Expert initialization function                                   |
  66. //+------------------------------------------------------------------+
  67. double minlot=MarketInfo(Symbol(), MODE_MINLOT);
  68. double maxlot=MarketInfo(Symbol(), MODE_MAXLOT);
  69. int init()
  70.   {

  71.    Gi_256= (TimeCurrent());
  72.    /*/if(Gi_256>=Gi_tm2) {
  73.    Gi_268 = FALSE;
  74.    Alert("EA停止工作,原因是EA过期");
  75.    }/*/
  76.    if(MaxTicket > 25)
  77.      {
  78.       Gi_268 = FALSE;
  79.       Alert("MaxTicket最大值是25。");
  80.      }
  81.    if(MaxTicket > 25)
  82.       MaxTicket = 25;//(MaxTicket > 16) MaxTicket = 16;
  83.    Gs_buy_224 = Symbol() + "Buy" + Flags;
  84.    Gs_sell_232 = Symbol() + "Sell" + Flags;
  85.    Gi_260 = 0;
  86.    Gi_264 = 0;
  87.    Gd_248 = f0_25();
  88.    Print("微信:2358587193" + Gd_248);
  89.    Print("加载完成!" + Magic);
  90.    f0_26("message2", Flags + " :标识", 5, 5, 10, "Verdana", Orchid, 3);
  91.    f0_26("message4", WinPoint + " :止盈", 5, 45, 10, "Verdana", Orchid, 3);
  92.    f0_26("message5", AccountLeverage() + " :杠杆", 5, 65, 10, "Verdana", Orchid, 3);
  93.    return (0);
  94.   }

  95. //+------------------------------------------------------------------+
  96. //| Expert deinitialization function                                 |
  97. //+------------------------------------------------------------------+
  98. int deinit()
  99.   {
  100.    return (0);
  101.   }

  102. //+------------------------------------------------------------------+
  103. //| Expert tick function                                             |
  104. //---------------------  ----------------------------------------
  105. int start()
  106.   {
  107.    bool isAllowTrade=false;
  108.    for(int i=0; i<100; i++)
  109.      {
  110.       if(((TimeCurrent()<允许运行到终止时间&&TimeLocal()<允许运行到终止时间)||!是否限制使用时间)&&(AccountNumber()==允许运行此EA的账号[i]||!是否开启账号绑定限制他人使用))
  111.         {
  112.          isAllowTrade=True;
  113.          break;
  114.         }
  115.      }
  116.    if(!isAllowTrade&&AccountNumber()>0)
  117.      {
  118.       Alert("请联系QQ"+受限联系QQ号+",获取使用权限");
  119.       Sleep(5000);
  120.       return(0);
  121.      }

  122. //订单统计 NormalizeDouble规范小数点 注意:除法的分母必须为小数,%余数必须整数。
  123.    double ArrayProfit[];
  124.    ArrayResize(ArrayProfit,OrdersTotal());
  125.    int NewKBuyVol=0,NewKSellVol=0,NewKAllVol=0;
  126.    int BuyVol=0,SellVol=0,AllVol=0,FirstAllType=8,LastAllType=8;
  127.    double BuyLots=0,SellLots=0,AllLots=0,BuyLowestLots=0,SellLowestLots=0,BuyHighestLots=0,SellHighestLots=0,BuyHighLots=0,SellHighLots=0,BuyLowLots=0,SellLowLots=0,BuyProfit=0,SellProfit=0,AllProfit=0,AllSwap=0,FirstAllProfit=0,LastAllProfit=0;
  128.    double AllBuyOpenPrice=0,AllSellOpenPrice=0,AllTPHighest=0,AllTPLowest=0,AllTPHighestPoint=0,AllTPLowestPoint=0;
  129.    double BuyLowest=0,SellLowest=0,BuyHighest=0,SellHighest=0,AllLowest=0,AllHighest=0;
  130.    double FirstBuyOpenPrice=0,FirstSellOpenPrice=0,FirstAllOpenPrice=0,LastBuyOpenPrice=0,LastSellOpenPrice=0,FirstBuyLots=0,FirstSellLots=0,FirstAllLots=0,LastAllOpenPrice=0,LastBuyLots=0,LastSellLots=0,LastAllLots=0,Last2BuyLots=0,Last2SellLots=0,Last2AllLots=0;
  131.    datetime FirstBuyOpenTime=0,FirstSellOpenTime=0,FirstAllOpenTime=0,LastBuyOpenTime=0,LastSellOpenTime=0,LastAllOpenTime=0;
  132.    int PendAllVol=0;
  133.    double PendAllLots=0;
  134.    int PendCutBuyVol=0,PendCutSellVol=0;
  135.    int PendBuyVol=0,PendSellVol=0;
  136.    double PendBuyLots=0,PendSellLots=0,PendBuyLowest=0,PendBuyHighest=0,PendFirstBuyLots=0,PendFirstBuyOpenPrice=0,PendLastBuyOpenPrice=0,PendLastBuyLots=0,PendBuyHighestLots=0,PendBuyLowestLots=0,PendSellLowestLots=0,PendSellHighestLots=0;
  137.    double PendSellLowest=0,PendSellHighest=0,PendFirstSellLots=0,PendFirstSellOpenPrice=0,PendLastSellOpenPrice=0,PendLastSellLots=0;
  138.    double PendCutSellLowest=0,PendCutSellHighest=0,PendCutBuyLowest=0,PendCutBuyHighest=0;
  139.    datetime PendFirstBuyOpenTime=0,PendLastBuyOpenTime=0,PendFirstSellOpenTime=0,PendLastSellOpenTime=0;
  140.    if(OrdersTotal()>=0)
  141.      {
  142.       for(i=OrdersTotal()-1; i>=0; i--) //和历史统计一样,从0表示First首单。 for(int i=0;i<OrdersTotal();i++)  //从First首单开始扫描。
  143.         {
  144.          if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
  145.            {
  146.             if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic) //&&OrderOpenTime()>=StartTime
  147.               {
  148.                if(OrderType()==0||OrderType()==1)
  149.                  {
  150.                   if(OrderOpenTime()>=Time[0])
  151.                     {
  152.                      NewKAllVol++;  //当前K线中已建仓数量
  153.                     }
  154.                   ArrayProfit[AllVol]=OrderProfit()+OrderCommission()+OrderSwap();
  155.                   AllVol++;
  156.                   if(AllVol==2)
  157.                     {
  158.                      Last2AllLots=OrderLots();
  159.                     }
  160.                   AllLots=AllLots+OrderLots();  //MarketInfo(Symbol(), MODE_MARGINREQUIRED)  1标准手所需保证金
  161.                   AllProfit=AllProfit+OrderProfit()+OrderCommission()+OrderSwap();
  162.                   AllSwap=AllSwap+OrderCommission()+OrderSwap();
  163.                   if((AllTPHighest<OrderProfit())||AllTPHighest==0)
  164.                     {
  165.                      AllTPHighest=OrderProfit();
  166.                      AllTPHighestPoint=MathAbs(OrderOpenPrice()-Bid)/Point;
  167.                     }
  168.                   if((AllTPLowest>OrderProfit())||AllTPLowest==0)
  169.                     {
  170.                      AllTPLowest=OrderProfit();
  171.                      AllTPLowestPoint=MathAbs(OrderOpenPrice()-Bid)/Point;
  172.                     }
  173.                   if(FirstAllOpenTime>OrderOpenTime()||FirstAllOpenTime==0)
  174.                     {
  175.                      FirstAllOpenTime=OrderOpenTime();   //最后单的入场时间。
  176.                      FirstAllLots=OrderLots();
  177.                      FirstAllOpenPrice=OrderOpenPrice();
  178.                      FirstAllType=OrderType();
  179.                      FirstAllProfit=OrderProfit();
  180.                     }
  181.                   if(LastAllOpenTime<OrderOpenTime())
  182.                     {
  183.                      LastAllOpenTime=OrderOpenTime();   //最后单的入场时间。
  184.                      LastAllLots=OrderLots();
  185.                      LastAllOpenPrice=OrderOpenPrice();
  186.                      LastAllType=OrderType();
  187.                      LastAllProfit=OrderProfit();
  188.                     }
  189.                   if(AllLowest>OrderOpenPrice()||AllLowest==0)
  190.                     {
  191.                      AllLowest=OrderOpenPrice();  //建仓最低价格。
  192.                     }
  193.                   if(AllHighest<OrderOpenPrice())
  194.                     {
  195.                      AllHighest=OrderOpenPrice();  //建仓最高价格。
  196.                     }
  197.                  }
  198.                if(OrderType()==0)
  199.                  {
  200.                   if(OrderOpenTime()>=Time[0])
  201.                     {
  202.                      NewKBuyVol++;
  203.                     }
  204.                   BuyVol++; //if(BuyVol==2) {Last2BuyOpenPrice=OrderOpenPrice();}
  205.                   if(BuyVol==2)
  206.                     {
  207.                      Last2BuyLots=OrderLots();
  208.                     }
  209.                   BuyLots=BuyLots+OrderLots();
  210.                   if(BuyHighLots<OrderLots())
  211.                     {
  212.                      BuyHighLots=OrderLots();
  213.                     }
  214.                   if(BuyLowLots>OrderLots()||BuyLowLots==0)
  215.                     {
  216.                      BuyLowLots=OrderLots();
  217.                     }
  218.                   AllBuyOpenPrice=AllBuyOpenPrice+OrderOpenPrice()*OrderLots();
  219.                   BuyProfit=BuyProfit+OrderProfit()+OrderCommission()+OrderSwap();
  220.                   if(FirstBuyOpenTime>OrderOpenTime()||FirstBuyOpenTime==0)
  221.                     {
  222.                      FirstBuyOpenTime=OrderOpenTime();   //最先交易的多单入场时间与价格。
  223.                      FirstBuyLots=OrderLots();
  224.                      FirstBuyOpenPrice=OrderOpenPrice();
  225.                     }
  226.                   if(LastBuyOpenTime<OrderOpenTime()||LastBuyOpenTime==0)
  227.                     {
  228.                      LastBuyOpenTime=OrderOpenTime();   //最后交易的多单入场时间。if(BuyVol==1)也可以。
  229.                      LastBuyLots=OrderLots();
  230.                      LastBuyOpenPrice=OrderOpenPrice();
  231.                     }
  232.                   if(BuyLowest>OrderOpenPrice()||BuyLowest==0)
  233.                     {
  234.                      BuyLowest=OrderOpenPrice();   //买单中建仓最低价格。
  235.                      BuyLowestLots=OrderLots();
  236.                     }
  237.                   if(BuyHighest<OrderOpenPrice())
  238.                     {
  239.                      BuyHighest=OrderOpenPrice();   //买单中建仓最高价格。
  240.                      BuyHighestLots=OrderLots();
  241.                     }
  242.                  }
  243.                if(OrderType()==1)
  244.                  {
  245.                   if(OrderOpenTime()>=Time[0])
  246.                     {
  247.                      NewKSellVol++;
  248.                     }
  249.                   SellVol++;
  250.                   if(SellVol==2)
  251.                     {
  252.                      Last2SellLots=OrderLots();
  253.                     }
  254.                   SellLots=SellLots+OrderLots();
  255.                   if(SellHighLots<OrderLots())
  256.                     {
  257.                      SellHighLots=OrderLots();
  258.                     }
  259.                   if(SellLowLots>OrderLots()||SellLowLots==0)
  260.                     {
  261.                      SellLowLots=OrderLots();
  262.                     }
  263.                   AllSellOpenPrice=AllSellOpenPrice+OrderOpenPrice()*OrderLots();
  264.                   SellProfit=SellProfit+OrderProfit()+OrderCommission()+OrderSwap();
  265.                   if(FirstSellOpenTime>OrderOpenTime()||FirstSellOpenTime==0)
  266.                     {
  267.                      FirstSellOpenTime=OrderOpenTime();   //最先交易的卖单入场时间与价格。
  268.                      FirstSellLots=OrderLots();
  269.                      FirstSellOpenPrice=OrderOpenPrice();
  270.                     }
  271.                   if(LastSellOpenTime<OrderOpenTime()||LastSellOpenTime==0)
  272.                     {
  273.                      LastSellOpenTime=OrderOpenTime();   //最后交易的卖单入场时间。if(SellVol==1)也可以。
  274.                      LastSellLots=OrderLots();
  275.                      LastSellOpenPrice=OrderOpenPrice();
  276.                     }
  277.                   if(SellLowest>OrderOpenPrice()||SellLowest==0)
  278.                     {
  279.                      SellLowest=OrderOpenPrice();   //卖单中建仓最低价格。
  280.                      SellLowestLots=OrderLots();
  281.                     }
  282.                   if(SellHighest<OrderOpenPrice())
  283.                     {
  284.                      SellHighest=OrderOpenPrice();   //卖单中建仓最高价格。
  285.                      SellHighestLots=OrderLots();
  286.                     }
  287.                  }
  288.                PendAllVol++;
  289.                PendAllLots=PendAllLots+OrderLots();
  290.                if(OrderType()==0||OrderType()==2||OrderType()==4)
  291.                  {
  292.                   PendBuyVol++;
  293.                   PendBuyLots=PendBuyLots+OrderLots();
  294.                   if(PendBuyLowest>OrderOpenPrice()||PendBuyLowest==0)
  295.                     {
  296.                      PendBuyLowest=OrderOpenPrice();   //买单中建仓最低价格。
  297.                      PendBuyLowestLots=OrderLots();
  298.                     }
  299.                   if(PendBuyHighest<OrderOpenPrice())
  300.                     {
  301.                      PendBuyHighest=OrderOpenPrice();   //买单中建仓最高价格。
  302.                      PendBuyHighestLots=OrderLots();
  303.                     }
  304.                   if(PendFirstBuyOpenTime>OrderOpenTime()||PendFirstBuyOpenTime==0)
  305.                     {
  306.                      PendFirstBuyOpenTime=OrderOpenTime();   //最先交易的多单入场时间与价格。
  307.                      PendFirstBuyLots=OrderLots();
  308.                      PendFirstBuyOpenPrice=OrderOpenPrice();
  309.                     }
  310.                   if(PendLastBuyOpenTime<OrderOpenTime()||PendLastBuyOpenTime==0)
  311.                     {
  312.                      PendLastBuyOpenTime=OrderOpenTime();   //最后交易的多单入场时间。if(BuyVol==1)也可以。
  313.                      PendLastBuyLots=OrderLots();
  314.                      PendLastBuyOpenPrice=OrderOpenPrice();
  315.                     }
  316.                  }
  317.                if(OrderType()==1||OrderType()==3||OrderType()==5)
  318.                  {
  319.                   PendSellVol++;
  320.                   PendSellLots=PendSellLots+OrderLots();
  321.                   if(PendSellLowest>OrderOpenPrice()||PendSellLowest==0)
  322.                     {
  323.                      PendSellLowest=OrderOpenPrice();   //卖单中建仓最低价格。
  324.                      PendSellLowestLots=OrderLots();
  325.                     }
  326.                   if(PendSellHighest<OrderOpenPrice())
  327.                     {
  328.                      PendSellHighest=OrderOpenPrice();   //卖单中建仓最高价格。
  329.                      PendSellHighestLots=OrderLots();
  330.                     }
  331.                   if(PendFirstSellOpenTime>OrderOpenTime()||PendFirstSellOpenTime==0)
  332.                     {
  333.                      PendFirstSellOpenTime=OrderOpenTime();   //最先交易的卖单入场时间与价格。
  334.                      PendFirstSellLots=OrderLots();
  335.                      PendFirstSellOpenPrice=OrderOpenPrice();
  336.                     }
  337.                   if(PendLastSellOpenTime<OrderOpenTime()||PendLastSellOpenTime==0)
  338.                     {
  339.                      PendLastSellOpenTime=OrderOpenTime();   //最后交易的卖单入场时间。if(SellVol==1)也可以。
  340.                      PendLastSellLots=OrderLots();
  341.                      PendLastSellOpenPrice=OrderOpenPrice();
  342.                     }
  343.                  }
  344.                if(OrderType()==2||OrderType()==4)
  345.                  {
  346.                   PendCutBuyVol++;
  347.                   if(PendCutBuyLowest>OrderOpenPrice()||PendCutBuyLowest==0)
  348.                     {
  349.                      PendCutBuyLowest=OrderOpenPrice();  //买单中建仓最低价格。
  350.                     }
  351.                   if(PendCutBuyHighest<OrderOpenPrice())
  352.                     {
  353.                      PendCutBuyHighest=OrderOpenPrice();  //买单中建仓最高价格。
  354.                     }
  355.                  }
  356.                if(OrderType()==3||OrderType()==5)
  357.                  {
  358.                   PendCutSellVol++;
  359.                   if(PendCutSellLowest>OrderOpenPrice()||PendCutSellLowest==0)
  360.                     {
  361.                      PendCutSellLowest=OrderOpenPrice();  //卖单中建仓最低价格。
  362.                     }
  363.                   if(PendCutSellHighest<OrderOpenPrice())
  364.                     {
  365.                      PendCutSellHighest=OrderOpenPrice();  //卖单中建仓最高价格。
  366.                     }
  367.                  }
  368.               }
  369.            }
  370.         }
  371.      }
  372.    if(AllVol>0)
  373.      {
  374.       ArraySort(ArrayProfit,WHOLE_ARRAY,0,MODE_ASCEND);
  375.      }
  376.    double BuyMAPrice=0;  //请应用时确保 BuyMAPrice>0
  377.    if(BuyLots>0)
  378.      {
  379.       BuyMAPrice=NormalizeDouble(AllBuyOpenPrice/BuyLots,Digits);
  380.      }
  381.    double SellMAPrice=0; //请应用时确保 SellMAPrice>0
  382.    if(SellLots>0)
  383.      {
  384.       SellMAPrice=NormalizeDouble(AllSellOpenPrice/SellLots,Digits);
  385.      }
  386.    static double Profitest=0;
  387.    if(AllVol>0&&Profitest<AllProfit)
  388.      {
  389.       Profitest=AllProfit;
  390.      }
  391.    if(AllVol==0)
  392.      {
  393.       Profitest=0;
  394.      }

  395. //建仓条件
  396.    int B间隔=AddPoint,S间隔=AddPoint;
  397.    double B单量相对倍率=单量相对原来的倍率,S单量相对倍率=单量相对原来的倍率;
  398.    if(BuyVol>=A_单边持仓达到N单后)
  399.      {
  400.       B间隔=A_价格间隔应大于N微点;
  401.       B单量相对倍率=A_单量相对原来的倍率;
  402.      }
  403.    if(BuyVol>=B_单边持仓达到N单后)
  404.      {
  405.       B间隔=B_价格间隔应大于N微点;
  406.       B单量相对倍率=B_单量相对原来的倍率;
  407.      }
  408.    if(BuyVol>=C_单边持仓达到N单后)
  409.      {
  410.       B间隔=C_价格间隔应大于N微点;
  411.       B单量相对倍率=C_单量相对原来的倍率;
  412.      }
  413.    if(SellVol>=A_单边持仓达到N单后)
  414.      {
  415.       S间隔=A_价格间隔应大于N微点;
  416.       S单量相对倍率=A_单量相对原来的倍率;
  417.      }
  418.    if(SellVol>=B_单边持仓达到N单后)
  419.      {
  420.       S间隔=B_价格间隔应大于N微点;
  421.       S单量相对倍率=B_单量相对原来的倍率;
  422.      }
  423.    if(SellVol>=C_单边持仓达到N单后)
  424.      {
  425.       S间隔=C_价格间隔应大于N微点;
  426.       S单量相对倍率=C_单量相对原来的倍率;
  427.      }
  428.    bool BuyOrder=false,SellOrder=false;
  429.    string B备注="No",S备注="No";
  430.    if(B备注=="No"&&BuyVol==0)
  431.      {
  432.       BuyOrder=true;
  433.      }
  434.    if(S备注=="No"&&SellVol==0)
  435.      {
  436.       SellOrder=true;
  437.      }
  438.    if(B备注=="No"&&BuyVol>0&&BuyLowest-Ask>=B间隔*Point&&(!是否开启收盘时加仓||BuyLowest-Close[1]>=B间隔*Point))
  439.      {
  440.       BuyOrder=true;
  441.      }
  442.    if(S备注=="No"&&SellVol>0&&Bid-SellHighest>=S间隔*Point&&(!是否开启收盘时加仓||Close[1]-SellHighest>=S间隔*Point))
  443.      {
  444.       SellOrder=true;
  445.      }

  446.    if(OrdersTotal()>0)
  447.      {
  448.       for(i=OrdersTotal()-1; i>=0; i--) //--写成++会卡且100%漏平
  449.         {
  450.          RefreshRates();
  451.          if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
  452.            {
  453.             double point=MarketInfo(OrderSymbol(), MODE_POINT);
  454.             double profit=OrderProfit()+OrderCommission()+OrderSwap();
  455.             if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
  456.               {

  457.                //标准移动止损
  458.                if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
  459.                  {
  460.                   continue;
  461.                  }
  462.                RefreshRates();
  463.                if(OrderType()==0&&B_单向均价盈利N微点后_0为关闭!=0&&Bid-BuyMAPrice>=B_单向均价盈利N微点后_0为关闭*Point&&B_追踪止损于盈利回撤N微点平仓_0为关闭!=0&&(OrderStopLoss()<Bid-B_追踪止损于盈利回撤N微点平仓_0为关闭*Point-3*Point||OrderStopLoss()==0)) //OrderStopLoss()<Bid-移动止损于回撤多少微点平仓*Point+每盈利N微点移动一次*Point
  464.                  {
  465.                   if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-B_追踪止损于盈利回撤N微点平仓_0为关闭*Point,OrderTakeProfit(),0,clrBlue))
  466.                     {
  467.                      Print("移损失败。如还有疑问,请联系QQ837708761。");
  468.                     }
  469.                  }
  470.                if(OrderType()==1&&B_单向均价盈利N微点后_0为关闭!=0&&SellMAPrice-Ask>=B_单向均价盈利N微点后_0为关闭*Point&&B_追踪止损于盈利回撤N微点平仓_0为关闭!=0&&(OrderStopLoss()>Ask+B_追踪止损于盈利回撤N微点平仓_0为关闭*Point+3*Point||OrderStopLoss()==0))
  471.                  {
  472.                   if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+B_追踪止损于盈利回撤N微点平仓_0为关闭*Point,OrderTakeProfit(),0,clrRed))
  473.                     {
  474.                      Print("移损失败。如还有疑问,请联系QQ837708761。");
  475.                     }
  476.                  }
  477.               }
  478.            }
  479.         }
  480.      }

  481. //全平
  482.    CreateButton("CloseAllYCEA","全部平仓?","在全平中",10,40,90,25,13,2,ANCHOR_LEFT,clrWhite,clrBrown,clrGold);
  483.    if(ObjectGetInteger(0,"CloseAllYCEA",OBJPROP_STATE)==true)
  484.      {
  485.       if(OrdersTotal()>0)
  486.         {
  487.          for(i=OrdersTotal()-1; i>=0; i--)
  488.            {
  489.             if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true&&OrderSymbol()==Symbol())
  490.               {
  491.                if(OrderType()==0)
  492.                  {
  493.                   if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),500,0))
  494.                     {
  495.                      Print("订单号为",OrderTicket(),"平仓失败",GetLastError());
  496.                     }
  497.                  }
  498.                if(OrderType()==1)
  499.                  {
  500.                   if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),500,0))
  501.                     {
  502.                      Print("订单号为",OrderTicket(),"平仓失败",GetLastError());
  503.                     }
  504.                  }
  505.                if(OrderType()>1)
  506.                  {
  507.                   if(!OrderDelete(OrderTicket(),0))
  508.                     {
  509.                      Print("订单号为",OrderTicket(),"平仓失败",GetLastError());
  510.                     }
  511.                  }
  512.               }
  513.            }
  514.         }
  515.       ObjectSetInteger(0,"CloseAllYCEA",OBJPROP_STATE,false); //恢复未按下状态
  516.      }
  517. //平多:
  518.    CreateButton("CloseBuyYCEA","平仓多单?","在平多中",10,80,90,25,13,2,ANCHOR_LEFT,clrWhite,clrPurple,clrGold);
  519.    if(ObjectGetInteger(0,"CloseBuyYCEA",OBJPROP_STATE)==true)
  520.      {
  521.       if(OrdersTotal()>0)
  522.         {
  523.          for(i=OrdersTotal()-1; i>=0; i--)
  524.            {
  525.             if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true&&OrderSymbol()==Symbol())
  526.               {
  527.                if(OrderType()==0)
  528.                  {
  529.                   if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),500,0))
  530.                     {
  531.                      Print("订单号为",OrderTicket(),"平仓失败",GetLastError());
  532.                     }
  533.                  }
  534.               }
  535.            }
  536.         }
  537.       ObjectSetInteger(0,"CloseBuyYCEA",OBJPROP_STATE,false); //恢复未按下状态
  538.      }
  539. //平空:
  540.    CreateButton("CloseSellYCEA","平仓空单?","在平多中",10,120,90,25,13,2,ANCHOR_LEFT,clrWhite,clrTeal,clrGold);
  541.    if(ObjectGetInteger(0,"CloseSellYCEA",OBJPROP_STATE)==true)
  542.      {
  543.       if(OrdersTotal()>0)
  544.         {
  545.          for(i=OrdersTotal()-1; i>=0; i--)
  546.            {
  547.             if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true&&OrderSymbol()==Symbol())
  548.               {
  549.                if(OrderType()==1)
  550.                  {
  551.                   if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),500,0))
  552.                     {
  553.                      Print("订单号为",OrderTicket(),"平仓失败",GetLastError());
  554.                     }
  555.                  }
  556.               }
  557.            }
  558.         }
  559.       ObjectSetInteger(0,"CloseSellYCEA",OBJPROP_STATE,false); //恢复未按下状态
  560.      }

  561.    int Li_40;
  562.    int Li_44;
  563.    int Li_48;
  564.    int Li_52;
  565.    /*/if (AccountNumber() != ZH_01 && IsDemo() == FALSE){
  566.       Gi_268 = FALSE;
  567.       Alert("测试版EA仅能在模拟账号运行");
  568.       }
  569.    if (!Gi_268) {
  570.       Print("EA不符合运行条件,故终止运行。");
  571.       return (0);
  572.    }/*/
  573.    int Li_0 = 0;
  574.    int Li_4 = 0;
  575.    Li_0 = f0_4();
  576.    Li_4 = f0_13();
  577.    double Ld_8 = f0_20("Profit");
  578.    double Ld_16 = f0_20("Lots");
  579.    double Ld_24 = f0_2("Profit");
  580.    double Ld_32 = f0_2("Lots");
  581.    if(Li_0 > 1 || Li_4 > 1)
  582.      {
  583.       if(IsCloseByTotal)
  584.         {
  585.          if(Li_0 >= Gi_164)
  586.            {
  587.             if(Ld_8 >= f0_14(Li_0) * Ld_16)
  588.               {
  589.                f0_28("Buy");
  590.                return (0);
  591.               }
  592.             if(Li_0 > Gi_264)
  593.               {
  594.                if(IsSendMail)
  595.                  {
  596.                   SendMail(Symbol() + "盈亏:" + DoubleToStr(Ld_8, 2) + "仓位:" + DoubleToStr(Ld_16, 2) + "方向:Buy保证金:" + DoubleToStr(AccountMargin(), 2) + "单量:" + Li_0,
  597.                            "EA邮寄提醒");
  598.                  }
  599.                f0_27(Ld_16, "Buy", AccountMargin(), Li_0);
  600.                Gi_264 = Li_0;
  601.               }
  602.            }
  603.          if(Li_4 >= Gi_164)
  604.            {
  605.             if(Ld_24 >= f0_14(Li_4) * Ld_32)
  606.               {
  607.                f0_28("Sell");
  608.                return (0);
  609.               }
  610.             if(Li_4 > Gi_260)
  611.               {
  612.                if(IsSendMail)
  613.                  {
  614.                   SendMail(Symbol() + "盈亏:" + DoubleToStr(Ld_24, 2) + "仓位:" + DoubleToStr(Ld_32, 2) + "方向:Sell保证金:" + DoubleToStr(AccountMargin(), 2) + "单量:" + Li_4,
  615.                            "EA邮寄提醒");
  616.                  }
  617.                f0_27(Ld_32, "Sell", AccountMargin(), Li_4);
  618.                Gi_260 = Li_4;
  619.               }
  620.            }
  621.         }
  622.       if(IsCloseByTime)
  623.         {
  624.          Li_40 = f0_6("Buy");
  625.          if(Li_0 > 1 && TimeCurrent() - Li_40 >= 3600000 * Hours && Li_40 > 0 && Ld_8 >= 5.0 * Ld_16)
  626.            {
  627.             f0_28("Buy");
  628.             return (0);
  629.            }
  630.          Li_44 = f0_6("Sell");
  631.          if(Li_4 > 1 && TimeCurrent() - Li_44 >= 3600000 * Hours && Li_44 > 0 && Ld_24 >= 5.0 * Ld_32)
  632.            {
  633.             f0_28("Sell");
  634.             return (0);
  635.            }
  636.         }
  637.      }
  638.    f0_26("message9", DoubleToStr(Ask, Digits) + " :Buy", 5, 185, 15, "Verdana", Fuchsia, 3);
  639.    f0_26("message10", DoubleToStr(Bid, Digits) + " :Sell", 5, 205, 15, "Verdana", Fuchsia, 3);
  640.    if(Gt_212 == Time[0] && Li_0 > 0 && Li_4 > 0)
  641.      {
  642.       if(Duo)
  643.          f0_12();
  644.       if(Kong)
  645.          f0_3();
  646.       f0_26("message1", "浮动点差:" + f0_0(), 5, 100, 20, "Verdana", Plum, 0);
  647.       f0_26("message16", DoubleToStr(Ld_24, 2) + " :盈亏Sell", 5, 165, 10, "Verdana", Teal, 3);
  648.       f0_26("message15", DoubleToStr(Ld_8, 2) + " :盈亏Buy", 5, 125, 10, "Verdana", Teal, 3);
  649.       return (0);
  650.      }
  651.    Gt_212 = Time[0];
  652.    if(Duo)
  653.      {
  654.       if(Li_0 == 0)     //Li_0 买单数量
  655.         {
  656.          if(Gd_248 >= Money)
  657.            {
  658.             if(TimeMinute(TimeLocal()) % 10 != 0)
  659.                return (0);
  660.             Print("已经达到本日最大赢利金额:" + Money);
  661.             return (0);
  662.            }
  663.          if(Duo == TRUE && Bid <= DuoStopPrice)
  664.            {
  665.             if(TimeMinute(TimeLocal()) % 10 != 0)
  666.                return (0);
  667.             Print("多单止损价不符合开仓要求,故EA停止开仓。StopPrice=" + KongStopPrice);
  668.             return (0);
  669.            }
  670.         }
  671.       if(Li_0 < 1)
  672.         {
  673.          if(Duo)
  674.            {
  675.             Gi_240 = f0_8(Gd_216 * XiShu*B单量相对倍率); //f0_8发送做空命令
  676.             Print("满足开多首单条件。ID=" + Gi_240);
  677.            }
  678.         }
  679.       else
  680.         {
  681.          if(Li_0 < MaxTicket)
  682.            {
  683.             Gi_240 = f0_10();
  684.             Li_48 = f0_24(Gi_240);
  685.             if(Li_48 <= -f0_9(Li_0)&&BuyOrder)     //★★★★★加仓做多的条件
  686.               {
  687.                Print(Gi_240 + " = " + Li_48);
  688.                Gi_240 = f0_18("加仓",B单量相对倍率);
  689.               }
  690.            }
  691.         }
  692.      }
  693.    if(Kong)
  694.      {
  695.       if(Li_4 == 0)    //Li_4 卖单数量
  696.         {
  697.          if(Gd_248 >= Money)
  698.            {
  699.             if(TimeMinute(TimeLocal()) % 10 != 0)
  700.                return (0);
  701.             Print("已经达到本日最大赢利金额:" + Money);
  702.             return (0);
  703.            }
  704.          if(Kong == TRUE && Ask >= KongStopPrice)
  705.            {
  706.             if(TimeMinute(TimeLocal()) % 10 != 0)
  707.                return (0);
  708.             Print("空单止损价不符合开仓要求,故EA停止开仓。KongStopPrice=" + KongStopPrice);
  709.             return (0);
  710.            }
  711.         }
  712.       if(Li_4 < 1)
  713.         {
  714.          if(Kong)
  715.            {
  716.             Gi_244 = f0_29(Gd_216 * XiShu*S单量相对倍率); //f0_29发送做空命令
  717.             Print("满足开空首单条件。ID=" + Gi_244);
  718.            }
  719.         }
  720.       else
  721.         {
  722.          if(Li_4 < MaxTicket)
  723.            {
  724.             Gi_244 = f0_19();
  725.             Li_52 = f0_24(Gi_244);

  726.             if(Li_52 <= -f0_9(Li_4)&&SellOrder)    //★★★★★加仓做空的条件
  727.               {

  728.                Print(Gi_244 + " = " + Li_52);
  729.                Gi_244 = f0_23("加仓",S单量相对倍率);
  730.               }
  731.            }
  732.         }
  733.      }
  734.    f0_26("message6", DoubleToStr(AccountMargin(), 2) + " :使用保证金", 5, 85, 10, "Verdana", Orchid, 3);
  735.    f0_26("message7", DoubleToStr(Ld_16, 2) + " :单量Buy", 5, 105, 10, "Verdana", Orchid, 3);
  736.    f0_26("message8", DoubleToStr(Ld_32, 2) + " :单量Sell", 5, 145, 10, "Verdana", Orchid, 3);
  737.    f0_26("message11", "买编号:" + f0_11(), 5, 20, 10, "Verdana", Plum, 0);
  738.    f0_26("message12", "卖编号:" + f0_16(), 5, 40, 10, "Verdana", Plum, 0);
  739.    f0_26("message13", "账户名称:" + AccountName(), 5, 60, 13, "Verdana", Plum, 0);
  740.    f0_26("message14", "账户ID:" + AccountNumber(), 5, 80, 13, "Verdana", Plum, 0);
  741.    return (0);
  742.   }

  743. //+------------------------------------------------------------------+
  744. //| 版权所有 禁止盗用                                            |
  745. //+------------------------------------------------------------------+
  746. int f0_9(int Ai_0)
  747.   {
  748.    return (AddPoint);
  749.   }

  750. //+------------------------------------------------------------------+
  751. //| 版权所有 禁止盗用                                            |
  752. //+------------------------------------------------------------------+
  753. int f0_14(int Ai_0)
  754.   {
  755.    if(Ai_0 == Gi_164)
  756.       return (WinPoint);//Gi_164 = 6;
  757.    if(Ai_0 == Gi_164 + 1)
  758.       return (WinPoint - 13);//13
  759.    if(Ai_0 == Gi_164 + 2)
  760.       return (WinPoint - 13);//20
  761.    if(Ai_0 == Gi_164 + 3)
  762.       return (WinPoint - 13);//24
  763.    if(Ai_0 == Gi_164 + 32)
  764.       return (WinPoint - 13);//22
  765.    if(Ai_0 == Gi_164 + 5)
  766.       return (WinPoint - 13);//40
  767.    if(Ai_0 == Gi_164 + 6)
  768.       return (WinPoint - 15);//50
  769.    if(Ai_0 >= 13)
  770.       return (16);//28
  771.    return (0);
  772.   }

  773. //+------------------------------------------------------------------+
  774. //| 版权所有 禁止盗用                                            |
  775. //+------------------------------------------------------------------+
  776. /*/
  777. double f0_15(int Ai_0) {
  778.    if (Ai_0 == 0) return (手数0);//ifxishu=0.2 return=0.02  (xishu/10)=ai_0
  779.    if (Ai_0 == 1) return (手数1);//ifxishu=0.2 return=0.02
  780.    if (Ai_0 == 2) return (手数2);//ifxishu=0.2 return=0.04
  781.    if (Ai_0 == 3) return (手数3);//ifxishu=0.2 return=0.1
  782.    if (Ai_0 == 4) return (手数4);//ifxishu=0.2 return=0.16
  783.    if (Ai_0 == 5) return (手数5);//ifxishu=0.2 return=0.26
  784.    if (Ai_0 == 6) return (手数6);
  785.    if (Ai_0 == 7) return (手数7);
  786.    if (Ai_0 == 8) return (手数8);
  787.    if (Ai_0 == 9) return (手数9);//if (Ai_0 == 9) return (8.5)
  788.    if (Ai_0 == 10) return (手数10);//if (Ai_0 == 10) return (12.8)
  789.    if (Ai_0 == 11) return (手数11);//if (Ai_0 == 11) return (17.1)
  790.    if (Ai_0 == 12) return (手数12);//if (Ai_0 == 12) return (19.2)
  791.    if (Ai_0 == 13) return (手数13);//if (Ai_0 == 13) return (29.8)
  792.    if (Ai_0 == 14) return (手数14);//if (Ai_0 == 14) return (46.2)
  793.    if (Ai_0 == 15) return (手数15);//if (Ai_0 == 15) return (71.6)
  794.    if (Ai_0 == 16) return (手数16);
  795.    if (Ai_0 == 17) return (手数17);
  796.    if (Ai_0 == 18) return (手数18);
  797.    if (Ai_0 == 19) return (手数19);
  798.    if (Ai_0 == 20) return (手数20);//if (Ai_0 == 15) return (71.6)
  799.    return (0.0);
  800. }/*/

  801. //+------------------------------------------------------------------+
  802. //| 版权所有 禁止盗用                                            |
  803. //+------------------------------------------------------------------+
  804. int f0_6(string As_0)
  805.   {
  806.    string Ls_12;
  807.    for(int Li_8 = 0; Li_8 < OrdersTotal(); Li_8++)
  808.      {
  809.       if(OrderSelect(Li_8, SELECT_BY_POS, MODE_TRADES))
  810.         {
  811.          Ls_12 = OrderComment();
  812.          if(Gs_buy_224 == StringSubstr(Ls_12, 0, StringFind(Ls_12, "-", 0)))
  813.            {
  814.             if(As_0 == "Buy")
  815.               {
  816.                if(!(OrderSymbol() == Symbol() && OrderType() == OP_BUY && OrderMagicNumber() == Magic && OrderLots() == f0_21(XiShu / 10.0)))
  817.                   continue;
  818.                return (OrderOpenTime());
  819.               }
  820.             if(As_0 == "Sell")
  821.                if(OrderSymbol() == Symbol() && OrderType() == OP_SELL && OrderMagicNumber() == Magic && OrderLots() == f0_21(XiShu / 10.0))
  822.                   return (OrderOpenTime());
  823.            }
  824.         }
  825.      }
  826.    return (0);
  827.   }

  828. //+------------------------------------------------------------------+
  829. //| 版权所有 禁止盗用                                            |
  830. //+------------------------------------------------------------------+
  831. void f0_28(string As_0)
  832.   {
  833.    string Ls_12 = "";
  834.    if(As_0 == "Buy")
  835.      {
  836.       for(int Li_8 = OrdersTotal() - 1; Li_8 >= 0; Li_8--)
  837.         {
  838.          if(OrderSelect(Li_8, SELECT_BY_POS, MODE_TRADES))
  839.            {
  840.             Ls_12 = OrderComment();
  841.             if(Gs_buy_224 == StringSubstr(Ls_12, 0, StringFind(Ls_12, "-", 0)))
  842.               {
  843.                if(OrderSymbol() == Symbol() && OrderType() == OP_BUY && OrderMagicNumber() == Magic)
  844.                  {
  845.                   RefreshRates();
  846.                   //bool result = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0);
  847.                  }
  848.               }
  849.            }
  850.         }
  851.      }
  852.    if(As_0 == "Sell")
  853.      {
  854.       for(Li_8 = OrdersTotal(); Li_8 >= 0; Li_8--)
  855.         {
  856.          if(OrderSelect(Li_8, SELECT_BY_POS, MODE_TRADES))
  857.            {
  858.             Ls_12 = OrderComment();
  859.             if(Gs_sell_232 == StringSubstr(Ls_12, 0, StringFind(Ls_12, "-", 0)))
  860.               {
  861.                if(OrderSymbol() == Symbol() && OrderType() == OP_SELL && OrderMagicNumber() == Magic)
  862.                  {
  863.                   RefreshRates();
  864.                   //bool results = OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0);
  865.                  }
  866.               }
  867.            }
  868.         }
  869.      }
  870.   }

  871. //+------------------------------------------------------------------+
  872. //| 版权所有 禁止盗用                                            |
  873. //+------------------------------------------------------------------+
  874. double f0_20(string As_0)
  875.   {
  876.    double Ld_8 = 0;
  877.    string Ls_16 = "";
  878.    RefreshRates();
  879.    for(int Li_24 = 0; Li_24 < OrdersTotal(); Li_24++)
  880.      {
  881.       if(OrderSelect(Li_24, SELECT_BY_POS, MODE_TRADES))
  882.         {
  883.          Ls_16 = OrderComment();
  884.          if(Gs_buy_224 == StringSubstr(Ls_16, 0, StringFind(Ls_16, "-", 0)))
  885.            {
  886.             if(OrderSymbol() == Symbol() && OrderType() == OP_BUY && OrderMagicNumber() == Magic)
  887.               {
  888.                if(As_0 == "Lots")
  889.                  {
  890.                   Ld_8 += OrderLots();
  891.                   continue;
  892.                  }
  893.                if(As_0 == "Profit")
  894.                   Ld_8 += OrderProfit();
  895.               }
  896.            }
  897.         }
  898.      }
  899.    return (Ld_8);
  900.   }

  901. //+------------------------------------------------------------------+
  902. //| 版权所有 禁止盗用                                            |
  903. //+------------------------------------------------------------------+
  904. double f0_2(string As_0)
  905.   {
  906.    double Ld_8 = 0;
  907.    string Ls_16 = "";
  908.    RefreshRates();
  909.    for(int Li_24 = 0; Li_24 < OrdersTotal(); Li_24++)
  910.      {
  911.       if(OrderSelect(Li_24, SELECT_BY_POS, MODE_TRADES))
  912.         {
  913.          Ls_16 = OrderComment();
  914.          if(Gs_sell_232 == StringSubstr(Ls_16, 0, StringFind(Ls_16, "-", 0)))
  915.            {
  916.             if(OrderSymbol() == Symbol() && OrderType() == OP_SELL && OrderMagicNumber() == Magic)
  917.               {
  918.                if(As_0 == "Lots")
  919.                  {
  920.                   Ld_8 += OrderLots();
  921.                   continue;
  922.                  }
  923.                if(As_0 == "Profit")
  924.                   Ld_8 += OrderProfit();
  925.               }
  926.            }
  927.         }
  928.      }
  929.    return (Ld_8);
  930.   }

  931. //+------------------------------------------------------------------+
  932. //| 版权所有 禁止盗用                                            |
  933. //+------------------------------------------------------------------+
  934. void f0_12()
  935.   {
  936.    string Ls_12;
  937.    RefreshRates();
  938.    double Ld_0 = f0_5();
  939.    for(int Li_8 = 0; Li_8 < OrdersTotal(); Li_8++)
  940.      {
  941.       if(OrderSelect(Li_8, SELECT_BY_POS, MODE_TRADES))
  942.         {
  943.          Ls_12 = OrderComment();
  944.          if(OrderSymbol() == Symbol() && OrderType() == OP_BUY
  945.             //&& StringSubstr(Ls_12, 0, StringFind(Ls_12, "-", 0)) == Gs_buy_224
  946.             && OrderMagicNumber() == Magic
  947.             //&& Ld_0 > 0.0
  948.            )
  949.            {
  950.             
  951.             if((OrderTakeProfit() != Ld_0 || OrderStopLoss() != f0_21(DuoStopPrice))
  952.              &&(B_单向均价盈利N微点后_0为关闭==0||(OrderStopLoss()==0&&OrderTakeProfit()==0)))
  953.                {
  954.                bool result = OrderModify(OrderTicket(), OrderOpenPrice(), f0_21(DuoStopPrice), Ld_0, 0, White);//如果没有到达止盈和止损位置,新修改的订单止盈止损
  955.                }
  956.            }
  957.         }
  958.      }
  959.   }

  960. //+------------------------------------------------------------------+
  961. //| 版权所有 禁止盗用                                            |
  962. //+------------------------------------------------------------------+
  963. double f0_5()
  964.   {
  965.    string Ls_20;
  966.    int Li_0 = 0;
  967.    double Ld_4 = 0;
  968.    int Li_12 = f0_4();
  969.    for(int Li_16 = 0; Li_16 < OrdersTotal(); Li_16++)
  970.      {
  971.       if(OrderSelect(Li_16, SELECT_BY_POS, MODE_TRADES))
  972.         {
  973.          Ls_20 = OrderComment();
  974.          if(OrderSymbol() == Symbol() && OrderType() == OP_BUY && StringSubstr(Ls_20, 0, StringFind(Ls_20, "-", 0)) == Gs_buy_224 && OrderMagicNumber() == Magic)
  975.            {
  976.             if(Li_12 >= Gi_164)
  977.                Ld_4 += OrderOpenPrice() * OrderLots();
  978.             else
  979.                Ld_4 += OrderOpenPrice();
  980.             Li_0++;
  981.            }
  982.         }
  983.      }
  984.    if(Li_0 > 0)
  985.      {
  986.       if(Li_12 >= Gi_164)
  987.          return (f0_21(Ld_4 / f0_20("Lots") + WinPoint * MarketInfo(Symbol(), MODE_POINT)));//前开价中这个最小价格改变被称为 点
  988.       return (f0_21(Ld_4 / Li_0 + WinPoint * MarketInfo(Symbol(), MODE_POINT)));
  989.      }
  990.    return (0);
  991.   }

  992. //+------------------------------------------------------------------+
  993. //| 版权所有 禁止盗用                                            |
  994. //+------------------------------------------------------------------+
  995. void f0_3()
  996.   {
  997.    string Ls_12;
  998.    RefreshRates();
  999.    double Ld_0 = f0_7();
  1000.    for(int Li_8 = 0; Li_8 < OrdersTotal(); Li_8++)
  1001.      {
  1002.       if(OrderSelect(Li_8, SELECT_BY_POS, MODE_TRADES))
  1003.         {
  1004.          Ls_12 = OrderComment();
  1005.          if(OrderSymbol() == Symbol() && OrderType() == OP_SELL && StringSubstr(Ls_12, 0, StringFind(Ls_12, "-", 0)) == Gs_sell_232 && OrderMagicNumber() == Magic && Ld_0 > 0.0)
  1006.             if((OrderTakeProfit() != Ld_0 || OrderStopLoss() != f0_21(KongStopPrice))&&(B_单向均价盈利N微点后_0为关闭==0||(OrderStopLoss()==0&&OrderTakeProfit()==0)))
  1007.                bool result = OrderModify(OrderTicket(), OrderOpenPrice(), f0_21(KongStopPrice), Ld_0, 0, White);
  1008.         }
  1009.      }
  1010.   }

  1011. //+------------------------------------------------------------------+
  1012. //| 版权所有 禁止盗用                                                |
  1013. //+------------------------------------------------------------------+
  1014. double f0_7()
  1015.   {
  1016.    string Ls_20;
  1017.    int Li_0 = 0;
  1018.    double Ld_4 = 0;
  1019.    int Li_12 = f0_13();
  1020.    for(int Li_16 = 0; Li_16 < OrdersTotal(); Li_16++)
  1021.      {
  1022.       if(OrderSelect(Li_16, SELECT_BY_POS, MODE_TRADES))
  1023.         {
  1024.          Ls_20 = OrderComment();
  1025.          if(OrderSymbol() == Symbol() && OrderType() == OP_SELL && StringSubstr(Ls_20, 0, StringFind(Ls_20, "-", 0)) == Gs_sell_232 && OrderMagicNumber() == Magic)
  1026.            {
  1027.             if(Li_12 >= Gi_164)
  1028.                Ld_4 += OrderOpenPrice() * OrderLots();
  1029.             else
  1030.                Ld_4 += OrderOpenPrice();
  1031.             Li_0++;
  1032.            }
  1033.         }
  1034.      }
  1035.    if(Li_0 > 0)
  1036.      {
  1037.       if(Li_12 >= Gi_164)
  1038.          return (f0_21(Ld_4 / f0_2("Lots") - WinPoint * MarketInfo(Symbol(), MODE_POINT)));
  1039.       return (f0_21(Ld_4 / Li_0 - WinPoint * MarketInfo(Symbol(), MODE_POINT)));
  1040.      }
  1041.    return (0);
  1042.   }

  1043. //+------------------------------------------------------------------+
  1044. //| 版权所有 禁止盗用                                                |
  1045. //+------------------------------------------------------------------+
  1046. int f0_10()
  1047.   {
  1048.    string Ls_4;
  1049.    Gi_240 = 0;
  1050.    for(int Li_0 = 0; Li_0 < OrdersTotal(); Li_0++)
  1051.      {
  1052.       if(OrderSelect(Li_0, SELECT_BY_POS, MODE_TRADES))
  1053.         {
  1054.          Ls_4 = OrderComment();
  1055.          if(OrderSymbol() == Symbol() && OrderType() == OP_BUY && StringSubstr(Ls_4, 0, StringFind(Ls_4, "-", 0)) == Gs_buy_224 && OrderMagicNumber() == Magic)
  1056.             if(OrderTicket() > Gi_240)
  1057.                Gi_240 = OrderTicket();
  1058.         }
  1059.      }
  1060.    return (Gi_240);
  1061.   }

  1062. //+------------------------------------------------------------------+
  1063. //| 版权所有 禁止盗用                                                |
  1064. //+------------------------------------------------------------------+
  1065. string f0_11()
  1066.   {
  1067.    string Ls_12;
  1068.    Gi_240 = 0;
  1069.    string Ls_0 = "";
  1070.    for(int Li_8 = 0; Li_8 < OrdersTotal(); Li_8++)
  1071.      {
  1072.       if(OrderSelect(Li_8, SELECT_BY_POS, MODE_TRADES))
  1073.         {
  1074.          Ls_12 = OrderComment();
  1075.          if(OrderSymbol() == Symbol() && OrderType() == OP_BUY && StringSubstr(Ls_12, 0, StringFind(Ls_12, "-", 0)) == Gs_buy_224 && OrderMagicNumber() == Magic)
  1076.            {
  1077.             if(OrderTicket() > Gi_240)
  1078.               {
  1079.                Gi_240 = OrderTicket();
  1080.                Ls_0 = OrderComment();
  1081.               }
  1082.            }
  1083.         }
  1084.      }
  1085.    return (Ls_0);
  1086.   }

  1087. //+------------------------------------------------------------------+
  1088. //| 版权所有 禁止盗用                                                |
  1089. //+------------------------------------------------------------------+
  1090. int f0_19()
  1091.   {
  1092.    string Ls_4;
  1093.    Gi_244 = 0;
  1094.    for(int Li_0 = 0; Li_0 < OrdersTotal(); Li_0++)
  1095.      {
  1096.       if(OrderSelect(Li_0, SELECT_BY_POS, MODE_TRADES))
  1097.         {
  1098.          Ls_4 = OrderComment();
  1099.          if(OrderSymbol() == Symbol() && OrderType() == OP_SELL && StringSubstr(Ls_4, 0, StringFind(Ls_4, "-", 0)) == Gs_sell_232 && OrderMagicNumber() == Magic)
  1100.             if(OrderTicket() > Gi_244)
  1101.                Gi_244 = OrderTicket();
  1102.         }
  1103.      }
  1104.    return (Gi_244);
  1105.   }

  1106. //+------------------------------------------------------------------+
  1107. //| 版权所有 禁止盗用                                                |
  1108. //+------------------------------------------------------------------+
  1109. string f0_16()
  1110.   {
  1111.    string Ls_12;
  1112.    Gi_244 = 0;
  1113.    string Ls_0 = "";
  1114.    for(int Li_8 = 0; Li_8 < OrdersTotal(); Li_8++)
  1115.      {
  1116.       if(OrderSelect(Li_8, SELECT_BY_POS, MODE_TRADES))
  1117.         {
  1118.          Ls_12 = OrderComment();
  1119.          if(OrderSymbol() == Symbol() && OrderType() == OP_SELL && StringSubstr(Ls_12, 0, StringFind(Ls_12, "-", 0)) == Gs_sell_232 && OrderMagicNumber() == Magic)
  1120.            {
  1121.             if(OrderTicket() > Gi_244)
  1122.               {
  1123.                Gi_244 = OrderTicket();
  1124.                Ls_0 = OrderComment();
  1125.               }
  1126.            }
  1127.         }
  1128.      }
  1129.    return (Ls_0);
  1130.   }

  1131. //+------------------------------------------------------------------+
  1132. //| 版权所有 禁止盗用                                                |
  1133. //+------------------------------------------------------------------+
  1134. int f0_18(string As_0,double Ad_0)
  1135.   {
  1136.    string StringAryLots_1[];
  1137.    StringSplit(建仓手数_可增减,StringGetCharacter("/",0),StringAryLots_1); //","是分隔符。过指定分隔符,获得字符串数组,返回子字符串数量。
  1138.    double AryLots_1[];
  1139.    ArrayResize(AryLots_1,ArraySize(StringAryLots_1)+100);
  1140.    ArrayInitialize(AryLots_1,0); //初始化非字符串数组
  1141.    for(int i=0; i<ArraySize(StringAryLots_1)+100; i++)
  1142.      {
  1143.       if(i<ArraySize(StringAryLots_1))
  1144.         {
  1145.          if(ArraySize(StringAryLots_1)==0||StringAryLots_1[i]=="")
  1146.            {
  1147.             break;
  1148.            }
  1149.          AryLots_1[i]=StringToDouble(StringAryLots_1[i]);
  1150.         }
  1151.       if(i>=ArraySize(StringAryLots_1))
  1152.         {
  1153.          AryLots_1[i]=AryLots_1[i-1];
  1154.         }
  1155.       //if(后续递增N手_0为关闭!=0&&i>=ArraySize(StringAryLots_1)) {AryLots_1[i]=AryLots_1[i-1]+后续递增N手_0为关闭;}
  1156.      }
  1157. //简单统计
  1158.    int AllVol_1=0,BuyVol_1=0,SelVol_1=0;
  1159.    double AllLots_1=0,BuyLots_1=0,SelLots_1=0;
  1160.    if(OrdersTotal()>=0)
  1161.      {
  1162.       for(int j=OrdersTotal()-1; j>=0; j--)
  1163.         {
  1164.          if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES)==true)
  1165.            {
  1166.             if(OrderSymbol()==Symbol()&&(OrderMagicNumber()==Magic||Magic==1))
  1167.               {
  1168.                if(OrderType()==0||OrderType()==1)
  1169.                  {
  1170.                   AllVol_1++;
  1171.                   AllLots_1+=OrderLots();
  1172.                  }
  1173.                if(OrderType()==0)
  1174.                  {
  1175.                   BuyVol_1++;
  1176.                   BuyLots_1+=OrderLots();
  1177.                  }
  1178.                if(OrderType()==1)
  1179.                  {
  1180.                   SelVol_1++;
  1181.                   SelLots_1+=OrderLots();
  1182.                  }
  1183.               }
  1184.            }
  1185.         }
  1186.      }
  1187.    bool Li_8 = FALSE;
  1188.    if(Duo)
  1189.      {
  1190.       Li_8 = AryLots_1[BuyVol_1];
  1191.       f0_8(1 * XiShu*Ad_0);
  1192.       Print("满足开多" + As_0 + "条件。ID=" + Li_8);
  1193.      }
  1194.    return (Li_8);
  1195.   }

  1196. //+------------------------------------------------------------------+
  1197. //| 版权所有 禁止盗用                                                |
  1198. //+------------------------------------------------------------------+
  1199. int f0_23(string As_0,double Ad_0)
  1200.   {
  1201.    string StringAryLots_1[];
  1202.    StringSplit(建仓手数_可增减,StringGetCharacter("/",0),StringAryLots_1); //","是分隔符。过指定分隔符,获得字符串数组,返回子字符串数量。
  1203.    double AryLots_1[];
  1204.    ArrayResize(AryLots_1,ArraySize(StringAryLots_1)+100);
  1205.    ArrayInitialize(AryLots_1,0); //初始化非字符串数组
  1206.    for(int i=0; i<ArraySize(StringAryLots_1)+100; i++)
  1207.      {
  1208.       if(i<ArraySize(StringAryLots_1))
  1209.         {
  1210.          if(ArraySize(StringAryLots_1)==0||StringAryLots_1[i]=="")
  1211.            {
  1212.             break;
  1213.            }
  1214.          AryLots_1[i]=StringToDouble(StringAryLots_1[i]);
  1215.         }
  1216.       if(i>=ArraySize(StringAryLots_1))
  1217.         {
  1218.          AryLots_1[i]=AryLots_1[i-1];
  1219.         }
  1220.       //if(后续递增N手_0为关闭!=0&&i>=ArraySize(StringAryLots_1)) {AryLots_1[i]=AryLots_1[i-1]+后续递增N手_0为关闭;}
  1221.      }
  1222. //简单统计
  1223.    int AllVol_1=0,BuyVol_1=0,SelVol_1=0;
  1224.    double AllLots_1=0,BuyLots_1=0,SelLots_1=0;
  1225.    if(OrdersTotal()>=0)
  1226.      {
  1227.       for(int j=OrdersTotal()-1; j>=0; j--)
  1228.         {
  1229.          if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES)==true)
  1230.            {
  1231.             if(OrderSymbol()==Symbol()&&(OrderMagicNumber()==Magic||Magic==1))
  1232.               {
  1233.                if(OrderType()==0||OrderType()==1)
  1234.                  {
  1235.                   AllVol_1++;
  1236.                   AllLots_1+=OrderLots();
  1237.                  }
  1238.                if(OrderType()==0)
  1239.                  {
  1240.                   BuyVol_1++;
  1241.                   BuyLots_1+=OrderLots();
  1242.                  }
  1243.                if(OrderType()==1)
  1244.                  {
  1245.                   SelVol_1++;
  1246.                   SelLots_1+=OrderLots();
  1247.                  }
  1248.               }
  1249.            }
  1250.         }
  1251.      }
  1252.    bool Li_8 = FALSE;
  1253.    if(Kong)
  1254.      {
  1255.       Li_8 = AryLots_1[SelVol_1];
  1256.       f0_29(1 * XiShu*Ad_0);
  1257.       Print("满足开空" + As_0 + "条件。ID=" + Li_8);
  1258.      }
  1259.    return (Li_8);
  1260.   }

  1261. //+------------------------------------------------------------------+
  1262. //|                                                                  |
  1263. //+------------------------------------------------------------------+
  1264. int f0_8(double Ad_0)
  1265.   {
  1266.    return (f0_1(Ad_0, 0, 0, Gs_buy_224, Magic));
  1267.   }

  1268. //+------------------------------------------------------------------+
  1269. //|                                                                  |
  1270. //+------------------------------------------------------------------+
  1271. int f0_29(double Ad_0)
  1272.   {
  1273.    return (f0_17(Ad_0, 0, 0, Gs_sell_232, Magic));
  1274.   }

  1275. //+------------------------------------------------------------------+
  1276. //|                                                                  |
  1277. //+------------------------------------------------------------------+
  1278. int f0_1(double Ad_0, double Ad_8, double Ad_16, string As_24, int Ai_32)
  1279.   {
  1280.    string StringAryLots_1[];
  1281.    StringSplit(建仓手数_可增减,StringGetCharacter("/",0),StringAryLots_1); //","是分隔符。过指定分隔符,获得字符串数组,返回子字符串数量。
  1282.    double AryLots_1[];
  1283.    ArrayResize(AryLots_1,ArraySize(StringAryLots_1)+100);
  1284.    ArrayInitialize(AryLots_1,0); //初始化非字符串数组
  1285.    for(int i=0; i<ArraySize(StringAryLots_1)+100; i++)
  1286.      {
  1287.       if(i<ArraySize(StringAryLots_1))
  1288.         {
  1289.          if(ArraySize(StringAryLots_1)==0||StringAryLots_1[i]=="")
  1290.            {
  1291.             break;
  1292.            }
  1293.          AryLots_1[i]=StringToDouble(StringAryLots_1[i]);
  1294.         }
  1295.       if(i>=ArraySize(StringAryLots_1))
  1296.         {
  1297.          AryLots_1[i]=AryLots_1[i-1];
  1298.         }
  1299.       //if(后续递增N手_0为关闭!=0&&i>=ArraySize(StringAryLots_1)) {AryLots_1[i]=AryLots_1[i-1]+后续递增N手_0为关闭;}
  1300.      }
  1301. //简单统计
  1302.    int AllVol_1=0,BuyVol_1=0,SelVol_1=0;
  1303.    double AllLots_1=0,BuyLots_1=0,SelLots_1=0;
  1304.    if(OrdersTotal()>=0)
  1305.      {
  1306.       for(int j=OrdersTotal()-1; j>=0; j--)
  1307.         {
  1308.          if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES)==true)
  1309.            {
  1310.             if(OrderSymbol()==Symbol()&&(OrderMagicNumber()==Magic||Magic==1))
  1311.               {
  1312.                if(OrderType()==0||OrderType()==1)
  1313.                  {
  1314.                   AllVol_1++;
  1315.                   AllLots_1+=OrderLots();
  1316.                  }
  1317.                if(OrderType()==0)
  1318.                  {
  1319.                   BuyVol_1++;
  1320.                   BuyLots_1+=OrderLots();
  1321.                  }
  1322.                if(OrderType()==1)
  1323.                  {
  1324.                   SelVol_1++;
  1325.                   SelLots_1+=OrderLots();
  1326.                  }
  1327.               }
  1328.            }
  1329.         }
  1330.      }
  1331.    RefreshRates();
  1332.    int Li_36 = OrderSend(Symbol(), OP_BUY, MathCeil((AryLots_1[BuyVol_1]-0.000001)/minlot)*minlot, Ask, Slippage, 0, 0, As_24 + "-" + ((f0_4() + 1)), Magic, 0, White);//开多单
  1333.    if(Li_36 > 0)
  1334.       return (Li_36);
  1335.    return (0);
  1336.   }

  1337. //+------------------------------------------------------------------+
  1338. //|                                                                  |
  1339. //+------------------------------------------------------------------+
  1340. int f0_17(double Ad_0, double Ad_8, double Ad_16, string As_24, int Ai_32)
  1341.   {
  1342.    string StringAryLots_1[];
  1343.    StringSplit(建仓手数_可增减,StringGetCharacter("/",0),StringAryLots_1); //","是分隔符。过指定分隔符,获得字符串数组,返回子字符串数量。
  1344.    double AryLots_1[];
  1345.    ArrayResize(AryLots_1,ArraySize(StringAryLots_1)+100);
  1346.    ArrayInitialize(AryLots_1,0); //初始化非字符串数组
  1347.    for(int i=0; i<ArraySize(StringAryLots_1)+100; i++)
  1348.      {
  1349.       if(i<ArraySize(StringAryLots_1))
  1350.         {
  1351.          if(ArraySize(StringAryLots_1)==0||StringAryLots_1[i]=="")
  1352.            {
  1353.             break;
  1354.            }
  1355.          AryLots_1[i]=StringToDouble(StringAryLots_1[i]);
  1356.         }
  1357.       if(i>=ArraySize(StringAryLots_1))
  1358.         {
  1359.          AryLots_1[i]=AryLots_1[i-1];
  1360.         }
  1361.       //if(后续递增N手_0为关闭!=0&&i>=ArraySize(StringAryLots_1)) {AryLots_1[i]=AryLots_1[i-1]+后续递增N手_0为关闭;}
  1362.      }
  1363. //简单统计
  1364.    int AllVol_1=0,BuyVol_1=0,SelVol_1=0;
  1365.    double AllLots_1=0,BuyLots_1=0,SelLots_1=0;
  1366.    if(OrdersTotal()>=0)
  1367.      {
  1368.       for(int j=OrdersTotal()-1; j>=0; j--)
  1369.         {
  1370.          if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES)==true)
  1371.            {
  1372.             if(OrderSymbol()==Symbol()&&(OrderMagicNumber()==Magic||Magic==1))
  1373.               {
  1374.                if(OrderType()==0||OrderType()==1)
  1375.                  {
  1376.                   AllVol_1++;
  1377.                   AllLots_1+=OrderLots();
  1378.                  }
  1379.                if(OrderType()==0)
  1380.                  {
  1381.                   BuyVol_1++;
  1382.                   BuyLots_1+=OrderLots();
  1383.                  }
  1384.                if(OrderType()==1)
  1385.                  {
  1386.                   SelVol_1++;
  1387.                   SelLots_1+=OrderLots();
  1388.                  }
  1389.               }
  1390.            }
  1391.         }
  1392.      }
  1393.    RefreshRates();
  1394.    int Li_36 = OrderSend(Symbol(), OP_SELL, MathCeil((AryLots_1[SelVol_1]-0.000001)/minlot)*minlot, Bid, Slippage, 0, 0, As_24 + "-" + ((f0_13() + 1)), Magic, 0, Red);//开空单
  1395.    if(Li_36 > 0)
  1396.       return (Li_36);
  1397.    return (0);
  1398.   }

  1399. //+------------------------------------------------------------------+
  1400. //|                                                                  |
  1401. //+------------------------------------------------------------------+
  1402. int f0_24(int Ai_0)
  1403.   {
  1404.    string Ls_4;
  1405.    RefreshRates();
  1406.    if(OrderSelect(Ai_0, SELECT_BY_TICKET))
  1407.      {
  1408.       Ls_4 = OrderComment();
  1409.       if(StringSubstr(Ls_4, 0, StringFind(Ls_4, "-", 0)) == Gs_buy_224 && OrderMagicNumber() == Magic)
  1410.          return ((Ask - OrderOpenPrice()) / MarketInfo(Symbol(), MODE_POINT));
  1411.       if(StringSubstr(Ls_4, 0, StringFind(Ls_4, "-", 0)) == Gs_sell_232 && OrderMagicNumber() == Magic)
  1412.          return ((OrderOpenPrice() - Bid) / MarketInfo(Symbol(), MODE_POINT));
  1413.      }
  1414.    return (0);
  1415.   }

  1416. //+------------------------------------------------------------------+
  1417. //|                                                                  |
  1418. //+------------------------------------------------------------------+
  1419. int f0_4()
  1420.   {
  1421.    int Li_0 = 0;
  1422.    string Ls_4 = "";
  1423.    for(int Li_12 = 0; Li_12 < OrdersTotal(); Li_12++)
  1424.      {
  1425.       if(OrderSelect(Li_12, SELECT_BY_POS, MODE_TRADES))
  1426.         {
  1427.          Ls_4 = OrderComment();
  1428.          if(Gs_buy_224 == StringSubstr(Ls_4, 0, StringFind(Ls_4, "-", 0)))
  1429.             if(OrderSymbol() == Symbol() && OrderType() == OP_BUY && OrderMagicNumber() == Magic)
  1430.                Li_0++;
  1431.         }
  1432.      }
  1433.    return (Li_0);
  1434.   }

  1435. //+------------------------------------------------------------------+
  1436. //|                                                                  |
  1437. //+------------------------------------------------------------------+
  1438. int f0_13()
  1439.   {
  1440.    int Li_0 = 0;
  1441.    string Ls_4 = "";
  1442.    for(int Li_12 = 0; Li_12 < OrdersTotal(); Li_12++)
  1443.      {
  1444.       if(OrderSelect(Li_12, SELECT_BY_POS, MODE_TRADES))
  1445.         {
  1446.          Ls_4 = OrderComment();
  1447.          if(Gs_sell_232 == StringSubstr(Ls_4, 0, StringFind(Ls_4, "-", 0)))
  1448.             if(OrderSymbol() == Symbol() && OrderType() == OP_SELL && OrderMagicNumber() == Magic)
  1449.                Li_0++;
  1450.         }
  1451.      }
  1452.    return (Li_0);
  1453.   }

  1454. //+------------------------------------------------------------------+
  1455. //|                                                                  |
  1456. //+------------------------------------------------------------------+
  1457. double f0_25()
  1458.   {
  1459.    double Ld_0 = 0;
  1460.    for(int Li_8 = 0; Li_8 < OrdersHistoryTotal(); Li_8++)
  1461.      {
  1462.       if(OrderSelect(Li_8, SELECT_BY_POS, MODE_HISTORY))
  1463.         {
  1464.          if(OrderSymbol() == Symbol() && OrderType() == OP_SELL && OrderMagicNumber() == Magic)
  1465.             Ld_0 += OrderProfit();
  1466.          else
  1467.             if(OrderSymbol() == Symbol() && OrderType() == OP_BUY && OrderMagicNumber() == Magic)
  1468.                Ld_0 += OrderProfit();
  1469.         }
  1470.       if(Li_8 > 5000)
  1471.          return (Ld_0);
  1472.      }
  1473.    return (Ld_0);
  1474.   }

  1475. //+------------------------------------------------------------------+
  1476. //|                                                                  |
  1477. //+------------------------------------------------------------------+
  1478. void f0_27(double Ad_0, string As_8, double Ad_16, int Ai_24)
  1479.   {
  1480.    int Li_28 = FileOpen("Logs.csv", FILE_CSV|FILE_WRITE|FILE_READ, ',');
  1481.    if(Li_28 > 0)
  1482.      {
  1483.       FileSeek(Li_28, 0, SEEK_END);
  1484.       FileWrite(Li_28, f0_22(), Ad_0, As_8, Ad_16, Ai_24);
  1485.      }
  1486.    FileClose(Li_28);
  1487.   }

  1488. //+------------------------------------------------------------------+
  1489. //|                                                                  |
  1490. //+------------------------------------------------------------------+
  1491. string f0_22()
  1492.   {
  1493.    string Ls_0 = TimeYear(TimeCurrent()) + "-" + TimeMonth(TimeCurrent()) + "-" + TimeDay(TimeCurrent()) + " " + TimeHour(TimeCurrent()) + ":" + TimeMinute(TimeCurrent()) + ":" + TimeSeconds(TimeCurrent());
  1494.    return (Ls_0);
  1495.   }

  1496. //+------------------------------------------------------------------+
  1497. //|                                                                  |
  1498. //+------------------------------------------------------------------+
  1499. double f0_21(double Ad_0)
  1500.   {
  1501.    return (NormalizeDouble(Ad_0, Digits));
  1502.   }

  1503. //+------------------------------------------------------------------+
  1504. //| 版权所有 禁止盗用                                                |
  1505. //+------------------------------------------------------------------+
  1506. void f0_26(string As_0, string As_8, int Ai_16, int Ai_20, int Ai_24, string As_28, color Ai_36, int Ai_40)
  1507.   {
  1508.    ObjectCreate(As_0, OBJ_LABEL, 0, 0, 0);
  1509.    ObjectSetText(As_0, As_8, Ai_24, As_28, Ai_36);
  1510.    ObjectSet(As_0, OBJPROP_CORNER, Ai_40);
  1511.    ObjectSet(As_0, OBJPROP_XDISTANCE, Ai_16);
  1512.    ObjectSet(As_0, OBJPROP_YDISTANCE, Ai_20);
  1513.   }

  1514. //+------------------------------------------------------------------+
  1515. //| 版权所有 禁止盗用                                                |
  1516. //+------------------------------------------------------------------+
  1517. int f0_0()
  1518.   {
  1519.    int Li_0 = (Ask - Bid) / MarketInfo(Symbol(), MODE_POINT);
  1520.    return (Li_0);
  1521.   }

  1522. //+------------------------------------------------------------------+
  1523. //|                                                                  |
  1524. //+------------------------------------------------------------------+
  1525. void CreateButton(string Name,string GeneralText,string UnGeneralText,int XDistance,int YDistance,int XSize,int YSize,int FontSize,int Corner,int Anchor,color ColorA,color ColorB,color BorderColor)
  1526.   {
  1527.    if(ObjectFind(0,Name)==-1) //判断是否存在X按钮
  1528.      {
  1529.       ObjectCreate(0,Name,OBJ_BUTTON,0,0,0); //新建
  1530.       ObjectSetInteger(0,Name,OBJPROP_XDISTANCE,XDistance);//X轴位置
  1531.       ObjectSetInteger(0,Name,OBJPROP_YDISTANCE,YDistance);//Y轴位置
  1532.       ObjectSetInteger(0,Name,OBJPROP_XSIZE,XSize);//X轴长度
  1533.       ObjectSetInteger(0,Name,OBJPROP_YSIZE,YSize);//Y轴长度
  1534.       ObjectSetString(0,Name,OBJPROP_FONT,"微软雅黑"); //字体
  1535.       ObjectSetInteger(0,Name,OBJPROP_FONTSIZE,FontSize);//文字大小
  1536.       ObjectSetInteger(0,Name,OBJPROP_CORNER,Corner);//放哪个角落 0123为左右上下
  1537.       //ObjectSetInteger(0,Name,OBJPROP_BORDER_COLOR,BorderColor); //边框颜色
  1538.       ObjectSetInteger(0,Name,OBJPROP_SELECTABLE,0); //0不可选取,1可被选取
  1539.       //ObjectSetInteger(0,Name,OBJPROP_BACK,true);//是否设为背景 true为背景
  1540.       ObjectSetInteger(0,Name,OBJPROP_ANCHOR,Anchor); //向左对齐、向右对齐 //ANCHOR_LEFT_UPPER (向左上角对齐) ANCHOR_RIGHT(向右对齐)
  1541.      }
  1542.    if(ObjectGetInteger(0,Name,OBJPROP_STATE)==false) //0false为常规状态,1true为按下状态
  1543.      {
  1544.       ObjectSetString(0,Name,OBJPROP_TEXT,GeneralText);//文字内容
  1545.       ObjectSetInteger(0,Name,OBJPROP_COLOR,ColorA); //文字颜色
  1546.       ObjectSetInteger(0,Name,OBJPROP_BGCOLOR,ColorB);//背景颜色
  1547.      }
  1548.    else
  1549.      {
  1550.       ObjectSetString(0,Name,OBJPROP_TEXT,UnGeneralText);//文字内容
  1551.       ObjectSetInteger(0,Name,OBJPROP_COLOR,ColorB);//文字颜色
  1552.       ObjectSetInteger(0,Name,OBJPROP_BGCOLOR,ColorA);//背景颜色
  1553.      }
  1554. //if(ObjectGetInteger(0,"CloseAll",OBJPROP_STATE)==true){} //获取按钮状态
  1555. //ObjectSetInteger(0,"CloseAll",OBJPROP_STATE,false); //恢复未按下状态
  1556. //例如:CreateButton("CloseAllYCEA","全部平仓?","在全平中",10,40,90,25,13,2,ANCHOR_LEFT,clrWhite,clrBrown,clrGold);
  1557.   }
复制代码


DOMINO789

发表于 2024-11-14 21:54:55 | 显示全部楼层

定方向,是顺势的方向还是反方向

等风来2025

发表于 昨天 23:41 | 显示全部楼层


定方向,是顺势的方向还是反方向

您需要登录后才可以回帖 登录 | 注册 微信登录

EA之家评论守则