1评论

0收藏

跑ECN账户 止损点不正常

avatar colin.hong | 470 人阅读 | 1 人评论 | 2024-05-12

寻求服务
类型: EA
出价: 100-500
QQ: 457525261
微信: -
邮箱:
/*
#import "IrisFx.dll"
   int InitDll(int a0);
   double Proc1(int a0, int a1, double a2, double a3, int a4, int a5, double a6, double a7, double a8, double a9);
   double Proc2(int a0, int a1, double a2, double a3, int a4, int a5, double a6, double a7, double a8, double a9);
   double Proc3(double a0, double a1, int a2, int a3, double a4, int a5, int a6, int a7, int a8, int a9, double a10, double a11, double a12, double a13);
   double Proc4(double a0, double a1, int a2, int a3, double a4, int a5, int a6, int a7, int a8, int a9, double a10, double a11, double a12, double a13);
#import
*/


// IrisFX EA educated!!! No Dll!! Please share your best setting and modify code~~

double Proc3(double a0, double a1, int a2, int a3, double a4, int a5, int a6, int a7, int a8, int a9, double a10, double a11, double a12, double a13)
{
  double v17; // Spread Piont
  double result;

  v17 = a3 * a4;

  if ( a5 == true && a0 <= a10 && a6 > a8 )
    result = v17 + a12;
  else
    result = v17 + a0;
  return (result);
}

double Proc4(double a0, double a1, int a2, int a3, double a4, int a5, int a6, int a7, int a8, int a9, double a10, double a11, double a12, double a13)
{
  double v17; // Spread Piont
  double v18; // g_high_552 - spread
  double result;

  v17 = a3 * a4;
  v18 = a1 - v17;
  if ( a5 == true)
  {
    if ( a1 < a11 || a8 <= a10 )
      result = v18;
    else
      result = a13 - v17;
  }
  else
  {
    result = v18;
  }
  return (result);
}



extern string 策略1 = "EURUSD_H1";
extern string 策略2 = "EURUSD_H1";
extern string 策略3 = "EURUSD_H4";
extern int 策略 = 1;
extern double 手数百分比 = 10.0;
extern double 固定手数 = 0.0;
extern bool 显示命令 = TRUE;
extern int 识别码1 = 777;
extern int 识别码2 = 999;
extern int 识别码3 = 8888;
extern bool    交易时间1 = false;
extern int     开始时间1 = 6,
               结束时间1 = 18;
extern bool    交易时间2 = false;
extern int     开始时间2 = 6,
               结束时间2 = 18;
bool g_bool_124 = FALSE;
datetime g_time_128;
double 现日高;
double 现日低;
double 买价;
double 卖价;
double 买止盈价;
double 卖止盈价;
double 买止损价;
double 卖止损价;
double ticksize;
double TickSize;
double g_lots_212;
double g_lots_220;
double margin;
//double tickvalue;
double 顶点;
double 低点;
double 前顶点;
double 前低点;
int spread;
int 精度;
int 顶点柱号;
int 前顶点柱号;
int 低点柱号;
int 前低点柱号;
double 上日高;
double 上日低;
int 上日高时刻;
int 上日低时刻;
int 上日高柱号;
int 上日低柱号;
bool 剧烈后休息 = TRUE;
bool gi_336 = FALSE;
double 前价;
int 剧烈时刻;
bool gi_352 = TRUE;
bool gi_356 = TRUE;
bool gi_360 = TRUE;
bool gi_364 = TRUE;
bool gi_368 = TRUE;
bool gi_372 = TRUE;
bool gi_376 = TRUE;
int g_ticket_380;
int g_ticket_384;
double g_ord_open_price_388;
double g_ord_open_price_396;
double g_bid_404;
datetime g_time_412;
double g_iao_416;
double g_iao_424;
double g_ialligator_432;
double g_ialligator_440;
double g_ialligator_448;
double g_price_456;
double g_price_464;
double g_price_472;
double g_price_480;
double g_price_488;
double g_price_496;
double g_ticksize_504;
double gd_512;
double g_lots_520;
double g_lots_528;
double g_marginrequired_536;
double g_tickvalue_544;
double g_high_552;
double g_low_560;
double g_high_568;
double g_low_576;
int g_spread_584;
int gi_588;
int gi_592;
int gi_unused_596;
int gi_600;
int gi_unused_604;
int gi_608;
int gi_612;
int gi_616;
int gi_620;
datetime g_time_624;
datetime g_time_628;
bool gi_632 = TRUE;
bool gi_636 = FALSE;
double gd_640;
int g_datetime_648;
bool gi_652 = TRUE;
bool gi_656 = TRUE;
bool gi_660 = TRUE;
bool gi_664 = TRUE;
bool gi_668 = TRUE;
int g_ticket_672;
int g_ticket_676;
datetime 时间调整;
double g_iao_684;
double g_iao_692;
double g_ialligator_700;
double g_ialligator_708;
double g_ialligator_716;
double g_price_724;
double g_price_732;
double g_price_740;
double g_price_748;
double g_price_756;
double g_price_764;
double g_ticksize_772;
double gd_780;
double g_lots_788;
double g_lots_796;
double g_marginrequired_804;
double g_tickvalue_812;
double g_high_820;
double g_low_828;
double g_high_836;
double g_low_844;
int g_spread_852;
int gi_856;
int gi_860;
int gi_unused_864;
int gi_868;
int gi_unused_872;
int gi_876;
int gi_880;
int gi_884;
int gi_888;
datetime g_time_892;
datetime g_time_896;
bool gi_900 = TRUE;
bool gi_904 = FALSE;
double gd_908;
int g_datetime_916;
bool gi_920 = TRUE;
bool gi_924 = TRUE;
bool gi_928 = TRUE;
bool gi_932 = TRUE;
bool gi_936 = TRUE;
int g_ticket_940;
int g_ticket_944;
int LotDecimal = 1;
bool ans;

int init()
{
   //g_bool_124 = InitDll(WindowHandle(Symbol(), Period())) == 1;
   //if (!g_bool_124) Alert("IrisFx can\'t run on this account#");
   if (MarketInfo(Symbol(),MODE_MINLOT)<0.1) LotDecimal=2;
   else if (MarketInfo(Symbol(),MODE_MINLOT)>=1.0) LotDecimal=0;
   if (策略 > 3 || 策略 <= 0) Alert("Strategy should be = either 1, 2 or 3");
   return (0);
}
bool 交易区间1()
{                                                     
   if ((开始时间1 < 结束时间1) && ((Hour() < 开始时间1) || (Hour() >= 结束时间1))) return (false);  //时间限制
   if (开始时间1 > 结束时间1 && Hour() < 开始时间1 && Hour() >= 结束时间1) return (false);
   return (true);
}
bool 交易区间2()
{                                                                                  //时间限制
   if ((开始时间2 < 结束时间2) && ((Hour() < 开始时间2) || (Hour() >= 结束时间2))) return (false);
   if (开始时间2 > 结束时间2 && Hour() < 开始时间2 && Hour() >= 结束时间2) return (false);
   return (true);
}

int start()
{
      ObjectCreate("推荐交易品种",OBJ_LABEL,0,Time[0],1.00000);
      ObjectSet("推荐交易品种",OBJPROP_XDISTANCE,50);
      ObjectSet("推荐交易品种",OBJPROP_YDISTANCE,150);
   //if (!g_bool_124) return (0);
   if ((交易时间1 && !交易区间1()) || (交易时间2 && !交易区间2()))
   {   //如果开启时间限制,在交易的时间区间里交易。
      Comment("在交易时间");
      DeletePOs(策略);
      return(0);
      }
   if (策略 == 1)
   {                                                    //假如用用第一策略,就执行第一策略。
      执行策略1();
      return(0);
   }
   if (策略 == 2)
   {                                                    //假如用用第二策略,就执行第二策略。
      执行策略1();
      执行策略2();
      return(0);
   }
   if (策略 == 3)
   {                                                    //假如用用第三策略,就执行第三策略。
      执行策略3();
      return(0);
   }
   return(0);
}

void 执行策略1()
{                                                     //第一策略详情
   int li_184;
   int li_188;
   double l_price_252;
   double l_price_260;
   double 百分比手数a = 手数百分比 / 10000.0;                                 //按本金百分比计算手数
   double 固定手数a = 固定手数;                                        //固定手数
   double 止损倍数 = 12;
   double 止损限制倍数 = 20;
   double 止盈倍数 = 75;
   bool li_40 = TRUE;
   bool li_44 = TRUE;
   bool li_48 = TRUE;
   bool li_52 = FALSE;
   bool li_56 = FALSE;
   int 波动剧烈标准 = 75;
   bool li_64 = TRUE;
   int li_68 = 45;
   bool li_72 = TRUE;
   bool li_76 = TRUE;
   bool li_80 = TRUE;
   bool li_84 = FALSE;
   int 日赠 = 20;
   int li_92 = 180;
   double ld_96 = 1;
   double l_pips_104 = 1;
   int 止损方式 = 2;
   int li_116 = 0;
   int li_120 = 0;
   bool li_124 = FALSE;
   bool 日志 = true;
   bool li_132 = FALSE;
   int li_140 = 1;
   if (止损倍数 < 1.0 || 止盈倍数 < 1.0)
   {
      Print("stop level below the requested soluble");
      return;
   }
   bool li_144 = FALSE;
   if (g_time_128 == 0) g_time_128 = Time[0];
   if (g_time_128 != Time[0])
   {
      li_144 = TRUE;
      g_time_128 = Time[0];
   }
   上日高 = iHigh(NULL, PERIOD_D1, 1);
   上日低 = iLow(NULL, PERIOD_D1, 1);
   if (DayOfWeek() == 1)
   {
      if (li_144) Print("Today is Monday");
      for (int h = 1; h < 7; h++)
      {
         if (TimeDayOfWeek(iTime(NULL, PERIOD_D1, h)) == 5)
         {
            上日高 = iHigh(NULL, PERIOD_D1, h);
            上日低 = iLow(NULL, PERIOD_D1, h);
            if (!(li_144)) break;
            Print("Maximum price on Friday is ", DoubleToStr(上日高, Digits));
            Print("Minimum price on Friday is ", DoubleToStr(上日低, Digits));
            break;
         }
      }
   }
   bool li_152 = TRUE;
   bool li_156 = TRUE;
   现日高 = iHigh(NULL, PERIOD_D1, 0);
   现日低 = iLow(NULL, PERIOD_D1, 0);
   if (现日高 - 上日高 >= 日赠 * Point || 现日高 < 上日高 || li_84 == FALSE) li_152 = FALSE;
   if (上日低 - 现日低 >= 日赠 * Point || 现日低 > 上日低 || li_84 == FALSE) li_156 = FALSE;
   int stoplevel = (int)MarketInfo(Symbol(), MODE_STOPLEVEL);
   if (stoplevel < 20 && Digits == 5) stoplevel = 20;
   if (stoplevel < 2 && Digits == 4) stoplevel = 2;
   //---
   if (li_152 || li_156 || li_144 || 现日高 == 0.0 || 现日低 == 0.0 || g_lots_212 == 0.0 || g_lots_220 == 0.0 || 买价 == 0.0 || 卖价 == 0.0 || 买止盈价 == 0.0 ||
      卖止盈价 == 0.0 || 买止损价 == 0.0 || 卖止损价 == 0.0 || ticksize == 0.0 || TickSize == 0.0)
   {
      spread = MarketInfo(Symbol(), MODE_SPREAD);
      if (日志) Print("spread = ", spread, " ", Symbol());
      ticksize = MarketInfo(Symbol(), MODE_TICKSIZE);
      //tickvalue = MarketInfo(Symbol(), MODE_TICKVALUE);
      margin = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
      if (Digits == 5)
      {
         TickSize = 10.0 * ticksize;
         精度 = 4;
      }
      else TickSize = ticksize;
      for (int k = 3; k < 100; k++)
      {
         if (High[k] >= High[k + 1] && High[k] > High[k + 2]
         && High[k] >= High[k - 1] && High[k] > High[k - 2])
         {
            顶点 = NormalizeDouble(High[k], Digits);
            顶点柱号 = k;
            break;
         }
      }
      for (k = 顶点柱号 + 1; k < 100; k++)
      {
         if (High[k] >= High[k + 1] && High[k] > High[k + 2]
         && High[k] >= High[k - 1] && High[k] > High[k - 2])
         {
            前顶点 = NormalizeDouble(High[k], Digits);
            前顶点柱号 = k;
            break;
         }
      }
      for (k = 3; k < 100; k++)
      {
         if (Low[k] <= Low[k + 1] && Low[k] < Low[k + 2] && Low[k] <= Low[k - 1] && Low[k] < Low[k - 2]) {
            低点 = NormalizeDouble(Low[k], Digits);
            低点柱号 = k;
            break;
         }
      }
      for (k = 低点柱号 + 1; k < 100; k++) {
         if (Low[k] <= Low[k + 1] && Low[k] < Low[k + 2] && Low[k] <= Low[k - 1] && Low[k] < Low[k - 2]) {
            前低点 = NormalizeDouble(Low[k], Digits);
            前低点柱号 = k;
            break;
         }
      }
      for (int j = 1; j < 150; j++)
      {
         if (NormalizeDouble(iHigh(NULL, PERIOD_H1, j), 精度) == NormalizeDouble(上日高, 精度)
         && DayOfWeek() != TimeDayOfWeek(iTime(NULL, PERIOD_H1, j)))
         {
            上日高时刻 = iTime(NULL, PERIOD_H1, j);
            上日高柱号 = j;
            break;
         }
      }
      for (j = 1; j < 150; j++)
      {
         if (NormalizeDouble(iLow(NULL, PERIOD_H1, j), 精度) == NormalizeDouble(上日低, 精度)
         && DayOfWeek() != TimeDayOfWeek(iTime(NULL, PERIOD_H1, j)))
         {
            上日低时刻 = iTime(NULL, PERIOD_H1, j);
            上日低柱号 = j;
            break;
         }
      }
      if (日志) Print("time_high = ", TimeHour(上日高时刻), " time_low= ", TimeHour(上日低时刻));
      if (日志) Print("bar_high = ", 上日高柱号, " bar_low= ", 上日低柱号);
      if (日志) Print("high_yesterday = ", DoubleToStr(上日高, Digits), " low_yesterday= ", DoubleToStr(上日低, Digits));
      if (li_152) 买价=NormalizeDouble((spread+li_140)*Point+现日高,Digits);
      else 买价=NormalizeDouble((spread+li_140)*Point+上日高,Digits);
      //买价 = NormalizeDouble(Proc1(li_152, li_156, 上日高, 现日高, spread, li_140, Point, 止损倍数, 上日低, 现日低), Digits);
      if (日志) Print("PRICE_BUY = ", 买价, " high_day= ", DoubleToStr(现日高, Digits), " ", Symbol());
      if (止损方式 == 1)
      {
         买止损价 = NormalizeDouble(买价 - 止损倍数 * stoplevel * Point, Digits);//12倍
         if (日志) Print("SL_BUY = ", 买止损价, " ", Symbol());
      }
      if (止损方式 == 2) //default
      {
         买止损价 = NormalizeDouble(Low[iLowest(NULL, 0, MODE_LOW, 2, 0)] - TickSize, Digits);
         //                                  20倍
         if ((买价 - 买止损价) / Point > 止损限制倍数 * stoplevel)
         买止损价 = NormalizeDouble(买价 - 止损限制倍数 * stoplevel * Point, Digits);
      }
      if (止损方式 == 3)
      {
         买止损价 = NormalizeDouble(MathMin(前低点, 低点) - TickSize, Digits);
         if ((买价 - 买止损价) / Point > 止损限制倍数 * stoplevel) 买止损价 = NormalizeDouble(买价 - 止损限制倍数 * stoplevel * Point, Digits);
      }
      if (日志) Print("SL_BUY = ", 买止损价, " ", Symbol());
      买止盈价 = NormalizeDouble(买价 + 止盈倍数 * stoplevel * Point, Digits);
      if (日志) Print("TP_BUY = ", 买止盈价, " ", Symbol());
      //---
      if (li_156) 卖价=NormalizeDouble(现日低-(spread)*Point,Digits);
      else 卖价=NormalizeDouble(上日低-(spread)*Point,Digits);
      //卖价 = NormalizeDouble(Proc2(li_152, li_156, 上日高, 现日高, spread, li_140, Point, 止损倍数, 上日低, 现日低), Digits);
      if (日志) Print("PRICE_SELL = ", 卖价, " low_day= ", DoubleToStr(现日低, Digits), " ", Symbol());
      if (止损方式 == 1) 卖止损价 = NormalizeDouble(卖价 + (止损倍数 * stoplevel + spread) * Point, Digits);
      if (止损方式 == 2)
      {
         卖止损价 = NormalizeDouble(High[iHighest(NULL, 0, MODE_HIGH, 2, 0)] + spread * Point + TickSize, Digits);
         if ((卖止损价 - 卖价) / Point > 止损限制倍数 * stoplevel) 卖止损价 = NormalizeDouble(卖价 + (止损限制倍数 * stoplevel + spread) * Point, Digits);
      }
      if (止损方式 == 3)
      {
         卖止损价 = NormalizeDouble(MathMax(顶点, 前顶点) + spread * Point + TickSize, Digits);
         if ((卖止损价 - 卖价) / Point > 止损限制倍数 * stoplevel) 卖止损价 = NormalizeDouble(卖价 + (止损限制倍数 * stoplevel + spread) * Point, Digits);
      }
      if (日志) Print("SL_SELL = ", 卖止损价, " ", Symbol());
      卖止盈价 = NormalizeDouble(卖价 - 止盈倍数 * stoplevel * Point, Digits);
      if (日志) Print("TP_SELL = ", 卖止盈价, " ", Symbol());
      //---
      g_lots_220 = 0.1;
      g_lots_212 = 0.1;
      if (AccountBalance() > 500.0)
      {
         g_lots_220 = NormalizeDouble(AccountBalance() * 百分比手数a, LotDecimal);
         g_lots_212 = NormalizeDouble(AccountBalance() * 百分比手数a, LotDecimal);
         for (h = OrdersHistoryTotal() - 1; h >= 0; h--)
         {
            if (OrderSelect(h, SELECT_BY_POS, MODE_HISTORY) == FALSE) break;
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码1)
            {
               if (OrderLots() <= NormalizeDouble(AccountBalance() * 百分比手数a,LotDecimal))
               {
                  g_lots_220 = NormalizeDouble(AccountBalance() * 百分比手数a, LotDecimal);
                  g_lots_212 = NormalizeDouble(AccountBalance() * 百分比手数a, LotDecimal);
                  break;
               }
               g_lots_220 = NormalizeDouble(OrderLots(), LotDecimal);
               g_lots_212 = NormalizeDouble(OrderLots(), LotDecimal);
               break;
            }
         }
      }
      if (固定手数a > 0.0)
      {
         g_lots_220 = NormalizeDouble(固定手数a, LotDecimal);
         g_lots_212 = NormalizeDouble(固定手数a, LotDecimal);
      }
      if (g_lots_220 > NormalizeDouble(AccountFreeMargin() / (1.05 * margin), LotDecimal) || g_lots_212 > NormalizeDouble(AccountFreeMargin() / (1.05 * margin), LotDecimal)) {
         g_lots_220 = NormalizeDouble(AccountFreeMargin() / (1.05 * margin), LotDecimal);
         g_lots_212 = NormalizeDouble(AccountFreeMargin() / (1.05 * margin), LotDecimal);
      }
   }
   bool 有钱 = TRUE;
   if (AccountFreeMargin() < MarketInfo(Symbol(), MODE_MARGINREQUIRED) / 10.0)
   {
      有钱 = FALSE;
      Print("No money");
   }
   int li_176 = 15;
   if (li_144) gi_352 = TRUE;
   //                                             75
   if (MathAbs((前价 - Close[0]) / Point) > 波动剧烈标准 && 前价 != 0.0 && li_56)
   {
      gi_336 = TRUE;
      剧烈时刻 = TimeCurrent();
      if (gi_352 == TRUE)
      {
         if (日志) Print("The price shock for ", (前价 - Close[0]) / Point, " pips.", Symbol());
         if (日志) Print("last_price ", DoubleToStr(前价, Digits), ", curent_price ", DoubleToStr(Close[0], Digits));
         gi_352 = FALSE;
      }
   }
   前价 = Close[0];
   bool li_180 = TRUE;
   if (li_116 != 0)
   {
      li_184 = 60 * li_116 + li_120;
      li_188 = 60 * TimeHour(TimeCurrent()) + TimeMinute(TimeCurrent());
      if (li_184 - li_188 <= 20 && li_188 - li_184 <= 15) li_180 = FALSE;
   }
   if (li_144) gi_356 = TRUE;
   if (li_180 == TRUE)
   {
      if (DayOfWeek() == 5 && TimeCurrent() - iTime(NULL, PERIOD_D1, 0) > 79200)
      {
         li_180 = FALSE;
         if (gi_356 == TRUE)
         {
            if (日志) Print("Friday, ending trading.");
            gi_356 = FALSE;
         }
      }
   }
   if (li_144) gi_360 = TRUE;
   if (li_180 == TRUE)
   {
      if (DayOfWeek() == 1 && TimeCurrent() - iTime(NULL, PERIOD_D1, 0) < 3900)
      {
         li_180 = FALSE;
         if (gi_360 == TRUE)
         {
            if (日志) Print("Monday, prior to 1-00 in the morning do not trade. Or off.");
            gi_360 = FALSE;
         }
      }
   }
   if (li_144) gi_364 = TRUE;
   bool li_192 = TRUE;
   if ((TimeHour(TimeCurrent()) <= 2 && 上日高柱号 <= 8) || TimeHour(上日高时刻) == 0)
   {
      li_192 = FALSE;
      if (gi_364 == TRUE)
      {
         if (日志) Print("湾?8 徉痤?漕 耱疱祗爨. 湾 蝾疸箦?");
         gi_364 = FALSE;
      }
   }
   if (li_144) gi_368 = TRUE;
   bool li_196 = TRUE;
   if ((TimeHour(TimeCurrent()) <= 2 && 上日低柱号 <= 8) || TimeHour(上日低时刻) == 0)
   {
      li_196 = FALSE;
      if (gi_368 == TRUE)
      {
         if (日志) Print("湾?8 徉痤?漕 耱疱祗爨. 湾 蝾疸箦?");
         gi_368 = FALSE;
      }
   }
   if (li_144) gi_372 = TRUE;
   bool li_200 = TRUE;
   if (stoplevel > 50)
   {
      li_200 = FALSE;
      if (gi_372 == TRUE)
      {
         if (日志) Print("Stop > 50. Stop trade.");
         gi_372 = FALSE;
      }
   }
   if (li_144) gi_376 = TRUE;
   bool li_204 = TRUE;
   if (li_132 && spread > 20 && Symbol() == "EURUSD")
   {
      li_204 = FALSE;
      if (gi_376 == TRUE)
      {
         if (日志) Print("Spread > 20. Stop trade.");
         gi_376 = FALSE;
      }
   }
   bool li_208 = TRUE;
   bool li_212 = TRUE;
   bool li_216 = TRUE;
   bool li_220 = TRUE;
   for (h = 0; h < OrdersTotal(); h++)
   {
      if (OrderSelect(h, SELECT_BY_POS, MODE_TRADES) == FALSE) break;
      if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码1)
      {
         if (OrderTicket() == g_ticket_380 && li_124)
         {
            PlaySound("alert.wav");
            g_ticket_380 = 0;
         }
         if (OrderOpenTime() >= Time[0])
         {
            li_208 = FALSE;
            continue;
         }
      }
      if (OrderType() == OP_BUYSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码1)
      {
         li_216 = FALSE;
         g_ord_open_price_388 = OrderOpenPrice();
         g_ticket_380 = OrderTicket();
         if (li_200 == FALSE)
         {
            ans=OrderDelete(OrderTicket());
            if (!(日志)) continue;
            Print("Delete order  ", OrderTicket(), " GOOD_STOP=false");
            continue;
         }
         if (gi_336 && OrderOpenPrice() - Ask < stoplevel * 2 * Point)
         {
            ans=OrderDelete(OrderTicket());
            剧烈后休息 = FALSE;
            if (!(日志)) continue;
            Print("Delete order  ", OrderTicket(), " due to the price shock");
            continue;
         }
         if (li_180 == FALSE || li_192 == FALSE)
         {
            ans=OrderDelete(OrderTicket());
            if (!(日志)) continue;
            Print("Delete order ", OrderTicket(), "PERMIS_TRADE=", li_180, " PERMIS_BUY1=", li_192);
            continue;
         }
         if (显示命令 == FALSE && OrderOpenPrice() - Close[0] > 300.0 * Point)
         {
            ans=OrderDelete(OrderTicket());
            if (!(日志)) continue;
            Print("Order ", OrderTicket(), " delited because price far");
            continue;
         }
         if ((OrderOpenPrice() - 买价 >= 50.0 * Point || 买价 - OrderOpenPrice() >= 50.0 * Point) && Ask <= OrderOpenPrice() - stoplevel * Point)
            ans=OrderModify(OrderTicket(), 买价, 买止损价, 买止盈价, 0, Blue);
         else
            if ((OrderOpenPrice() - 买价 < 50.0 * Point || 买价 - OrderOpenPrice() < 50.0 * Point) && Ask <= OrderOpenPrice() - stoplevel * Point && NormalizeDouble(OrderOpenPrice(), 精度) != NormalizeDouble(买价, 精度))
            ans=OrderModify(OrderTicket(), 买价, 买止损价, 买止盈价, 0, CLR_NONE);
         if (NormalizeDouble(OrderStopLoss(), 精度) != NormalizeDouble(买止损价, 精度))
         {
            if (日志) Print("modify StopLoss, order ", OrderTicket(), " from ", OrderStopLoss(), " to ", 买止损价);
            ans=OrderModify(OrderTicket(), OrderOpenPrice(), 买止损价, OrderTakeProfit(), 0, CLR_NONE);
         }
         if (NormalizeDouble(OrderLots(), LotDecimal) != NormalizeDouble(g_lots_220, LotDecimal))
         {
            if (日志) Print("modify lots, order ", OrderTicket(), " from ", OrderLots(), " to ", g_lots_220);
            ans=OrderDelete(OrderTicket());
         }
      }
      if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码1)
      {
         if (OrderTicket() == g_ticket_384 && li_124)
         {
            PlaySound("alert.wav");
            g_ticket_384 = 0;
         }
         if (OrderOpenTime() >= Time[0])
         {
            li_212 = FALSE;
            continue;
         }
      }
      if (OrderType() == OP_SELLSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码1)
      {
         li_220 = FALSE;
         g_ord_open_price_396 = OrderOpenPrice();
         g_ticket_384 = OrderTicket();
         if (li_200 == FALSE)
         {
            ans=OrderDelete(OrderTicket());
            if (!(日志)) continue;
            Print("Delete order  ", OrderTicket(), " GOOD_STOP=false");
            continue;
         }
         if (gi_336 && Bid - OrderOpenPrice() < stoplevel * 2 * Point)
         {
            ans=OrderDelete(OrderTicket());
            剧烈后休息 = FALSE;
            if (!(日志)) continue;
            Print("Delete order ", OrderTicket(), " due to the price shock");
            continue;
         }
         if (li_180 == FALSE || li_196 == FALSE) {
            ans=OrderDelete(OrderTicket());
            if (!(日志)) continue;
            Print("Delete order ", OrderTicket(), "PERMIS_TRADE=", li_180, " PERMIS_SELL1=", li_196);
            continue;
         }
         if (显示命令 == FALSE && Close[0] - OrderOpenPrice() > 300.0 * Point) {
            ans=OrderDelete(OrderTicket());
            if (!(日志)) continue;
            Print("Order ", OrderTicket(), " delited because price far");
            continue;
         }
         if ((OrderOpenPrice() - 卖价 >= 50.0 * Point || 卖价 - OrderOpenPrice() >= 50.0 * Point) && Bid >= OrderOpenPrice() + stoplevel * Point)
         ans=OrderModify(OrderTicket(), 卖价, 卖止损价, 卖止盈价, 0, Red);
         else
            if ((OrderOpenPrice() - 卖价 < 50.0 * Point || 卖价 - OrderOpenPrice() < 50.0 * Point) && Bid >= OrderOpenPrice() + stoplevel * Point
            && NormalizeDouble(OrderOpenPrice(), 精度) != NormalizeDouble(卖价, 精度))
            ans=OrderModify(OrderTicket(), 卖价, 卖止损价, 卖止盈价, 0, CLR_NONE);
         if (NormalizeDouble(OrderStopLoss(), 精度) != NormalizeDouble(卖止损价, 精度))
         {
            if (日志) Print("modify StopLoss, order  ", OrderTicket(), " from ", OrderStopLoss(), " to ", 卖止损价);
            ans=OrderModify(OrderTicket(), OrderOpenPrice(), 卖止损价, OrderTakeProfit(), 0, CLR_NONE);
         }
         if (NormalizeDouble(OrderLots(), LotDecimal) != NormalizeDouble(g_lots_212, LotDecimal))
         {
            if (日志) Print("modify lots, order ", OrderTicket(), " from ", OrderLots(), " to ", g_lots_212);
            ans=OrderDelete(OrderTicket());
         }
      }
      RefreshRates();
   }
   if ((TimeCurrent() - 剧烈时刻) / 60 > li_176) //15分钟
   {
      剧烈后休息 = TRUE;
      gi_336 = FALSE;
   }
   bool li_224 = TRUE;
   bool li_228 = TRUE;
   if (iHigh(NULL, PERIOD_D1, 0) + (spread + li_140) * Point > 买价) li_224 = FALSE;
   if (iLow(NULL, PERIOD_D1, 0) - li_140 * Point < 卖价) li_228 = FALSE;
   bool li_232 = TRUE;
   bool li_236 = TRUE;
   if (显示命令 == FALSE)
   {
      if (买价 - Close[0] > 150.0 * Point) li_232 = FALSE;
      if (Close[0] - 卖价 > 150.0 * Point) li_236 = FALSE;
   }
   int ticket;
   if (li_200 && li_204 && li_232 && 有钱 && 剧烈后休息 && li_180 && li_224 && li_192 && li_208 && li_216)
      if (Ask <= 买价 - stoplevel * Point)
         ticket=OrderSend(Symbol(), OP_BUYSTOP, g_lots_220, 买价, 0, NormalizeDouble(买止损价,Digits), NormalizeDouble(买止盈价,Digits), "Day Extremum", 识别码1, 0, Blue);
   if (li_200 && li_204 && li_236 && 有钱 && 剧烈后休息 && li_180 && li_228 && li_196 && li_212 && li_220)
      if (Bid >= 卖价 + stoplevel * Point)
         ticket=OrderSend(Symbol(), OP_SELLSTOP, g_lots_212, 卖价, 0, NormalizeDouble(卖止损价,Digits), NormalizeDouble(卖止盈价,Digits), "Day Extremum", 识别码1, 0, Red);
   if (g_bid_404 == 0.0) g_bid_404 = Bid;
   double ld_240 = ld_96;
   if (ld_96 < 1.0) ld_240 = 1;
   int li_248 = MarketInfo(Symbol(), MODE_STOPLEVEL);
   if (止损方式 == 1)
   {
      l_price_252 = NormalizeDouble(Bid - 止损倍数 * stoplevel * Point, Digits);
      l_price_260 = NormalizeDouble(Ask + 止损倍数 * stoplevel * Point, Digits);
   }
   if (止损方式 == 2)
   {
      l_price_252 = NormalizeDouble(Low[iLowest(NULL, 0, MODE_LOW, 2, 1)] - TickSize, Digits);
      l_price_260 = NormalizeDouble(High[iHighest(NULL, 0, MODE_HIGH, 2, 1)] + TickSize + spread * Point, Digits);
   }
   if (止损方式 == 3)
   {
      l_price_252 = NormalizeDouble(MathMin(前低点, 低点) - TickSize, Digits);
      l_price_260 = NormalizeDouble(MathMax(前顶点, 顶点) + TickSize + spread * Point, Digits);
   }
   for (h = 0; h <= OrdersTotal(); h++)
   {
      if (OrderSelect(h, SELECT_BY_POS, MODE_TRADES) == FALSE) break;
      if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码1)
      {
         if (li_80 && Close[0] < iLow(NULL, PERIOD_H1, 1))
         {
            ans=OrderClose(OrderTicket(), OrderLots(), Bid, 3, CLR_NONE);
            RefreshRates();
            if (!(日志)) continue;
            Print("Close Order ", OrderTicket(), " Close H1");
            continue;
         }
         if (li_200 == FALSE && OrderStopLoss() < OrderOpenPrice() && OrderProfit() > 0.0)
         {
            ans=OrderClose(OrderTicket(), OrderLots(), Bid, 3, CLR_NONE);
            RefreshRates();
            if (!(日志)) continue;
            Print("Close Order ", OrderTicket(), " ---> stop>50");
            continue;
         }
         if ((TimeCurrent() - OrderOpenTime() > 60 * li_92 && OrderStopLoss() < OrderOpenPrice() && Bid >= OrderOpenPrice()) || (li_52 == TRUE && OrderProfit() > 0.0))
         {
            ans=OrderClose(OrderTicket(), OrderLots(), Bid, 3, CLR_NONE);
            RefreshRates();
            if (!(日志)) continue;
            Print("Close Order ", OrderTicket(), " ---> time_of_close");
            continue;
         }
         if (li_56 && MathAbs((OrderOpenPrice() - g_ord_open_price_388) / Point) > 波动剧烈标准 && OrderProfit() > 0.0)
         {
            ans=OrderClose(OrderTicket(), OrderLots(), Bid, 10, Yellow);
            RefreshRates();
            if (日志) Print("Close Order ", OrderTicket(), " due to the price shock ", MathAbs((OrderOpenPrice() - g_ord_open_price_388) / Digits), " pips");
            if (!(日志)) continue;
            Print("OrderOpenPrise ", DoubleToStr(OrderOpenPrice(), Digits), ", PRICE_BUY1 ", DoubleToStr(g_ord_open_price_388, Digits));
            continue;
         }
         if (li_64 && 现日高 - OrderOpenPrice() >= li_68 * Point && Bid - OrderOpenPrice() < 5.0 * Point && Bid - OrderOpenPrice() >= 0.0 && Bid < g_bid_404)
         {
            ans=OrderClose(OrderTicket(), OrderLots(), Bid, 3, CLR_NONE);
            RefreshRates();
            Print("青牮帼 铕溴?BUY ", OrderTicket(), ", ", (Bid - OrderOpenPrice()) / Point, " 矬黻蝾??镳铘栩? 溻桄屙桢 忭桤 ", DoubleToStr(Bid - g_bid_404, Digits));
            Print("义牦&#63733; 鲥磬 ", DoubleToStr(Bid, Digits), "  橡邃簌? 鲥磬 ", DoubleToStr(g_bid_404, Digits));
            continue;
         }
         //                                                                     阴线                                              继续跌                                             
         if (li_72 == TRUE && OrderProfit() >= 0.0 && iClose(NULL, PERIOD_M1, 0) < iOpen(NULL, PERIOD_M1, 0) && Close[0] < iLow(NULL, PERIOD_M1, 1) &&
         (iClose(NULL, PERIOD_M1, 1) < iOpen(NULL, PERIOD_M1, 1) || iClose(NULL, PERIOD_M1, 1) < iLow(NULL, PERIOD_M1, 1) + (iHigh(NULL, PERIOD_M1, 1) - iLow(NULL, PERIOD_M1, 1)) / 3.0))
         //                       上K 阴线                                                  上K收盘在1/3以下                                    
         {
            ans=OrderClose(OrderTicket(), OrderLots(), Bid, 3, Yellow);
            RefreshRates();
            if (!(日志)) continue;
            Print("Close Order ", OrderTicket(), " ---> minimum_risk_M1");
            continue;
         }
         if (li_76 == TRUE && OrderProfit() >= 0.0 && iClose(NULL, PERIOD_M5, 0) < iOpen(NULL, PERIOD_M5, 0) && Close[0] < iLow(NULL, PERIOD_M5, 1) &&
         (iClose(NULL, PERIOD_M5, 1) < iOpen(NULL, PERIOD_M5, 1) || iClose(NULL, PERIOD_M5, 1) < iLow(NULL, PERIOD_M5, 1) + (iHigh(NULL, PERIOD_M5, 1) - iLow(NULL, PERIOD_M5, 1)) / 3.0))
         // M5的
         {
            ans=OrderClose(OrderTicket(), OrderLots(), Bid, 3, Yellow);
            RefreshRates();
            if (!(日志)) continue;
            Print("Close Order ", OrderTicket(), " ---> minimum_risk_M5");
            continue;
         }
         if (OrderStopLoss() < OrderOpenPrice())
         {
            if (li_248 < 50)
            {
               if (li_44 == TRUE && Bid - OrderOpenPrice() >= MathCeil(stoplevel * ld_96) * Point && Bid - OrderStopLoss() > MathCeil(stoplevel * ld_96) * Point) {
                  ans=OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid - MathCeil(stoplevel * ld_240) * Point, Digits), OrderTakeProfit(), 0, LightGreen);
                  Print("羊噔膻 ?眍朦 BUY 铕溴?", OrderTicket());
                  RefreshRates();
                  continue;
               }
            } else {
               if (li_44 == TRUE && Bid - OrderOpenPrice() >= MathCeil(stoplevel * ld_96) * Point && Bid - OrderStopLoss() > MathCeil(stoplevel * ld_96) * Point && OrderStopLoss() < NormalizeDouble(Bid - MathCeil(stoplevel * ld_240 +
                  stoplevel / 10.0) * Point, Digits)) {
                  ans=OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid - MathCeil(stoplevel * ld_240 + stoplevel / 10.0) * Point, Digits), OrderTakeProfit(), 0, LightGreen);
                  Print("羊噔膻 ?眍朦 BUY 铕溴?", OrderTicket());
                  RefreshRates();
                  continue;
               }
            }
            if (li_48 == TRUE && OrderStopLoss() < l_price_252 && Bid - l_price_252 >= stoplevel * Point) {
               if (日志) Print("Reduce losses OP_BUY order ", OrderTicket(), " moved S/L from ", DoubleToStr(OrderStopLoss(), Digits), " to ", DoubleToStr(l_price_252, Digits), ". Methot S/L=", 止损方式);
               ans=OrderModify(OrderTicket(), OrderOpenPrice(), l_price_252, OrderTakeProfit(), 0, LightGreen);
               RefreshRates();
               continue;
            }
         }
         if (OrderStopLoss() >= OrderOpenPrice() && li_40 == TRUE) {
            if (Bid - OrderStopLoss() > Point * l_pips_104 * stoplevel) {
               ans=OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid - l_pips_104 * stoplevel * Point, Digits), OrderTakeProfit(), 0, LightGreen);
               RefreshRates();
               continue;
            }
         }
         if (OrderStopLoss() >= OrderOpenPrice() && li_48 == TRUE && l_price_252 > OrderStopLoss() && Bid - l_price_252 >= stoplevel * Point) {
            if (日志) Print("Moving_S_L=true, Methot S/L=", 止损方式, ". Increase Profit OP_BUY order ", OrderTicket(), " from ", DoubleToStr(OrderStopLoss(), Digits), " to ", DoubleToStr(l_price_252, Digits));
            ans=OrderModify(OrderTicket(), OrderOpenPrice(), l_price_252, OrderTakeProfit(), 0, LightGreen);
            RefreshRates();
            continue;
         }
      }
      if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码1) {
         if (li_80 && Close[0] > iHigh(NULL, PERIOD_H1, 1)) {
            ans=OrderClose(OrderTicket(), OrderLots(), Ask, 3, CLR_NONE);
            RefreshRates();
            if (日志) Print("Close Order ", OrderTicket(), " Close H1");
         } else {
            if (li_200 == FALSE && OrderStopLoss() > OrderOpenPrice() && OrderProfit() > 0.0) {
               ans=OrderClose(OrderTicket(), OrderLots(), Ask, 3, CLR_NONE);
               RefreshRates();
               if (日志) Print("Close Order ", OrderTicket(), " ---> stop>50");
            } else {
               if ((TimeCurrent() - OrderOpenTime() > 60 * li_92 && OrderStopLoss() > OrderOpenPrice() && Ask <= OrderOpenPrice()) || (li_52 == TRUE && OrderProfit() > 0.0)) {
                  ans=OrderClose(OrderTicket(), OrderLots(), Ask, 3, CLR_NONE);
                  RefreshRates();
               } else {
                  if (li_56 && MathAbs((g_ord_open_price_396 - OrderOpenPrice()) / Point) > 波动剧烈标准 && OrderProfit() > 0.0) {
                     ans=OrderClose(OrderTicket(), OrderLots(), Ask, 10, Yellow);
                     RefreshRates();
                     if (日志) Print("Close Order ", OrderTicket(), " due to the price shock ", MathAbs((OrderOpenPrice() - g_ord_open_price_396) / Digits), " pips");
                     if (日志) Print("OrderOpenPrise ", DoubleToStr(OrderOpenPrice(), Digits), ", PRICE_SELL1 ", DoubleToStr(g_ord_open_price_396, Digits));
                  } else {
                     if (li_64 && OrderOpenPrice() - spread * Point - 现日低 >= li_68 * Point && OrderOpenPrice() - Ask < 5.0 * Point && OrderOpenPrice() - Ask >= 0.0 && Bid > g_bid_404) {
                        ans=OrderClose(OrderTicket(), OrderLots(), Ask, 3, CLR_NONE);
                        RefreshRates();
                        Print("青牮帼 铕溴?SELL ", OrderTicket(), ", ", (OrderOpenPrice() - Ask) / Point, " 矬黻蝾??镳铘栩? 溻桄屙桢 忖屦?", DoubleToStr(Bid - g_bid_404, Digits));
                     }
                     else
                     {//                                                                       阳柱                                   涨                                                      M1阳
                        if (li_72 == TRUE && OrderProfit() >= 0.0 && iClose(NULL, PERIOD_M1, 0) > iOpen(NULL, PERIOD_M1, 0) && Close[0] > iHigh(NULL, PERIOD_M1, 1) &&
                        (iClose(NULL, PERIOD_M1, 1) > iOpen(NULL, PERIOD_M1, 1) || iClose(NULL, PERIOD_M1, 1) > iHigh(NULL, PERIOD_M1, 1) - (iHigh(NULL, PERIOD_M1, 1) - iLow(NULL, PERIOD_M1, 1)) / 3.0) )
                        {
                           ans=OrderClose(OrderTicket(), OrderLots(), Ask, 3, Yellow);
                           RefreshRates();
                           if (日志) Print("Close Order ", OrderTicket(), " ---> minimum_risk_M1");
                        }
                        else
                        {
                           if (li_76 == TRUE && OrderProfit() >= 0.0 && iClose(NULL, PERIOD_M5, 0) > iOpen(NULL, PERIOD_M5, 0) && Close[0] > iHigh(NULL, PERIOD_M5, 1) &&
                           (iClose(NULL, PERIOD_M5, 1) > iOpen(NULL, PERIOD_M5, 1) || iClose(NULL, PERIOD_M5, 1) > iHigh(NULL, PERIOD_M5, 1) - (iHigh(NULL, PERIOD_M5, 1) - iLow(NULL, PERIOD_M5, 1)) / 3.0) )
                           {
                              ans=OrderClose(OrderTicket(), OrderLots(), Ask, 3, Yellow);
                              RefreshRates();
                              if (日志) Print("Close Order ", OrderTicket(), " ---> minimum_risk_M5");
                           }
                           else
                           {
                              if (OrderStopLoss() > OrderOpenPrice())
                              {
                                 if (li_248 < 50)
                                 {
                                    if (li_44 == TRUE && OrderOpenPrice() - Ask >= Point * MathCeil(stoplevel * ld_96) && OrderStopLoss() - Ask > MathCeil(stoplevel * ld_96) * Point) {
                                       ans=OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask + MathCeil(stoplevel * ld_240) * Point, Digits), OrderTakeProfit(), 0, Pink);
                                       RefreshRates();
                                       Print("羊噔膻 ?眍朦 SELL 铕溴?", OrderTicket());
                                       continue;
                                    }
                                 }
                                 else
                                 {
                                    if (li_44 == TRUE && OrderOpenPrice() - Ask >= Point * MathCeil(stoplevel * ld_96) && OrderStopLoss() - Ask > MathCeil(stoplevel * ld_96) * Point && OrderStopLoss() > NormalizeDouble(Ask +
                                       MathCeil(stoplevel * ld_240 + stoplevel / 10.0) * Point, Digits)) {
                                       ans=OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask + MathCeil(stoplevel * ld_240 + stoplevel / 10.0) * Point, Digits), OrderTakeProfit(), 0, Pink);
                                       RefreshRates();
                                       Print("羊噔膻 ?眍朦 SELL 铕溴?", OrderTicket());
                                       continue;
                                    }
                                 }
                                 if (li_48 == TRUE && OrderStopLoss() > l_price_260 && l_price_260 - Ask >= stoplevel * Point) {
                                    if (日志) Print("Reduce losses OP_SELL order ", OrderTicket(), " moved S/L from", DoubleToStr(OrderStopLoss(), Digits), " to ", DoubleToStr(l_price_260, Digits), ". Methot S/L=", 止损方式);
                                    ans=OrderModify(OrderTicket(), OrderOpenPrice(), l_price_260, OrderTakeProfit(), 0, LightGreen);
                                    RefreshRates();
                                    continue;
                                 }
                              }
                              if (OrderStopLoss() <= OrderOpenPrice() && li_40 == TRUE) {
                                 if (OrderStopLoss() - Ask > Point * l_pips_104 * stoplevel) {
                                    ans=OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask + l_pips_104 * stoplevel * Point, Digits), OrderTakeProfit(), 0, Pink);
                                    RefreshRates();
                                    continue;
                                 }
                              }
                              if (OrderStopLoss() <= OrderOpenPrice() && li_48 == TRUE && l_price_260 < OrderStopLoss() && l_price_260 - Ask >= stoplevel * Point) {
                                 if (日志) Print("Tr.stop = false. Methot S/L=", 止损方式, ". Increase Profit OP_SELL order ", OrderTicket(), " from ", DoubleToStr(OrderStopLoss(), Digits), " to ", DoubleToStr(l_price_260, Digits));
                                 ans=OrderModify(OrderTicket(), OrderOpenPrice(), l_price_260, OrderTakeProfit(), 0, LightGreen);
                                 RefreshRates();
                              }
                           }
                        }
                     }
                  }
               }
            }
         }
      }
   }
   RefreshRates();
   g_bid_404 = Bid;
}

void 执行策略2() {                                                      //第二策略详情
   double l_ifractals_144;
   double l_ifractals_152;
   int li_176;
   int li_180;
   double l_price_256;
   double l_price_264;
   double 百分比手数a = 手数百分比 / 10000.0;
   double 固定手数a = 固定手数;
   double 止损倍数 = 12;
   double 止损限制倍数 = 22;
   double 止盈倍数 = 75;
   int li_40 = 20;
   bool li_44 = false;
   bool li_48 = TRUE;
   bool li_52 = TRUE;
   bool li_56 = TRUE;
   bool 波动剧烈标准 = FALSE;
   bool li_64 = TRUE;
   int li_68 = 75;
   bool li_72 = TRUE;
   bool li_76 = TRUE;
   int li_80 = 180;
   double ld_84 = 1;
   double l_pips_92 = 1;
   int li_100 = 2;
   int li_104 = 0;
   int li_108 = 0;
   bool 止损方式 = FALSE;
   bool li_116 = FALSE;
   bool li_124 = TRUE;
   bool 日志 = TRUE;
   if (止损倍数 < 1.0 || 止盈倍数 < 1.0) {
      Print("stop level below the requested soluble");
      return;
   }
   bool li_132 = FALSE;
   if (g_time_412 == 0) g_time_412 = Time[0];
   if (g_time_412 != Time[0]) {
      li_132 = TRUE;
      g_time_412 = Time[0];
   }
   int l_stoplevel_136 = MarketInfo(Symbol(), MODE_STOPLEVEL);
   if (l_stoplevel_136 < li_40 && Digits == 5) l_stoplevel_136 = li_40;
   if (l_stoplevel_136 < 2 && Digits == 4) l_stoplevel_136 = 2;
   if (li_132 || g_lots_520 == 0.0 || g_lots_528 == 0.0 || g_price_456 == 0.0 || g_price_464 == 0.0 || g_price_472 == 0.0 || g_price_480 == 0.0 || g_price_488 == 0.0 ||
      g_price_496 == 0.0 || g_ticksize_504 == 0.0 || gd_512 == 0.0) {
      g_spread_584 = MarketInfo(Symbol(), MODE_SPREAD);
      if (li_116) Print("spread = ", g_spread_584, " ", Symbol());
      g_ticksize_504 = MarketInfo(Symbol(), MODE_TICKSIZE);
      g_tickvalue_544 = MarketInfo(Symbol(), MODE_TICKVALUE);
      g_marginrequired_536 = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
      if (Digits == 5) {
         gd_512 = 10.0 * g_ticksize_504;
         gi_588 = 4;
      } else gd_512 = g_ticksize_504;
      for (int li_140 = 3; li_140 < 100; li_140++) {
         if (High[li_140] >= High[li_140 + 1] && High[li_140] > High[li_140 + 2] && High[li_140] >= High[li_140 - 1] && High[li_140] > High[li_140 - 2]) {
            g_high_552 = High[li_140];
            gi_592 = li_140;
            g_time_624 = Time[li_140];
            break;
         }
      }
      for (li_140 = gi_592 + 1; li_140 < 100; li_140++) {
         if (High[li_140] >= High[li_140 + 1] && High[li_140] > High[li_140 + 2] && High[li_140] >= High[li_140 - 1] && High[li_140] > High[li_140 - 2]) {
            g_high_568 = High[li_140];
            gi_unused_596 = li_140;
            break;
         }
      }
      for (li_140 = 3; li_140 < 100; li_140++) {
         if (Low[li_140] <= Low[li_140 + 1] && Low[li_140] < Low[li_140 + 2] && Low[li_140] <= Low[li_140 - 1] && Low[li_140] < Low[li_140 - 2]) {
            g_low_560 = Low[li_140];
            gi_600 = li_140;
            g_time_628 = Time[li_140];
            break;
         }
      }
      for (li_140 = gi_600 + 1; li_140 < 100; li_140++) {
         if (Low[li_140] <= Low[li_140 + 1] && Low[li_140] < Low[li_140 + 2] && Low[li_140] <= Low[li_140 - 1] && Low[li_140] < Low[li_140 - 2]) {
            g_low_576 = Low[li_140];
            gi_unused_604 = li_140;
            break;
         }
      }
      l_ifractals_144 = iFractals(NULL, 0, MODE_UPPER, 0);
      l_ifractals_152 = iFractals(NULL, 0, MODE_LOWER, 0);
      g_ialligator_432 = iAlligator(NULL, 0, 13, 8, 8, 5, 5, 3, MODE_SMMA, PRICE_MEDIAN, MODE_GATORLIPS, 0);
      g_ialligator_440 = iAlligator(NULL, 0, 13, 8, 8, 5, 5, 3, MODE_SMMA, PRICE_MEDIAN, MODE_GATORTEETH, 0);
      g_ialligator_448 = iAlligator(NULL, 0, 13, 8, 8, 5, 5, 3, MODE_SMMA, PRICE_MEDIAN, MODE_GATORJAW, 0);
      g_iao_416 = iAO(NULL, 0, 1);
      g_iao_424 = iAO(NULL, 0, 2);
      for (int li_160 = 1; li_160 <= 1000; li_160++) {
         if ((iAO(NULL, 0, li_160 + 1) > 0.0 && iAO(NULL, 0, li_160) > iAO(NULL, 0, li_160 + 1) && iAO(NULL, 0, li_160 + 1) < iAO(NULL, 0, li_160 + 2)) || (iAO(NULL, 0, li_160) > 0.0 &&
            iAO(NULL, 0, li_160 + 1) < 0.0)) {
            gi_608 = li_160;
            gi_616 = Time[li_160];
            break;
         }
      }
      for (li_160 = 1; li_160 <= 1000; li_160++) {
         if ((iAO(NULL, 0, li_160 + 1) < 0.0 && iAO(NULL, 0, li_160) < iAO(NULL, 0, li_160 + 1) && iAO(NULL, 0, li_160 + 1) > iAO(NULL, 0, li_160 + 2)) || (iAO(NULL, 0, li_160) < 0.0 &&
            iAO(NULL, 0, li_160 + 1) > 0.0)) {
            gi_612 = li_160;
            gi_620 = Time[li_160];
            break;
         }
      }
      if (li_116) Print("shift_ao_buy=", gi_608, ", shift_ao_sell=", gi_612);
      //if (li_124 && g_high_552<=High[iHighest(NULL, 0, MODE_HIGH, gi_592 - 1, 1)] && ) g_price_456=NormalizeDouble(High[gi_608]+(spread+1)*Point,Digits);
      //else g_price_456=NormalizeDouble(g_high_552+(spread+1)*Point,Digits);
      g_price_456 = NormalizeDouble(Proc3(g_high_552, g_low_560, 日志, g_spread_584, Point, li_124, gi_616, gi_620, g_time_624, g_time_628, High[iHighest(NULL, 0, MODE_HIGH, gi_592 - 1, 1)], Low[iLowest(NULL, 0, MODE_LOW, gi_600 - 1, 1)], High[gi_608], Low[gi_612]), Digits);
      if (li_100 == 1) g_price_488 = NormalizeDouble(g_price_456 - 止损倍数 * l_stoplevel_136 * Point, Digits);
      if (li_100 == 2) {
         g_price_488 = NormalizeDouble(Low[iLowest(NULL, 0, MODE_LOW, 2, 0)] - gd_512, Digits);
         if ((g_price_456 - g_price_488) / Point > 止损限制倍数 * l_stoplevel_136) g_price_488 = NormalizeDouble(g_price_456 - 止损限制倍数 * l_stoplevel_136 * Point, Digits);
      }
      if (li_100 == 3) {
         g_price_488 = NormalizeDouble(MathMin(g_low_576, g_low_560) - gd_512, Digits);
         if ((g_price_456 - g_price_488) / Point > 止损限制倍数 * l_stoplevel_136) g_price_488 = NormalizeDouble(g_price_456 - 止损限制倍数 * l_stoplevel_136 * Point, Digits);
      }
      if (li_116) Print("SL_BUY = ", g_price_488, " ", Symbol());
      g_price_472 = NormalizeDouble(g_price_456 + 止盈倍数 * l_stoplevel_136 * Point, Digits);
      if (li_116) Print("TP_BUY = ", g_price_472, " ", Symbol());
      g_price_464 = NormalizeDouble(Proc4(g_high_552, g_low_560, 日志, g_spread_584, Point, li_124, gi_616, gi_620, g_time_624, g_time_628, High[iHighest(NULL, 0, MODE_HIGH, gi_592 - 1, 1)], Low[iLowest(NULL, 0, MODE_LOW, gi_600 - 1, 1)], High[gi_608], Low[gi_612]), Digits);
      if (li_100 == 1) g_price_496 = NormalizeDouble(g_price_464 + (止损倍数 * l_stoplevel_136 + g_spread_584) * Point, Digits);
      if (li_100 == 2) {
         g_price_496 = NormalizeDouble(High[iHighest(NULL, 0, MODE_HIGH, 2, 0)] + g_spread_584 * Point + gd_512, Digits);
         if ((g_price_496 - g_price_464) / Point > 止损限制倍数 * l_stoplevel_136) g_price_496 = NormalizeDouble(g_price_464 + (止损限制倍数 * l_stoplevel_136 + g_spread_584) * Point, Digits);
      }
      if (li_100 == 3) {
         g_price_496 = NormalizeDouble(MathMax(g_high_552, g_high_568) + g_spread_584 * Point + gd_512, Digits);
         if ((g_price_496 - g_price_464) / Point > 止损限制倍数 * l_stoplevel_136) g_price_496 = NormalizeDouble(g_price_464 + (止损限制倍数 * l_stoplevel_136 + g_spread_584) * Point, Digits);
      }
      if (li_116) Print("SL_SELL = ", g_price_496, " ", Symbol());
      g_price_480 = NormalizeDouble(g_price_464 - 止盈倍数 * l_stoplevel_136 * Point, Digits);
      if (li_116) Print("TP_SELL = ", g_price_480, " ", Symbol());
      g_lots_528 = 0.1;
      g_lots_520 = 0.1;
      if (AccountBalance() > 500.0) {
         g_lots_528 = NormalizeDouble(AccountBalance() * 百分比手数a, LotDecimal);
         g_lots_520 = NormalizeDouble(AccountBalance() * 百分比手数a, LotDecimal);
         for (li_160 = OrdersHistoryTotal() - 1; li_160 >= 0; li_160--) {
            if (OrderSelect(li_160, SELECT_BY_POS, MODE_HISTORY) == FALSE) break;
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码2) {
               if (OrderLots() <= NormalizeDouble(AccountBalance() * 百分比手数a, LotDecimal)) {
                  g_lots_528 = NormalizeDouble(AccountBalance() * 百分比手数a, LotDecimal);
                  g_lots_520 = NormalizeDouble(AccountBalance() * 百分比手数a, LotDecimal);
                  break;
               }
               g_lots_528 = NormalizeDouble(OrderLots(), LotDecimal);
               g_lots_520 = NormalizeDouble(OrderLots(), LotDecimal);
               break;
            }
         }
      }
      if (固定手数a > 0.0) {
         g_lots_528 = NormalizeDouble(固定手数a, LotDecimal);
         g_lots_520 = NormalizeDouble(固定手数a, LotDecimal);
      }
      if (g_lots_528 > NormalizeDouble(AccountFreeMargin() / (1.05 * g_marginrequired_536), LotDecimal) || g_lots_520 > NormalizeDouble(AccountFreeMargin() / (1.05 * g_marginrequired_536), LotDecimal)) {
         g_lots_528 = NormalizeDouble(AccountFreeMargin() / (1.05 * g_marginrequired_536), LotDecimal);
         g_lots_520 = NormalizeDouble(AccountFreeMargin() / (1.05 * g_marginrequired_536), LotDecimal);
      }
   }
   bool k = TRUE;
   if (AccountFreeMargin() < MarketInfo(Symbol(), MODE_MARGINREQUIRED) / 10.0) {
      k = FALSE;
      Print("No money");
   }
   int j = 15;
   if (li_132) gi_652 = TRUE;
   if (MathAbs((gd_640 - Close[0]) / Point) > li_68 && gd_640 != 0.0 && li_64) {
      gi_636 = TRUE;
      g_datetime_648 = TimeCurrent();
      if (gi_652 == TRUE) {
         if (li_116) Print("The price shock for ", (gd_640 - Close[0]) / Point, " pips.", Symbol());
         if (li_116) Print("last_price ", DoubleToStr(gd_640, Digits), ", curent_price ", DoubleToStr(Close[0], Digits));
         gi_652 = FALSE;
      }
   }
   gd_640 = Close[0];
   bool 有钱 = TRUE;
   if (li_104 != 0) {
      li_176 = 60 * li_104 + li_108;
      li_180 = 60 * TimeHour(TimeCurrent()) + TimeMinute(TimeCurrent());
      if (li_176 - li_180 <= 20 && li_180 - li_176 <= 15) 有钱 = FALSE;
   }
   if (li_132) gi_656 = TRUE;
   if (有钱 == TRUE) {
      if (DayOfWeek() == 5 && TimeCurrent() - iTime(NULL, PERIOD_D1, 0) > 79200) {
         有钱 = FALSE;
         if (gi_656 == TRUE) {
            if (li_116) Print("Friday, ending trading.");
            gi_656 = FALSE;
         }
      }
   }
   if (li_132) gi_660 = TRUE;
   if (有钱 == TRUE) {
      if ((DayOfWeek() == 1 && TimeCurrent() - iTime(NULL, PERIOD_D1, 0) < 3900) || DayOfWeek() == 6 || DayOfWeek() == 7) {
         有钱 = FALSE;
         if (gi_660 == TRUE) {
            if (li_116) Print("Monday, prior to 1-00 in the morning do not trade. Or off.");
            gi_660 = FALSE;
         }
      }
   }
   double l_ord_open_price_184 = 0;
   double l_ord_open_price_192 = 0;
   for (li_160 = 0; li_160 < OrdersTotal(); li_160++) {
      if (OrderSelect(li_160, SELECT_BY_POS, MODE_TRADES) == FALSE) break;
      if (OrderType() == OP_BUYSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码2) l_ord_open_price_184 = OrderOpenPrice();
      if (OrderType() == OP_SELLSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码2) l_ord_open_price_192 = OrderOpenPrice();
   }
   bool li_200 = TRUE;
   bool li_204 = TRUE;
   int l_count_208 = 0;
   int l_count_212 = 0;
   if (li_132) {
      gi_664 = TRUE;
      gi_668 = TRUE;
   }
   for (li_160 = 0; li_160 < OrdersTotal(); li_160++) {
      if (OrderSelect(li_160, SELECT_BY_POS, MODE_TRADES) == FALSE) break;
      if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码2) {
         if (OrderTicket() == g_ticket_672 && 止损方式) {
            PlaySound("alert.wav");
            g_ticket_672 = 0;
         }
         if (OrderOpenTime() >= Time[0]) {
            gi_664 = FALSE;
            continue;
         }
      }
      if (OrderType() == OP_BUYSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码2) {
         li_200 = FALSE;
         g_ticket_672 = OrderTicket();
         l_count_208++;
         if (l_count_208 > 1) {
            ans=OrderDelete(OrderTicket());
            continue;
         }
         if (gi_636 && OrderOpenPrice() - Ask < l_stoplevel_136 < 2 * Point) {
            ans=OrderDelete(OrderTicket());
            gi_632 = FALSE;
            Print("Delete order ", OrderTicket(), " due to the price shock");
            continue;
         }
         if (有钱 == FALSE) {
            ans=OrderDelete(OrderTicket());
            if (!(li_116)) continue;
            Print("Delete order ", OrderTicket(), "PERMIS_TRADE=", 有钱);
            continue;
         }
         if (li_44 && MathAbs(OrderOpenPrice() - l_ord_open_price_184) / Point < l_stoplevel_136) {
            ans=OrderDelete(OrderTicket());
            if (!(li_116)) continue;
            Print("Order ", OrderTicket(), " deleted because of the similarity with a Day Extremum");
            continue;
         }
         if (显示命令 == FALSE && OrderOpenPrice() - Close[0] > 300.0 * Point) {
            ans=OrderDelete(OrderTicket());
            if (!(li_116)) continue;
            Print("Order ", OrderTicket(), " deleted because price far");
            continue;
         }
         if (MathAbs(OrderOpenPrice() - g_price_456) >= 50.0 * Point && Ask <= OrderOpenPrice() - l_stoplevel_136 * Point)
         ans=OrderModify(OrderTicket(), g_price_456, g_price_488, g_price_472, 0, Blue);
         else
            if (MathAbs(OrderOpenPrice() - g_price_456) < 50.0 * Point && Ask <= OrderOpenPrice() - l_stoplevel_136 * Point
            && NormalizeDouble(OrderOpenPrice(), gi_588) != NormalizeDouble(g_price_456, gi_588))
            ans=OrderModify(OrderTicket(), g_price_456, g_price_488, g_price_472, 0, CLR_NONE);
         if (NormalizeDouble(OrderStopLoss(), gi_588) != NormalizeDouble(g_price_488, gi_588)) {
            if (li_116) Print("modify StopLoss, order ", OrderTicket(), " from ", OrderStopLoss(), " to ", g_price_488);
            ans=OrderModify(OrderTicket(), OrderOpenPrice(), g_price_488, OrderTakeProfit(), 0, CLR_NONE);
         }
         if (NormalizeDouble(OrderLots(), LotDecimal) != NormalizeDouble(g_lots_528, LotDecimal)) {
            if (li_116) Print("modify lots, order ", OrderTicket(), " from ", OrderLots(), " to ", g_lots_528);
            ans=OrderDelete(OrderTicket());
         }
      }
      if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码2) {
         if (OrderTicket() == g_ticket_676 && 止损方式) {
            PlaySound("alert.wav");
            g_ticket_676 = 0;
         }
         if (OrderOpenTime() >= Time[0]) {
            gi_668 = FALSE;
            continue;
         }
      }
      if (OrderType() == OP_SELLSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码2) {
         li_204 = FALSE;
         g_ticket_676 = OrderTicket();
         l_count_212++;
         if (l_count_212 > 1) ans=OrderDelete(OrderTicket());
         else
         {
            if (gi_636 && Bid - OrderOpenPrice() < l_stoplevel_136 < 2 * Point)
            {
               ans=OrderDelete(OrderTicket());
               gi_632 = FALSE;
               if (li_116) Print("Delete order ", OrderTicket(), " due to the price shock");
            }
            else
            {
               if (有钱 == FALSE) ans=OrderDelete(OrderTicket());
               else
               {
                  if (li_44 && MathAbs(OrderOpenPrice() - l_ord_open_price_192) / Point < l_stoplevel_136)
                  {
                     ans=OrderDelete(OrderTicket());
                     if (li_116) Print("Order ", OrderTicket(), " closed because of the similarity with a Day Extremum");
                  }
                  else
                  {
                     if (显示命令 == FALSE && Close[0] - OrderOpenPrice() > 300.0 * Point)
                     {
                        ans=OrderDelete(OrderTicket());
                        if (li_116) Print("Order ", OrderTicket(), " delited because price far");
                     }
                     else
                     {
                        if (MathAbs(OrderOpenPrice() - g_price_464) >= 50.0 * Point  && Bid >= OrderOpenPrice() + l_stoplevel_136 * Point)
                        ans=OrderModify(OrderTicket(), g_price_464, g_price_496, g_price_480, 0, Red);
                        else
                           if (MathAbs(OrderOpenPrice() - g_price_464) < 50.0 * Point && Bid >= OrderOpenPrice() + l_stoplevel_136 * Point
                           && NormalizeDouble(OrderOpenPrice(), gi_588) != NormalizeDouble(g_price_464, gi_588))
                           ans=OrderModify(OrderTicket(), g_price_464, g_price_496, g_price_480, 0, CLR_NONE);
                        if (NormalizeDouble(OrderStopLoss(), gi_588) != NormalizeDouble(g_price_496, gi_588)) ans=OrderModify(OrderTicket(), OrderOpenPrice(), g_price_496, OrderTakeProfit(), 0, CLR_NONE);
                        if (NormalizeDouble(OrderLots(), LotDecimal) != NormalizeDouble(g_lots_520, LotDecimal)) ans=OrderDelete(OrderTicket());
                     }
                  }
               }
            }
         }
      }
   }
   if ((TimeCurrent() - g_datetime_648) / 60 > j) {
      gi_632 = TRUE;
      gi_636 = FALSE;
   }
   bool li_216 = TRUE;
   bool li_220 = TRUE;
   if (High[iHighest(NULL, 0, MODE_HIGH, gi_592 - 1, 0)] >= High[gi_592]) li_216 = FALSE;
   if (Low[iLowest(NULL, 0, MODE_LOW, gi_600 - 1, 0)] <= Low[gi_600]) li_220 = FALSE;
   bool li_224 = TRUE;
   bool li_228 = TRUE;
   if (li_124 == FALSE || li_216 || gi_616 < g_time_624 || High[iHighest(NULL, 0, MODE_HIGH, gi_608, 0)] >= High[gi_608]) li_224 = FALSE;
   if (li_124 == FALSE || li_220 || gi_620 < g_time_628 || Low[iLowest(NULL, 0, MODE_LOW, gi_612, 0)] <= Low[gi_612]) li_228 = FALSE;
   bool li_232 = TRUE;
   bool li_236 = TRUE;
   if (li_44 && MathAbs(g_price_456 - l_ord_open_price_184) / Point < l_stoplevel_136) li_232 = FALSE;
   if (li_44 && MathAbs(g_price_464 - l_ord_open_price_192) / Point < l_stoplevel_136) li_236 = FALSE;
   bool li_240 = TRUE;
   bool li_244 = TRUE;
   if (显示命令 == FALSE) {
      if (g_price_456 - Close[0] > 150.0 * Point) li_240 = FALSE;
      if (Close[0] - g_price_464 > 150.0 * Point) li_244 = FALSE;
   }
   int ticket;
   if ((li_240 && li_232 && k && gi_632 && 有钱 && li_216 && gi_664 && li_200 && Ask <= g_price_456 - l_stoplevel_136 * Point) || (li_240 && li_232 && k &&
      gi_632 && 有钱 && li_224 && gi_664 && li_200 && Ask <= g_price_456 - l_stoplevel_136 * Point))
      ticket=OrderSend(Symbol(), OP_BUYSTOP, g_lots_528, g_price_456, 0, NormalizeDouble(g_price_488,Digits), NormalizeDouble(g_price_472,Digits), "Fractals_H1", 识别码2, 0, Blue);
   if ((li_244 && li_236 && k && gi_632 && 有钱 && li_220 && gi_668 && li_204 && Bid >= g_price_464 + l_stoplevel_136 * Point) || (li_244 && li_236 && k &&
      gi_632 && 有钱 && li_228 && gi_668 && li_204 && Bid >= g_price_464 + l_stoplevel_136 * Point))
      ticket=OrderSend(Symbol(), OP_SELLSTOP, g_lots_520, g_price_464, 0, NormalizeDouble(g_price_496,Digits), NormalizeDouble(g_price_480,Digits), "Fractals_H1", 识别码2, 0, Red);
   double ld_248 = ld_84;
   if (ld_84 < 1.0) ld_248 = 1;
   if (li_100 == 1) {
      l_price_256 = NormalizeDouble(Bid - 止损倍数 * l_stoplevel_136 * Point, Digits);
      l_price_264 = NormalizeDouble(Ask + 止损倍数 * l_stoplevel_136 * Point, Digits);
   }
   if (li_100 == 2) {
      l_price_256 = NormalizeDouble(Low[iLowest(NULL, 0, MODE_LOW, 2, 1)] - gd_512, Digits);
      l_price_264 = NormalizeDouble(High[iHighest(NULL, 0, MODE_HIGH, 2, 1)] + gd_512 + g_spread_584 * Point, Digits);
   }
   if (li_100 == 3) {
      l_price_256 = NormalizeDouble(MathMin(g_low_576, g_low_560) - gd_512, Digits);
      l_price_264 = NormalizeDouble(MathMax(g_high_568, g_high_552) + gd_512 + g_spread_584 * Point, Digits);
   }
   for (li_160 = 0; li_160 <= OrdersTotal(); li_160++) {
      if (OrderSelect(li_160, SELECT_BY_POS, MODE_TRADES) == FALSE) break;
      if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码2) {
         if (l_stoplevel_136 > li_40 && OrderStopLoss() < OrderOpenPrice() && OrderProfit() > 0.0 && (iHigh(NULL, PERIOD_H4, 0) - Close[0]) / Point >= li_40) {
            ans=OrderClose(OrderTicket(), OrderLots(), Bid, 3, CLR_NONE);
            RefreshRates();
            if (!(li_116)) continue;
            Print("Close Order ", OrderTicket(), " ---> stop>min_stop");
            continue;
         }
         if ((TimeCurrent() - OrderOpenTime() > 60 * li_80 && OrderStopLoss() < OrderOpenPrice() && Bid >= OrderOpenPrice()) || (波动剧烈标准 == TRUE && OrderProfit() > 0.0)) {
            ans=OrderClose(OrderTicket(), OrderLots(), Bid, 3, CLR_NONE);
            if (!(li_116)) continue;
            Print("Close Order ", OrderTicket(), " ---> time_of_close");
            continue;
         }
         if (li_64 && MathAbs((OrderOpenPrice() - g_price_456) / Point) > li_68 && OrderProfit() > 0.0) {
            ans=OrderClose(OrderTicket(), OrderLots(), Bid, 5, Yellow);
            if (li_116) Print("Close Order ", OrderTicket(), " due to the price shock ", MathAbs((OrderOpenPrice() - g_price_456) / Digits), " pips");
            if (!(li_116)) continue;
            Print("OrderOpenPrise ", DoubleToStr(OrderOpenPrice(), Digits), ", PRICE_BUY ", DoubleToStr(g_price_456, Digits));
            continue;
         }
         if (li_72 == TRUE && OrderProfit() >= 0.0 && iClose(NULL, PERIOD_M1, 0) < iOpen(NULL, PERIOD_M1, 0) && Close[0] < iLow(NULL, PERIOD_M1, 1) && (iClose(NULL, PERIOD_M1, 1) < iOpen(NULL, PERIOD_M1, 1) ||
            iClose(NULL, PERIOD_M1, 1) < iLow(NULL, PERIOD_M1, 1) + (iHigh(NULL, PERIOD_M1, 1) - iLow(NULL, PERIOD_M1, 1)) / 3.0)) {
            ans=OrderClose(OrderTicket(), OrderLots(), Bid, 3, Yellow);
            if (!(li_116)) continue;
            Print("Close Order ", OrderTicket(), " ---> minimum_risk_M1");
            continue;
         }
         if (li_76 == TRUE && OrderProfit() >= 0.0 && iClose(NULL, PERIOD_M5, 0) < iOpen(NULL, PERIOD_M5, 0) && Close[0] < iLow(NULL, PERIOD_M5, 1) && (iClose(NULL, PERIOD_M5, 1) < iOpen(NULL, PERIOD_M5, 1) ||
            iClose(NULL, PERIOD_M5, 1) < iLow(NULL, PERIOD_M5, 1) + (iHigh(NULL, PERIOD_M5, 1) - iLow(NULL, PERIOD_M5, 1)) / 3.0))
         {
            ans=OrderClose(OrderTicket(), OrderLots(), Bid, 3, Yellow);
            if (!(li_116)) continue;
            Print("Close Order ", OrderTicket(), " ---> minimum_risk_M5");
            continue;
         }
         if (OrderStopLoss() < OrderOpenPrice()) {
            if (li_52 == TRUE && Bid - OrderOpenPrice() >= MathCeil(l_stoplevel_136 * ld_84) * Point && Bid - OrderStopLoss() > MathCeil(l_stoplevel_136 * ld_84) * Point) {
               ans=OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid - MathCeil(l_stoplevel_136 * ld_248) * Point, Digits), OrderTakeProfit(), 0, LightGreen);
               Print("羊噔膻 ?眍朦 BUY 铕溴?", OrderTicket());
               continue;
            }
            if (li_52 == TRUE && Bid - OrderOpenPrice() >= MathCeil(l_stoplevel_136 * ld_84) * Point && Bid - OrderStopLoss() > MathCeil(l_stoplevel_136 * ld_84) * Point && OrderStopLoss() < NormalizeDouble(Bid - MathCeil(l_stoplevel_136 * ld_248 +
               l_stoplevel_136 / 10.0) * Point, Digits)) {
               ans=OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid - MathCeil(l_stoplevel_136 * ld_248 + l_stoplevel_136 / 10.0) * Point, Digits), OrderTakeProfit(), 0, LightGreen);
               Print("羊噔膻 ?眍朦 BUY 铕溴?", OrderTicket());
               continue;
            }
            if (li_56 == TRUE && OrderStopLoss() < l_price_256 && Bid - l_price_256 >= l_stoplevel_136 * Point) {
               if (li_116) Print("Reduce losses OP_BUY order ", OrderTicket(), " moved S/L from ", DoubleToStr(OrderStopLoss(), Digits), " to ", DoubleToStr(l_price_256, Digits), ". Methot S/L=", li_100);
               ans=OrderModify(OrderTicket(), OrderOpenPrice(), l_price_256, OrderTakeProfit(), 0, LightGreen);
               continue;
            }
         }
         if (OrderStopLoss() >= OrderOpenPrice() && li_48 == TRUE) {
            if (Bid - OrderStopLoss() > Point * l_pips_92 * l_stoplevel_136) {
               ans=OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid - l_pips_92 * l_stoplevel_136 * Point, Digits), OrderTakeProfit(), 0, LightGreen);
               continue;
            }
         }
         if (OrderStopLoss() >= OrderOpenPrice() && li_56 == TRUE && l_price_256 > OrderStopLoss() && Bid - l_price_256 >= l_stoplevel_136 * Point)
         {
            if (li_116) Print("Moving_S_L=true, Methot S/L=", li_100, ". Increase Profit OP_BUY order ", OrderTicket(), " from ", DoubleToStr(OrderStopLoss(), Digits), " to ", DoubleToStr(l_price_256, Digits));
            ans=OrderModify(OrderTicket(), OrderOpenPrice(), l_price_256, OrderTakeProfit(), 0, LightGreen);
            continue;
         }
      }
      if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码2)
      {
         if (l_stoplevel_136 > li_40 && OrderStopLoss() > OrderOpenPrice() && OrderProfit() > 0.0 && (Close[0] - iLow(NULL, PERIOD_H4, 0)) / Point >= li_40) {
            ans=OrderClose(OrderTicket(), OrderLots(), Ask, 3, CLR_NONE);
            RefreshRates();
            if (li_116) Print("Close Order ", OrderTicket(), " ---> stop>min_stop");
         }
         else
         {
            if ((TimeCurrent() - OrderOpenTime() > 60 * li_80 && OrderStopLoss() > OrderOpenPrice() && Ask <= OrderOpenPrice()) || (波动剧烈标准 == TRUE && OrderProfit() > 0.0))
            ans=OrderClose(OrderTicket(), OrderLots(), Ask, 3, CLR_NONE);
            else
            {
               if (li_64 && MathAbs((g_price_464 - OrderOpenPrice()) / Point) > li_68 && OrderProfit() > 0.0) {
                  ans=OrderClose(OrderTicket(), OrderLots(), Ask, 5, Yellow);
                  if (li_116) Print("Close Order ", OrderTicket(), " due to the price shock ", MathAbs((OrderOpenPrice() - g_price_464) / Digits), " pips");
                  if (li_116) Print("OrderOpenPrise ", DoubleToStr(OrderOpenPrice(), Digits), ", PRICE_SELL ", DoubleToStr(g_price_464, Digits));
               } else {
                  if (li_72 == TRUE && OrderProfit() >= 0.0 && iClose(NULL, PERIOD_M1, 0) > iOpen(NULL, PERIOD_M1, 0) && Close[0] > iHigh(NULL, PERIOD_M1, 1) && (iClose(NULL, PERIOD_M1, 1) > iOpen(NULL, PERIOD_M1, 1) ||
                     iClose(NULL, PERIOD_M1, 1) > iHigh(NULL, PERIOD_M1, 1) - (iHigh(NULL, PERIOD_M1, 1) - iLow(NULL, PERIOD_M1, 1)) / 3.0) )
                  {
                     ans=OrderClose(OrderTicket(), OrderLots(), Ask, 3, Yellow);
                     if (li_116) Print("Close Order ", OrderTicket(), " ---> minimum_risk_M1");
                  } else {
                     if (li_76 == TRUE && OrderProfit() >= 0.0 && iClose(NULL, PERIOD_M5, 0) > iOpen(NULL, PERIOD_M5, 0) && Close[0] > iHigh(NULL, PERIOD_M5, 1) && (iClose(NULL, PERIOD_M5, 1) > iOpen(NULL, PERIOD_M5, 1) ||
                        iClose(NULL, PERIOD_M5, 1) > iHigh(NULL, PERIOD_M5, 1) - (iHigh(NULL, PERIOD_M5, 1) - iLow(NULL, PERIOD_M5, 1)) / 3.0))
                     {
                        ans=OrderClose(OrderTicket(), OrderLots(), Ask, 3, Yellow);
                        if (li_116) Print("Close Order ", OrderTicket(), " ---> minimum_risk_M5");
                     } else {
                        if (OrderStopLoss() > OrderOpenPrice()) {
                           if (li_52 == TRUE && OrderOpenPrice() - Ask >= Point * MathCeil(l_stoplevel_136 * ld_84) && OrderStopLoss() - Ask > MathCeil(l_stoplevel_136 * ld_84) * Point) {
                              ans=OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask + MathCeil(l_stoplevel_136 * ld_248) * Point, Digits), OrderTakeProfit(), 0, Pink);
                              Print("羊噔膻 ?眍朦 SELL 铕溴?", OrderTicket());
                              continue;
                           }
                           if (li_52 == TRUE && OrderOpenPrice() - Ask >= Point * MathCeil(l_stoplevel_136 * ld_84) && OrderStopLoss() - Ask > MathCeil(l_stoplevel_136 * ld_84) * Point && OrderStopLoss() > NormalizeDouble(Ask +
                              MathCeil(l_stoplevel_136 * ld_248 + l_stoplevel_136 / 10.0) * Point, Digits)) {
                              ans=OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask + MathCeil(l_stoplevel_136 * ld_248 + l_stoplevel_136 / 10.0) * Point, Digits), OrderTakeProfit(), 0, Pink);
                              Print("羊噔膻 ?眍朦 SELL 铕溴?", OrderTicket());
                              continue;
                           }
                           if (li_56 == TRUE && OrderStopLoss() > l_price_264 && l_price_264 - Ask >= l_stoplevel_136 * Point) {
                              if (li_116) Print("Reduce losses OP_SELL order ", OrderTicket(), " moved S/L from", DoubleToStr(OrderStopLoss(), Digits), " to ", DoubleToStr(l_price_264, Digits), ". Methot S/L=", li_100);
                              ans=OrderModify(OrderTicket(), OrderOpenPrice(), l_price_264, OrderTakeProfit(), 0, LightGreen);
                              continue;
                           }
                        }
                        if (OrderStopLoss() <= OrderOpenPrice() && li_48 == TRUE) {
                           if (OrderStopLoss() - Ask > Point * l_pips_92 * l_stoplevel_136) {
                              ans=OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask + l_pips_92 * l_stoplevel_136 * Point, Digits), OrderTakeProfit(), 0, Pink);
                              continue;
                           }
                        }
                        if (OrderStopLoss() <= OrderOpenPrice() && li_56 == TRUE && l_price_264 < OrderStopLoss() && l_price_264 - Ask >= l_stoplevel_136 * Point) {
                           if (li_116) Print("Tr.stop = false. Methot S/L=", li_100, ". Increase Profit OP_SELL order ", OrderTicket(), " from ", DoubleToStr(OrderStopLoss(), Digits), " to ", DoubleToStr(l_price_264, Digits));
                           ans=OrderModify(OrderTicket(), OrderOpenPrice(), l_price_264, OrderTakeProfit(), 0, LightGreen);
                        }
                     }
                  }
               }
            }
         }
      }
   }
}

void 执行策略3() {                                                       //第三策略详情
   double l_ifractals_144;
   double l_ifractals_152;
   int li_176;
   int li_180;
   double l_price_256;
   double l_price_264;
   double 百分比手数a = 手数百分比 / 10000.0;
   double 固定手数a = 固定手数;
   double 止损倍数 = 12;
   double 止损限制倍数 = 20;
   double 止盈倍数 = 75;
   int li_40 = 20;
   bool li_44 = false;
   bool li_48 = TRUE;
   bool li_52 = TRUE;
   bool li_56 = TRUE;
   bool 波动剧烈标准 = FALSE;
   bool li_64 = TRUE;
   int li_68 = 75;
   bool li_72 = TRUE;
   bool li_76 = TRUE;
   int li_80 = 180;
   double ld_84 = 1;
   double l_pips_92 = 1;
   int li_100 = 2;
   int li_104 = 0;
   int li_108 = 0;
   bool 止损方式 = FALSE;
   bool li_116 = FALSE;
   bool li_124 = TRUE;
   bool 日志 = TRUE;
   if (止损倍数 < 1.0 || 止盈倍数 < 1.0) {
      Print("stop level below the requested soluble");
      return;
   }


   //////////////////////////////////////////调整时间////////////////////////////////////////////////////
   bool li_132 = FALSE;
   if (时间调整 == 0) 时间调整 = Time[0];                 //假如时间=0;那么赋值为现在的时间;
   if (时间调整 != Time[0]) {                             //假如时间不等于现在的时间
      li_132 = TRUE;
      时间调整 = Time[0];                                 //调整为现在时间
   }
   //////////////////////////////////////////////////////////////////////////////////////////////


   int l_stoplevel_136 = MarketInfo(Symbol(), MODE_STOPLEVEL);
   if (l_stoplevel_136 < li_40 && Digits == 5) l_stoplevel_136 = li_40;
   if (l_stoplevel_136 < 2 && Digits == 4) l_stoplevel_136 = 2;
   if (li_132 || g_lots_788 == 0.0 || g_lots_796 == 0.0 || g_price_724 == 0.0 || g_price_732 == 0.0 || g_price_740 == 0.0 || g_price_748 == 0.0 || g_price_756 == 0.0 ||
      g_price_764 == 0.0 || g_ticksize_772 == 0.0 || gd_780 == 0.0) {
      g_spread_852 = MarketInfo(Symbol(), MODE_SPREAD);
      if (li_116) Print("spread = ", g_spread_852, " ", Symbol());
      g_ticksize_772 = MarketInfo(Symbol(), MODE_TICKSIZE);
      g_tickvalue_812 = MarketInfo(Symbol(), MODE_TICKVALUE);
      g_marginrequired_804 = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
      if (Digits == 5) {
         gd_780 = 10.0 * g_ticksize_772;
         gi_856 = 4;
      } else gd_780 = g_ticksize_772;
      for (int li_140 = 3; li_140 < 100; li_140++) {
         if (High[li_140] >= High[li_140 + 1] && High[li_140] > High[li_140 + 2] && High[li_140] >= High[li_140 - 1] && High[li_140] > High[li_140 - 2]) {
            g_high_820 = High[li_140];
            gi_860 = li_140;
            g_time_892 = Time[li_140];
            break;
         }
      }
      for (li_140 = gi_860 + 1; li_140 < 100; li_140++) {
         if (High[li_140] >= High[li_140 + 1] && High[li_140] > High[li_140 + 2] && High[li_140] >= High[li_140 - 1] && High[li_140] > High[li_140 - 2]) {
            g_high_836 = High[li_140];
            gi_unused_864 = li_140;
            break;
         }
      }
      for (li_140 = 3; li_140 < 100; li_140++) {
         if (Low[li_140] <= Low[li_140 + 1] && Low[li_140] < Low[li_140 + 2] && Low[li_140] <= Low[li_140 - 1] && Low[li_140] < Low[li_140 - 2]) {
            g_low_828 = Low[li_140];
            gi_868 = li_140;
            g_time_896 = Time[li_140];
            break;
         }
      }
      for (li_140 = gi_868 + 1; li_140 < 100; li_140++) {
         if (Low[li_140] <= Low[li_140 + 1] && Low[li_140] < Low[li_140 + 2] && Low[li_140] <= Low[li_140 - 1] && Low[li_140] < Low[li_140 - 2]) {
            g_low_844 = Low[li_140];
            gi_unused_872 = li_140;
            break;
         }
      }
      l_ifractals_144 = iFractals(NULL, 0, MODE_UPPER, 0);
      l_ifractals_152 = iFractals(NULL, 0, MODE_LOWER, 0);
      g_ialligator_700 = iAlligator(NULL, 0, 13, 8, 8, 5, 5, 3, MODE_SMMA, PRICE_MEDIAN, MODE_GATORLIPS, 0);
      g_ialligator_708 = iAlligator(NULL, 0, 13, 8, 8, 5, 5, 3, MODE_SMMA, PRICE_MEDIAN, MODE_GATORTEETH, 0);
      g_ialligator_716 = iAlligator(NULL, 0, 13, 8, 8, 5, 5, 3, MODE_SMMA, PRICE_MEDIAN, MODE_GATORJAW, 0);
      g_iao_684 = iAO(NULL, 0, 1);
      g_iao_692 = iAO(NULL, 0, 2);
      for (int li_160 = 1; li_160 <= 1000; li_160++) {
         if ((iAO(NULL, 0, li_160 + 1) > 0.0 && iAO(NULL, 0, li_160) > iAO(NULL, 0, li_160 + 1) && iAO(NULL, 0, li_160 + 1) < iAO(NULL, 0, li_160 + 2)) || (iAO(NULL, 0, li_160) > 0.0 &&
            iAO(NULL, 0, li_160 + 1) < 0.0)) {
            gi_876 = li_160;
            gi_884 = Time[li_160];
            break;
         }
      }
      for (li_160 = 1; li_160 <= 1000; li_160++) {
         if ((iAO(NULL, 0, li_160 + 1) < 0.0 && iAO(NULL, 0, li_160) < iAO(NULL, 0, li_160 + 1) && iAO(NULL, 0, li_160 + 1) > iAO(NULL, 0, li_160 + 2)) || (iAO(NULL, 0, li_160) < 0.0 &&
            iAO(NULL, 0, li_160 + 1) > 0.0)) {
            gi_880 = li_160;
            gi_888 = Time[li_160];
            break;
         }
      }
      if (li_116) Print("shift_ao_buy=", gi_876, ", shift_ao_sell=", gi_880);
      g_price_724 = NormalizeDouble(Proc3(g_high_820, g_low_828, 日志, g_spread_852, Point, li_124, gi_884, gi_888, g_time_892, g_time_896, High[iHighest(NULL, 0, MODE_HIGH, gi_860 - 1, 1)], Low[iLowest(NULL, 0, MODE_LOW, gi_868 - 1, 1)], High[gi_876], Low[gi_880]), Digits);
      if (li_100 == 1) g_price_756 = NormalizeDouble(g_price_724 - 止损倍数 * l_stoplevel_136 * Point, Digits);
      if (li_100 == 2) {
         g_price_756 = NormalizeDouble(Low[iLowest(NULL, 0, MODE_LOW, 2, 0)] - gd_780, Digits);
         if ((g_price_724 - g_price_756) / Point > 止损限制倍数 * l_stoplevel_136) g_price_756 = NormalizeDouble(g_price_724 - 止损限制倍数 * l_stoplevel_136 * Point, Digits);
      }
      if (li_100 == 3) {
         g_price_756 = NormalizeDouble(MathMin(g_low_844, g_low_828) - gd_780, Digits);
         if ((g_price_724 - g_price_756) / Point > 止损限制倍数 * l_stoplevel_136) g_price_756 = NormalizeDouble(g_price_724 - 止损限制倍数 * l_stoplevel_136 * Point, Digits);
      }
      if (li_116) Print("SL_BUY = ", g_price_756, " ", Symbol());
      g_price_740 = NormalizeDouble(g_price_724 + 止盈倍数 * l_stoplevel_136 * Point, Digits);
      if (li_116) Print("TP_BUY = ", g_price_740, " ", Symbol());
      g_price_732 = NormalizeDouble(Proc4(g_high_820, g_low_828, 日志, g_spread_852, Point, li_124, gi_884, gi_888, g_time_892, g_time_896, High[iHighest(NULL, 0, MODE_HIGH, gi_860 - 1, 1)], Low[iLowest(NULL, 0, MODE_LOW, gi_868 - 1, 1)], High[gi_876], Low[gi_880]), Digits);
      if (li_100 == 1) g_price_764 = NormalizeDouble(g_price_732 + (止损倍数 * l_stoplevel_136 + g_spread_852) * Point, Digits);
      if (li_100 == 2) {
         g_price_764 = NormalizeDouble(High[iHighest(NULL, 0, MODE_HIGH, 2, 0)] + g_spread_852 * Point + gd_780, Digits);
         if ((g_price_764 - g_price_732) / Point > 止损限制倍数 * l_stoplevel_136) g_price_764 = NormalizeDouble(g_price_732 + (止损限制倍数 * l_stoplevel_136 + g_spread_852) * Point, Digits);
      }
      if (li_100 == 3) {
         g_price_764 = NormalizeDouble(MathMax(g_high_820, g_high_836) + g_spread_852 * Point + gd_780, Digits);
         if ((g_price_764 - g_price_732) / Point > 止损限制倍数 * l_stoplevel_136) g_price_764 = NormalizeDouble(g_price_732 + (止损限制倍数 * l_stoplevel_136 + g_spread_852) * Point, Digits);
      }
      if (li_116) Print("SL_SELL = ", g_price_764, " ", Symbol());
      g_price_748 = NormalizeDouble(g_price_732 - 止盈倍数 * l_stoplevel_136 * Point, Digits);
      if (li_116) Print("TP_SELL = ", g_price_748, " ", Symbol());
      g_lots_796 = 0.1;
      g_lots_788 = 0.1;
      if (AccountBalance() > 500.0) {
         g_lots_796 = NormalizeDouble(AccountBalance() * 百分比手数a, LotDecimal);
         g_lots_788 = NormalizeDouble(AccountBalance() * 百分比手数a, LotDecimal);
         for (li_160 = OrdersHistoryTotal() - 1; li_160 >= 0; li_160--) {
            if (OrderSelect(li_160, SELECT_BY_POS, MODE_HISTORY) == FALSE) break;
            if (OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码3) {
               if (OrderLots() <= NormalizeDouble(AccountBalance() * 百分比手数a, LotDecimal)) {
                  g_lots_796 = NormalizeDouble(AccountBalance() * 百分比手数a, LotDecimal);
                  g_lots_788 = NormalizeDouble(AccountBalance() * 百分比手数a, LotDecimal);
                  break;
               }
               g_lots_796 = NormalizeDouble(OrderLots(), LotDecimal);
               g_lots_788 = NormalizeDouble(OrderLots(), LotDecimal);
               break;
            }
         }
      }
      if (固定手数a > 0.0) {
         g_lots_796 = NormalizeDouble(固定手数a, LotDecimal);
         g_lots_788 = NormalizeDouble(固定手数a, LotDecimal);
      }
      if (g_lots_796 > NormalizeDouble(AccountFreeMargin() / (1.05 * g_marginrequired_804), LotDecimal) || g_lots_788 > NormalizeDouble(AccountFreeMargin() / (1.05 * g_marginrequired_804), LotDecimal)) {
         g_lots_796 = NormalizeDouble(AccountFreeMargin() / (1.05 * g_marginrequired_804), LotDecimal);
         g_lots_788 = NormalizeDouble(AccountFreeMargin() / (1.05 * g_marginrequired_804), LotDecimal);
      }
   }
   bool k = TRUE;
   if (AccountFreeMargin() < MarketInfo(Symbol(), MODE_MARGINREQUIRED) / 10.0) {
      k = FALSE;
      Print("No money");
   }
   int j = 15;
   if (li_132) gi_920 = TRUE;
   if (MathAbs((gd_908 - Close[0]) / Point) > li_68 && gd_908 != 0.0 && li_64) {
      gi_904 = TRUE;
      g_datetime_916 = TimeCurrent();
      if (gi_920 == TRUE) {
         if (li_116) Print("The price shock for ", (gd_908 - Close[0]) / Point, " pips.", Symbol());
         if (li_116) Print("last_price ", DoubleToStr(gd_908, Digits), ", curent_price ", DoubleToStr(Close[0], Digits));
         gi_920 = FALSE;
      }
   }
   gd_908 = Close[0];
   bool 有钱 = TRUE;
   if (li_104 != 0) {
      li_176 = 60 * li_104 + li_108;
      li_180 = 60 * TimeHour(TimeCurrent()) + TimeMinute(TimeCurrent());
      if (li_176 - li_180 <= 20 && li_180 - li_176 <= 15) 有钱 = FALSE;
   }
   if (li_132) gi_924 = TRUE;
   if (有钱 == TRUE) {
      if (DayOfWeek() == 5 && TimeCurrent() - iTime(NULL, PERIOD_D1, 0) > 79200) {
         有钱 = FALSE;
         if (gi_924 == TRUE) {
            if (li_116) Print("Friday, ending trading.");
            gi_924 = FALSE;
         }
      }
   }
   if (li_132) gi_928 = TRUE;
   if (有钱 == TRUE) {
      if ((DayOfWeek() == 1 && TimeCurrent() - iTime(NULL, PERIOD_D1, 0) < 3900) || DayOfWeek() == 6 || DayOfWeek() == 7) {
         有钱 = FALSE;
         if (gi_928 == TRUE) {
            if (li_116) Print("Monday, prior to 1-00 in the morning do not trade. Or off.");
            gi_928 = FALSE;
         }
      }
   }
   double l_ord_open_price_184 = 0;
   double l_ord_open_price_192 = 0;
   for (li_160 = 0; li_160 < OrdersTotal(); li_160++) {
      if (OrderSelect(li_160, SELECT_BY_POS, MODE_TRADES) == FALSE) break;
      if (OrderType() == OP_BUYSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码3) l_ord_open_price_184 = OrderOpenPrice();
      if (OrderType() == OP_SELLSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码3) l_ord_open_price_192 = OrderOpenPrice();
   }
   bool li_200 = TRUE;
   bool li_204 = TRUE;
   int l_count_208 = 0;
   int l_count_212 = 0;
   if (li_132) {
      gi_932 = TRUE;
      gi_936 = TRUE;
   }
   for (li_160 = 0; li_160 < OrdersTotal(); li_160++) {
      if (OrderSelect(li_160, SELECT_BY_POS, MODE_TRADES) == FALSE) break;
      if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码3) {
         if (OrderTicket() == g_ticket_940 && 止损方式) {
            PlaySound("alert.wav");
            g_ticket_940 = 0;
         }
         if (OrderOpenTime() >= Time[0]) {
            gi_932 = FALSE;
            continue;
         }
      }
      if (OrderType() == OP_BUYSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码3) {
         li_200 = FALSE;
         g_ticket_940 = OrderTicket();
         l_count_208++;
         if (l_count_208 > 1) {
            ans=OrderDelete(OrderTicket());
            continue;
         }
         if (gi_904 && OrderOpenPrice() - Ask < l_stoplevel_136 < 2 * Point) {
            ans=OrderDelete(OrderTicket());
            gi_900 = FALSE;
            Print("Delete order ", OrderTicket(), " due to the price shock");
            continue;
         }
         if (有钱 == FALSE) {
            ans=OrderDelete(OrderTicket());
            if (!(li_116)) continue;
            Print("Delete order ", OrderTicket(), "PERMIS_TRADE=", 有钱);
            continue;
         }
         if (li_44 && MathAbs(OrderOpenPrice() - l_ord_open_price_184) / Point < l_stoplevel_136) {
            ans=OrderDelete(OrderTicket());
            if (!(li_116)) continue;
            Print("Order ", OrderTicket(), " deleted because of the similarity with a Day Extremum");
            continue;
         }
         if (显示命令 == FALSE && OrderOpenPrice() - Close[0] > 300.0 * Point) {
            ans=OrderDelete(OrderTicket());
            if (!(li_116)) continue;
            Print("Order ", OrderTicket(), " deleted because price far");
            continue;
         }
         if (MathAbs(OrderOpenPrice() - g_price_724) >= 50.0 * Point  && Ask <= OrderOpenPrice() - l_stoplevel_136 * Point)
         ans=OrderModify(OrderTicket(), g_price_724, g_price_756, g_price_740, 0, Blue);
         else
            if (MathAbs(OrderOpenPrice() - g_price_724) < 50.0 * Point  && Ask <= OrderOpenPrice() - l_stoplevel_136 * Point
             && NormalizeDouble(OrderOpenPrice(), gi_856) != NormalizeDouble(g_price_724, gi_856))
             ans= OrderModify(OrderTicket(), g_price_724, g_price_756, g_price_740, 0, CLR_NONE);
         if (NormalizeDouble(OrderStopLoss(), gi_856) != NormalizeDouble(g_price_756, gi_856))
         {
            if (li_116) Print("modify StopLoss, order ", OrderTicket(), " from ", OrderStopLoss(), " to ", g_price_756);
            ans=OrderModify(OrderTicket(), OrderOpenPrice(), g_price_756, OrderTakeProfit(), 0, CLR_NONE);
         }
         if (NormalizeDouble(OrderLots(), LotDecimal) != NormalizeDouble(g_lots_796, LotDecimal)) {
            if (li_116) Print("modify lots, order ", OrderTicket(), " from ", OrderLots(), " to ", g_lots_796);
            ans=OrderDelete(OrderTicket());
         }
      }
      if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码3) {
         if (OrderTicket() == g_ticket_944 && 止损方式) {
            PlaySound("alert.wav");
            g_ticket_944 = 0;
         }
         if (OrderOpenTime() >= Time[0]) {
            gi_936 = FALSE;
            continue;
         }
      }
      if (OrderType() == OP_SELLSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码3) {
         li_204 = FALSE;
         g_ticket_944 = OrderTicket();
         l_count_212++;
         if (l_count_212 > 1) ans=OrderDelete(OrderTicket());
         else {
            if (gi_904 && Bid - OrderOpenPrice() < l_stoplevel_136 < (2 * Point))
            {
               ans=OrderDelete(OrderTicket());
               gi_900 = FALSE;
               if (li_116) Print("Delete order ", OrderTicket(), " due to the price shock");
            }
            else
            {
               if (有钱 == FALSE) ans=OrderDelete(OrderTicket());
               else {
                  if (li_44 && MathAbs(OrderOpenPrice() - l_ord_open_price_192) / Point < l_stoplevel_136) {
                     ans=OrderDelete(OrderTicket());
                     if (li_116) Print("Order ", OrderTicket(), " closed because of the similarity with a Day Extremum");
                  } else {
                     if (显示命令 == FALSE && Close[0] - OrderOpenPrice() > 300.0 * Point) {
                        ans=OrderDelete(OrderTicket());
                        if (li_116) Print("Order ", OrderTicket(), " delited because price far");
                     } else {
                        if (MathAbs(OrderOpenPrice() - g_price_732) >= 50.0 * Point  && Bid >= OrderOpenPrice() + l_stoplevel_136 * Point)
                        ans=OrderModify(OrderTicket(), g_price_732, g_price_764, g_price_748, 0, Red);
                        else
                           if (MathAbs(OrderOpenPrice() - g_price_732) < 50.0 * Point  && Bid >= OrderOpenPrice() + l_stoplevel_136 * Point
                           && NormalizeDouble(OrderOpenPrice(), gi_856) != NormalizeDouble(g_price_732, gi_856))
                           ans=OrderModify(OrderTicket(), g_price_732, g_price_764, g_price_748, 0, CLR_NONE);
                        if (NormalizeDouble(OrderStopLoss(), gi_856) != NormalizeDouble(g_price_764, gi_856)) ans=OrderModify(OrderTicket(), OrderOpenPrice(), g_price_764, OrderTakeProfit(), 0, CLR_NONE);
                        if (NormalizeDouble(OrderLots(), LotDecimal) != NormalizeDouble(g_lots_788, LotDecimal)) ans=OrderDelete(OrderTicket());
                     }
                  }
               }
            }
         }
      }
   }
   if ((TimeCurrent() - g_datetime_916) / 60 > j) {
      gi_900 = TRUE;
      gi_904 = FALSE;
   }
   bool li_216 = TRUE;
   bool li_220 = TRUE;
   if (High[iHighest(NULL, 0, MODE_HIGH, gi_860 - 1, 0)] >= High[gi_860]) li_216 = FALSE;
   if (Low[iLowest(NULL, 0, MODE_LOW, gi_868 - 1, 0)] <= Low[gi_868]) li_220 = FALSE;
   bool li_224 = TRUE;
   bool li_228 = TRUE;
   if (li_124 == FALSE || li_216 || gi_884 < g_time_892 || High[iHighest(NULL, 0, MODE_HIGH, gi_876, 0)] >= High[gi_876]) li_224 = FALSE;
   if (li_124 == FALSE || li_220 || gi_888 < g_time_896 || Low[iLowest(NULL, 0, MODE_LOW, gi_880, 0)] <= Low[gi_880]) li_228 = FALSE;
   bool li_232 = TRUE;
   bool li_236 = TRUE;
   if (li_44 && MathAbs(g_price_724 - l_ord_open_price_184) / Point < l_stoplevel_136) li_232 = FALSE;
   if (li_44 && MathAbs(g_price_732 - l_ord_open_price_192) / Point < l_stoplevel_136) li_236 = FALSE;
   bool li_240 = TRUE;
   bool li_244 = TRUE;
   if (显示命令 == FALSE) {
      if (g_price_724 - Close[0] > 150.0 * Point) li_240 = FALSE;
      if (Close[0] - g_price_732 > 150.0 * Point) li_244 = FALSE;
   }
   int ticket;
   if ((li_240 && li_232 && k && gi_900 && 有钱 && li_216 && gi_932 && li_200 && Ask <= g_price_724 - l_stoplevel_136 * Point) || (li_240 && li_232 && k &&
      gi_900 && 有钱 && li_224 && gi_932 && li_200 && Ask <= g_price_724 - l_stoplevel_136 * Point))
      ticket=OrderSend(Symbol(), OP_BUYSTOP, g_lots_796, g_price_724, 0, NormalizeDouble(g_price_756,Digits), NormalizeDouble(g_price_740,Digits), "Fractals", 识别码3, 0, Blue);
   if ((li_244 && li_236 && k && gi_900 && 有钱 && li_220 && gi_936 && li_204 && Bid >= g_price_732 + l_stoplevel_136 * Point) || (li_244 && li_236 && k &&
      gi_900 && 有钱 && li_228 && gi_936 && li_204 && Bid >= g_price_732 + l_stoplevel_136 * Point))
      ticket=OrderSend(Symbol(), OP_SELLSTOP, g_lots_788, g_price_732, 0, NormalizeDouble(g_price_764,Digits), NormalizeDouble(g_price_748,Digits), "Fractals", 识别码3, 0, Red);
   double ld_248 = ld_84;
   if (ld_84 < 1.0) ld_248 = 1;
   if (li_100 == 1) {
      l_price_256 = NormalizeDouble(Bid - 止损倍数 * l_stoplevel_136 * Point, Digits);
      l_price_264 = NormalizeDouble(Ask + 止损倍数 * l_stoplevel_136 * Point, Digits);
   }
   if (li_100 == 2) {
      l_price_256 = NormalizeDouble(Low[iLowest(NULL, 0, MODE_LOW, 2, 1)] - gd_780, Digits);
      l_price_264 = NormalizeDouble(High[iHighest(NULL, 0, MODE_HIGH, 2, 1)] + gd_780 + g_spread_852 * Point, Digits);
   }
   if (li_100 == 3) {
      l_price_256 = NormalizeDouble(MathMin(g_low_844, g_low_828) - gd_780, Digits);
      l_price_264 = NormalizeDouble(MathMax(g_high_836, g_high_820) + gd_780 + g_spread_852 * Point, Digits);
   }
   for (li_160 = 0; li_160 <= OrdersTotal(); li_160++) {
      if (OrderSelect(li_160, SELECT_BY_POS, MODE_TRADES) == FALSE) break;
      if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码3) {
         if (l_stoplevel_136 > li_40 && OrderStopLoss() < OrderOpenPrice() && OrderProfit() > 0.0 && (iHigh(NULL, PERIOD_H4, 0) - Close[0]) / Point >= li_40) {
            ans=OrderClose(OrderTicket(), OrderLots(), Bid, 3, CLR_NONE);
            RefreshRates();
            if (!(li_116)) continue;
            Print("Close Order ", OrderTicket(), " ---> stop>min_stop");
            continue;
         }
         if ((TimeCurrent() - OrderOpenTime() > 60 * li_80 && OrderStopLoss() < OrderOpenPrice() && Bid >= OrderOpenPrice()) || (波动剧烈标准 == TRUE && OrderProfit() > 0.0)) {
            ans=OrderClose(OrderTicket(), OrderLots(), Bid, 3, CLR_NONE);
            if (!(li_116)) continue;
            Print("Close Order ", OrderTicket(), " ---> time_of_close");
            continue;
         }
         if (li_64 && MathAbs((OrderOpenPrice() - g_price_724) / Point) > li_68 && OrderProfit() > 0.0) {
            ans=OrderClose(OrderTicket(), OrderLots(), Bid, 5, Yellow);
            if (li_116) Print("Close Order ", OrderTicket(), " due to the price shock ", MathAbs((OrderOpenPrice() - g_price_724) / Digits), " pips");
            if (!(li_116)) continue;
            Print("OrderOpenPrise ", DoubleToStr(OrderOpenPrice(), Digits), ", PRICE_BUY ", DoubleToStr(g_price_724, Digits));
            continue;
         }
         if (li_72 == TRUE && OrderProfit() >= 0.0 && iClose(NULL, PERIOD_M1, 0) < iOpen(NULL, PERIOD_M1, 0) && Close[0] < iLow(NULL, PERIOD_M1, 1) && (iClose(NULL, PERIOD_M1, 1) < iOpen(NULL, PERIOD_M1, 1) ||
            iClose(NULL, PERIOD_M1, 1) < iLow(NULL, PERIOD_M1, 1) + (iHigh(NULL, PERIOD_M1, 1) - iLow(NULL, PERIOD_M1, 1)) / 3.0))
         {
            ans=OrderClose(OrderTicket(), OrderLots(), Bid, 3, Yellow);
            if (!(li_116)) continue;
            Print("Close Order ", OrderTicket(), " ---> minimum_risk_M1");
            continue;
         }
         if (li_76 == TRUE && OrderProfit() >= 0.0 && iClose(NULL, PERIOD_M5, 0) < iOpen(NULL, PERIOD_M5, 0) && Close[0] < iLow(NULL, PERIOD_M5, 1) && (iClose(NULL, PERIOD_M5, 1) < iOpen(NULL, PERIOD_M5, 1) ||
            iClose(NULL, PERIOD_M5, 1) < iLow(NULL, PERIOD_M5, 1) + (iHigh(NULL, PERIOD_M5, 1) - iLow(NULL, PERIOD_M5, 1)) / 3.0))
         {
            ans=OrderClose(OrderTicket(), OrderLots(), Bid, 3, Yellow);
            if (!(li_116)) continue;
            Print("Close Order ", OrderTicket(), " ---> minimum_risk_M5");
            continue;
         }
         if (OrderStopLoss() < OrderOpenPrice()) {
            if (li_52 == TRUE && Bid - OrderOpenPrice() >= MathCeil(l_stoplevel_136 * ld_84) * Point && Bid - OrderStopLoss() > MathCeil(l_stoplevel_136 * ld_84) * Point) {
               ans=OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid - MathCeil(l_stoplevel_136 * ld_248) * Point, Digits), OrderTakeProfit(), 0, LightGreen);
               Print("羊噔膻 ?眍朦 BUY 铕溴?", OrderTicket());
               continue;
            }
            if (li_52 == TRUE && Bid - OrderOpenPrice() >= MathCeil(l_stoplevel_136 * ld_84) * Point && Bid - OrderStopLoss() > MathCeil(l_stoplevel_136 * ld_84) * Point && OrderStopLoss() < NormalizeDouble(Bid - MathCeil(l_stoplevel_136 * ld_248 +
               l_stoplevel_136 / 10.0) * Point, Digits)) {
               ans=OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid - MathCeil(l_stoplevel_136 * ld_248 + l_stoplevel_136 / 10.0) * Point, Digits), OrderTakeProfit(), 0, LightGreen);
               Print("羊噔膻 ?眍朦 BUY 铕溴?", OrderTicket());
               continue;
            }
            if (li_56 == TRUE && OrderStopLoss() < l_price_256 && Bid - l_price_256 >= l_stoplevel_136 * Point) {
               if (li_116) Print("Reduce losses OP_BUY order ", OrderTicket(), " moved S/L from ", DoubleToStr(OrderStopLoss(), Digits), " to ", DoubleToStr(l_price_256, Digits), ". Methot S/L=", li_100);
               ans=OrderModify(OrderTicket(), OrderOpenPrice(), l_price_256, OrderTakeProfit(), 0, LightGreen);
               continue;
            }
         }
         if (OrderStopLoss() >= OrderOpenPrice() && li_48 == TRUE) {
            if (Bid - OrderStopLoss() > Point * l_pips_92 * l_stoplevel_136) {
               ans=OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid - l_pips_92 * l_stoplevel_136 * Point, Digits), OrderTakeProfit(), 0, LightGreen);
               continue;
            }
         }
         if (OrderStopLoss() >= OrderOpenPrice() && li_56 == TRUE && l_price_256 > OrderStopLoss() && Bid - l_price_256 >= l_stoplevel_136 * Point) {
            if (li_116) Print("Moving_S_L=true, Methot S/L=", li_100, ". Increase Profit OP_BUY order ", OrderTicket(), " from ", DoubleToStr(OrderStopLoss(), Digits), " to ", DoubleToStr(l_price_256, Digits));
            ans=OrderModify(OrderTicket(), OrderOpenPrice(), l_price_256, OrderTakeProfit(), 0, LightGreen);
            continue;
         }
      }
      if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == 识别码3) {
         if (l_stoplevel_136 > li_40 && OrderStopLoss() > OrderOpenPrice() && OrderProfit() > 0.0 && (Close[0] - iLow(NULL, PERIOD_H4, 0)) / Point >= li_40) {
            ans=OrderClose(OrderTicket(), OrderLots(), Ask, 3, CLR_NONE);
            RefreshRates();
            if (li_116) Print("Close Order ", OrderTicket(), " ---> stop>min_stop");
         } else {
            if ((TimeCurrent() - OrderOpenTime() > 60 * li_80 && OrderStopLoss() > OrderOpenPrice() && Ask <= OrderOpenPrice()) || (波动剧烈标准 == TRUE && OrderProfit() > 0.0))
            ans=OrderClose(OrderTicket(), OrderLots(), Ask, 3, CLR_NONE);
            else {
               if (li_64 && MathAbs((g_price_732 - OrderOpenPrice()) / Point) > li_68 && OrderProfit() > 0.0) {
                  ans=OrderClose(OrderTicket(), OrderLots(), Ask, 5, Yellow);
                  if (li_116) Print("Close Order ", OrderTicket(), " due to the price shock ", MathAbs((OrderOpenPrice() - g_price_732) / Digits), " pips");
                  if (li_116) Print("OrderOpenPrise ", DoubleToStr(OrderOpenPrice(), Digits), ", PRICE_SELL ", DoubleToStr(g_price_732, Digits));
               } else {
                  if (li_72 == TRUE && OrderProfit() >= 0.0 && iClose(NULL, PERIOD_M1, 0) > iOpen(NULL, PERIOD_M1, 0) && Close[0] > iHigh(NULL, PERIOD_M1, 1) && (iClose(NULL, PERIOD_M1, 1) > iOpen(NULL, PERIOD_M1, 1) ||
                     iClose(NULL, PERIOD_M1, 1) > iHigh(NULL, PERIOD_M1, 1) - (iHigh(NULL, PERIOD_M1, 1) - iLow(NULL, PERIOD_M1, 1)) / 3.0))
                  {
                     ans=OrderClose(OrderTicket(), OrderLots(), Ask, 3, Yellow);
                     if (li_116) Print("Close Order ", OrderTicket(), " ---> minimum_risk_M1");
                  }
                  else
                  {
                     if (li_76 == TRUE && OrderProfit() >= 0.0 && iClose(NULL, PERIOD_M5, 0) > iOpen(NULL, PERIOD_M5, 0) && Close[0] > iHigh(NULL, PERIOD_M5, 1) && (iClose(NULL, PERIOD_M5, 1) > iOpen(NULL, PERIOD_M5, 1) ||
                        iClose(NULL, PERIOD_M5, 1) > iHigh(NULL, PERIOD_M5, 1) - (iHigh(NULL, PERIOD_M5, 1) - iLow(NULL, PERIOD_M5, 1)) / 3.0))
                     {
                        ans=OrderClose(OrderTicket(), OrderLots(), Ask, 3, Yellow);
                        if (li_116) Print("Close Order ", OrderTicket(), " ---> minimum_risk_M5");
                     }
                     else
                     {
                        if (OrderStopLoss() > OrderOpenPrice()) {
                           if (li_52 == TRUE && OrderOpenPrice() - Ask >= Point * MathCeil(l_stoplevel_136 * ld_84) && OrderStopLoss() - Ask > MathCeil(l_stoplevel_136 * ld_84) * Point) {
                              ans=OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask + MathCeil(l_stoplevel_136 * ld_248) * Point, Digits), OrderTakeProfit(), 0, Pink);
                              Print("羊噔膻 ?眍朦 SELL 铕溴?", OrderTicket());
                              continue;
                           }
                           if (li_52 == TRUE && OrderOpenPrice() - Ask >= Point * MathCeil(l_stoplevel_136 * ld_84) && OrderStopLoss() - Ask > MathCeil(l_stoplevel_136 * ld_84) * Point && OrderStopLoss() > NormalizeDouble(Ask +
                              MathCeil(l_stoplevel_136 * ld_248 + l_stoplevel_136 / 10.0) * Point, Digits)) {
                              ans=OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask + MathCeil(l_stoplevel_136 * ld_248 + l_stoplevel_136 / 10.0) * Point, Digits), OrderTakeProfit(), 0, Pink);
                              Print("羊噔膻 ?眍朦 SELL 铕溴?", OrderTicket());
                              continue;
                           }
                           if (li_56 == TRUE && OrderStopLoss() > l_price_264 && l_price_264 - Ask >= l_stoplevel_136 * Point) {
                              if (li_116) Print("Reduce losses OP_SELL order ", OrderTicket(), " moved S/L from", DoubleToStr(OrderStopLoss(), Digits), " to ", DoubleToStr(l_price_264, Digits), ". Methot S/L=", li_100);
                              ans=OrderModify(OrderTicket(), OrderOpenPrice(), l_price_264, OrderTakeProfit(), 0, LightGreen);
                              continue;
                           }
                        }
                        if (OrderStopLoss() <= OrderOpenPrice() && li_48 == TRUE) {
                           if (OrderStopLoss() - Ask > Point * l_pips_92 * l_stoplevel_136) {
                              ans=OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask + l_pips_92 * l_stoplevel_136 * Point, Digits), OrderTakeProfit(), 0, Pink);
                              continue;
                           }
                        }
                        if (OrderStopLoss() <= OrderOpenPrice() && li_56 == TRUE && l_price_264 < OrderStopLoss() && l_price_264 - Ask >= l_stoplevel_136 * Point) {
                           if (li_116) Print("Tr.stop = false. Methot S/L=", li_100, ". Increase Profit OP_SELL order ", OrderTicket(), " from ", DoubleToStr(OrderStopLoss(), Digits), " to ", DoubleToStr(l_price_264, Digits));
                           ans=OrderModify(OrderTicket(), OrderOpenPrice(), l_price_264, OrderTakeProfit(), 0, LightGreen);
                        }
                     }
                  }
               }
            }
         }
      }
   }
}

bool DeletePOs(int strat)
{
   int ct;
   bool err,found;
   for (int cnt=OrdersTotal()-1; cnt>=0 ; cnt--) {
      if (!OrderSelect(cnt, SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderType()<2 || OrderSymbol()!=Symbol()) continue;
      found=false;
      switch(strat) {
         case 1: if (OrderMagicNumber()==识别码1) found=true;
         case 2: if (OrderMagicNumber()==识别码2) found=true;
         case 3: if (OrderMagicNumber()==识别码3) found=true;
         default: found=false;
         }
      if (found) {   
         ct=0;
         err=false;
         while (!err && ct<50) {
            err=OrderDelete(OrderTicket());
            ct++;
            }
         if (!err) Print("Delete unsuccessful - ticket #",OrderTicket()," - error ",GetLastError());
         }
      }
   return(true);
}


跑ECN止损点太近.png
""
还没有人打赏,支持一下

评论|共 1 个

liuqianshuai

发表于 2024-5-12 12:58:32 | 显示全部楼层

本帖最后由 liuqianshuai 于 2024-5-12 14:39 编辑


=====2还小,就3,4,5,6,7====哈哈哈===================

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

EA之家评论守则