cm ea StopOrdersTrendLine

Price Data Components
Series array that contains the highest prices of each barSeries array that contains the lowest prices of each bar
Orders Execution
Checks for the total of open ordersIt Closes Orders by itself It can change open orders parameters, due to possible stepping strategyIt automatically opens orders when conditions are reached
0 Views
0 Downloads
0 Favorites
cm ea StopOrdersTrendLine
ÿþ//+------------------------------------------------------------------+

//|                               Copyright © 2012, %;KAB>2 ;048<8@ |

//|                                                cmillion@narod.ru |

//+------------------------------------------------------------------+

#property copyright "Copyright © 2019, http://cmillion.ru"

#property link      "cmillion@narod.ru"

#property version   "1.00"

#property strict

#property description "!>25B=8: 2545B AB>? >@45@0 24>;L B@5=4>2>9 ;8=88"

/*

!>25B=8: AB028B >B;>65==K9 >@45@ (A> AB>?>< 8 ?@>D8B><) =0 >?@545;5==>< @0AAB>O=88 >B B@5=4>2>9 ;8=88. (DistanceFromLine)

0B5< ?@8 A@010BK20=88 >@45@0 8 ?> ?@>H5AB288 >?@545;5==KE ?C=:B>2 (PartualCloseDistance) 70:@K205B G0ABL ?>78F88 8 ?5@52>48B 

>AB0B>: 2 157C1KB>: ?;NA (BE_plusPunkts) ?C=:B>2.

@8 70?CA:5 A>25B=8:0 ?>O2;ONBAO 425 :=>?:8 Buy, Sell, GB>1K <>6=> 1K;> 2:;NG0BL Buy 8;8 Sell >B45;L=>, 8;8 2<5AB5. 

@8 =060B88 =0 :=>?:C Buy ?>O2;O5BAO A8=OO B@5=4>20O ;8=8O, :>B>@CN <>6=> :0: C3>4=> ?5@5<5I0BL 8 A25@EC :>B>@>9 =0 >?@545;5==>9 48AB0=F88 AB028BAO BuyStop.

=>?:0 Sell G5@B8B :@0A=CN ;8=8N 8 AB028B SellStop A=87C MB>9 ;8=88.

*/

//--------------------------------------------------------------------

input int     DistanceFromLine      = 100;    // 0AAB>O=85 2KAB02;5=8O >B;>65==>3> >@45@0 >B ;8=88

input int     Stoploss              = 350;

input int     Takeprofit            = 500;

input int     PartualCloseDistance  = 120;   //8AB0=F8N :>340 70:@K20BL G0ABL ?>78F88

input double  PartualCloseLot       = 0.02;  //>;8G5AB2> ;>B>2 ?>78F88, :>B>@K5 =C6=> 70:@KBL

input int     BE_Trigger            = 100;   //>340 ?5@52>48BL 2 157C1KB>:

input int     BE_plusPunkts         = 25;    //0A:>;L:> ?C=:B>2 AB028BL 2 157C1KB>:  

input double  Lots                  = 0.1;

sinput int    Magic                 = 100;

sinput bool   UseSound              = True;     // A?>;L7>20BL 72C:>2>9 A83=0;

sinput string SoundSuccess          = "ok.wav"; // 2C: 2:;NG5=8O A45;:8

int    Slippage              = 30;       //?@>A:0;L7K20=85 



int    FontSize          = 8;

int OnInit()

{

   ButtonCreate(0,"cm trend line Buy" ,0,5,46,45,20,"buy" ,"Times New Roman",10,clrBlack,clrLightGray,clrNONE,false);

   ButtonCreate(0,"cm trend line Sell",0,5,25,45,20,"sell","Times New Roman",10,clrBlack,clrLightGray,clrNONE,false);

   return(INIT_SUCCEEDED);

  }

//-------------------------------------------------------------------

void OnTick()

{

   double STOPLEVEL = MarketInfo(Symbol(),MODE_STOPLEVEL);

   int TicketBuyStop=0,TicketSellStop=0;

   double OL,OSL,OTP,OOP,StLo=0,SL=0,TP=0,PriceBuyStop=0,PriceSellStop=0;

   int tip,Ticket;

   

   bool BS = ObjectGetInteger(0,"cm trend line Buy",OBJPROP_STATE);

   bool SS = ObjectGetInteger(0,"cm trend line Sell",OBJPROP_STATE);

   

   //---

   datetime t1,t2;

   double PriceB=0,p1,p2;

   if (ObjectFind(0,"cm trend line B")!=-1) 

   {

      if (!BS) ObjectDelete(0,"cm trend line B");

      else PriceB = NormalizeDouble(ObjectGetValueByShift("cm trend line B",0),_Digits);

   }

   else 

   {

      if (BS) TrendCreate(0,"cm trend line B",0,iTime(NULL,0,50),iHigh(NULL,0,50),iTime(NULL,0,1),iHigh(NULL,0,1),clrBlue);

   }

   if (PriceB!=0)

   {

      t1 = (datetime)ObjectGetInteger(0,"cm trend line B",OBJPROP_TIME1);

      t2 = (datetime)ObjectGetInteger(0,"cm trend line B",OBJPROP_TIME2);

      p1 = ObjectGetDouble(0,"cm trend line B",OBJPROP_PRICE1);

      p2 = ObjectGetDouble(0,"cm trend line B",OBJPROP_PRICE2);

      TrendCreate(0,"cm trend line BuyStop",0,t1,p1+DistanceFromLine*_Point,t2,p2+DistanceFromLine*_Point,clrBlue,2,1,false,false);

   }

   else ObjectsDeleteAll(0,"cm trend line BuyStop");

   

   //---

   

   double PriceS=0;

   if (ObjectFind(0,"cm trend line S")!=-1) 

   {

      if (!SS) ObjectDelete(0,"cm trend line S");

      else PriceS = NormalizeDouble(ObjectGetValueByShift("cm trend line S",0),_Digits);

   }

   else 

   {

      if (SS) TrendCreate(0,"cm trend line S",0,iTime(NULL,0,50),iLow(NULL,0,50),iTime(NULL,0,1),iLow(NULL,0,1),clrRed);

   }

   if (PriceS!=0)

   {

      t1 = (datetime)ObjectGetInteger(0,"cm trend line S",OBJPROP_TIME1);

      t2 = (datetime)ObjectGetInteger(0,"cm trend line S",OBJPROP_TIME2);

      p1 = ObjectGetDouble(0,"cm trend line S",OBJPROP_PRICE1);

      p2 = ObjectGetDouble(0,"cm trend line S",OBJPROP_PRICE2);

      TrendCreate(0,"cm trend line SellStop",0,t1,p1-DistanceFromLine*_Point,t2,p2-DistanceFromLine*_Point,clrRed,2,1,false,false);

   }

   else ObjectsDeleteAll(0,"cm trend line SellStop");

   

   //---

   

   for (int i=0; i<OrdersTotal(); i++)

   {    

      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

      { 

         if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)

         { 

            tip = OrderType(); 

            OSL = NormalizeDouble(OrderStopLoss(),_Digits);

            OTP = NormalizeDouble(OrderTakeProfit(),_Digits);

            OOP = NormalizeDouble(OrderOpenPrice(),_Digits);

            Ticket = OrderTicket();

            OL = OrderLots();

            SL=OSL;TP=OTP;

            if (tip==OP_BUY)             

            {

               ObjectSetInteger(0,"cm trend line Buy",OBJPROP_STATE,false);

               BS=false;

               if (OL>=Lots && OL>=PartualCloseLot && Bid>OOP + PartualCloseDistance * _Point) 

               {

                  if (OrderClose(Ticket,PartualCloseLot,NormalizeDouble(Bid,_Digits),Slippage,clrNONE)) continue;

               }

               if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)

               {

                  SL = NormalizeDouble(OOP - Stoploss   * _Point,_Digits);

               } 

               if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)

               {

                  TP = NormalizeDouble(OOP + Takeprofit * _Point,_Digits);

               } 

               if (OSL<OOP && BE_Trigger!=0 && BE_Trigger>=STOPLEVEL)

               {

                  StLo = NormalizeDouble(OOP+BE_plusPunkts*_Point,_Digits); 

                  if (StLo > OSL && OOP <= NormalizeDouble(Bid - BE_Trigger * _Point,_Digits)) SL = StLo;

               }

               if (SL != OSL || TP != OTP)

               {  

                  if (!OrderModify(OrderTicket(),OOP,SL,TP,0,clrNONE)) Print("Error OrderModify <<",Error(GetLastError()),">> ");

               }

            }                                         

            if (tip==OP_SELL)        

            {

               ObjectSetInteger(0,"cm trend line Sell",OBJPROP_STATE,false);

               SS=false;

               if (OL>=Lots && OL>=PartualCloseLot && Ask<OOP - PartualCloseDistance * _Point) 

               {

                  if (OrderClose(Ticket,PartualCloseLot,NormalizeDouble(Ask,_Digits),Slippage,clrNONE)) 

                  continue;

               }

               if (OSL==0 && Stoploss>=STOPLEVEL && Stoploss!=0)

               {

                  SL = NormalizeDouble(OOP + Stoploss   * _Point,_Digits);

               }

               if (OTP==0 && Takeprofit>=STOPLEVEL && Takeprofit!=0)

               {

                  TP = NormalizeDouble(OOP - Takeprofit * _Point,_Digits);

               }

               if ((OSL>OOP || OSL==0) && BE_Trigger!=0 && BE_Trigger>=STOPLEVEL)

               {

                  StLo = NormalizeDouble(OOP-BE_plusPunkts*_Point,_Digits); 

                  if ((StLo < OSL || OSL==0) && OOP >= NormalizeDouble(Ask + BE_Trigger * _Point,_Digits)) SL = StLo;

               }

               if (SL != OSL || TP != OTP)

               {  

                  if (!OrderModify(OrderTicket(),OOP,SL,TP,0,clrNONE)) Print("Error OrderModify <<",Error(GetLastError()),">> ");

               }

            } 

            if (tip==OP_BUYSTOP)             

            {

               PriceBuyStop = OOP;

               TicketBuyStop = Ticket;

               if (PriceB==0 || !BS) if (OrderDelete(Ticket)) continue;;

            }                                         

            if (tip==OP_SELLSTOP)        

            {

               PriceSellStop = OOP;

               TicketSellStop = Ticket;

               if (PriceS==0 || !SS) if (OrderDelete(Ticket)) continue;;

            } 

         }

      }

   } 

   ObjectsDeleteAll(0,"#",0,OBJ_ARROW);

  //---

   if (BS)

   {

      if (PriceBuyStop==0)

      {

         PriceBuyStop=NormalizeDouble(PriceB + DistanceFromLine * _Point,_Digits);

         if (PriceBuyStop<Ask+STOPLEVEL*_Point) PriceBuyStop=NormalizeDouble(Ask+STOPLEVEL*_Point,_Digits);

         if (Takeprofit!=0) TP = NormalizeDouble(PriceBuyStop + Takeprofit * _Point,_Digits); else TP=0;

         if (Stoploss!=0)   SL = NormalizeDouble(PriceBuyStop - Stoploss   * _Point,_Digits); else SL=0;

         if (OrderSend(Symbol(),OP_BUYSTOP ,Lots,PriceBuyStop,0,SL,TP,NULL,Magic,0,clrBlue)==-1)

            Print("Error Order Send BuyStop ",GetLastError()," Lot=",DoubleToString(Lots,2)," Price=",DoubleToString(PriceSellStop,_Digits)," SL=",DoubleToString(SL,_Digits)," TP=",DoubleToString(TP,_Digits));

      }

      else

      {

         if (PriceBuyStop!=NormalizeDouble(PriceB + DistanceFromLine * _Point,_Digits))

         {

            PriceBuyStop=NormalizeDouble(PriceB + DistanceFromLine * _Point,_Digits);

            if (PriceBuyStop>=Ask+STOPLEVEL*_Point) 

            {

               if (Takeprofit!=0) TP = NormalizeDouble(PriceBuyStop + Takeprofit * _Point,_Digits); else TP=0;

               if (Stoploss!=0)   SL = NormalizeDouble(PriceBuyStop - Stoploss   * _Point,_Digits); else SL=0;

               if (!OrderModify(TicketBuyStop,PriceBuyStop,SL,TP,0,clrGreen)) 

                  Print("Error Order Modify BuyStop ",GetLastError()," Price=",DoubleToString(PriceBuyStop,_Digits)," SL=",DoubleToString(SL,_Digits)," TP=",DoubleToString(TP,_Digits));

            }

         }

      }

   }

   

   //---

   

   if (SS)

   {

      if (PriceSellStop==0)

      {

         PriceSellStop=NormalizeDouble(PriceS - DistanceFromLine * _Point,_Digits);

         if (PriceSellStop>Bid-STOPLEVEL*_Point) PriceSellStop=NormalizeDouble(Bid-STOPLEVEL*_Point,_Digits);Comment(PriceSellStop);

         if (Takeprofit!=0) TP = NormalizeDouble(PriceSellStop - Takeprofit * _Point,_Digits); else TP=0;

         if (Stoploss!=0)   SL = NormalizeDouble(PriceSellStop + Stoploss   * _Point,_Digits); else SL=0;

         if (OrderSend(Symbol(),OP_SELLSTOP ,Lots,PriceSellStop,0,SL,TP,NULL,Magic,0,clrRed)==-1)

            Print("Error Order Send BuyStop ",GetLastError()," Lot=",DoubleToString(Lots,2)," Price=",DoubleToString(PriceSellStop,_Digits)," SL=",DoubleToString(SL,_Digits)," TP=",DoubleToString(TP,_Digits));

      }

      else

      {

         if (PriceSellStop!=NormalizeDouble(PriceS - DistanceFromLine * _Point,_Digits))

         {

            PriceSellStop=NormalizeDouble(PriceS - DistanceFromLine * _Point,_Digits);

            if (PriceSellStop<=Bid-STOPLEVEL*_Point) 

            {

               if (Takeprofit!=0) TP = NormalizeDouble(PriceSellStop - Takeprofit * _Point,_Digits); else TP=0;

               if (Stoploss!=0)   SL = NormalizeDouble(PriceSellStop + Stoploss   * _Point,_Digits); else SL=0;

               if (!OrderModify(TicketSellStop,PriceSellStop,SL,TP,0,clrGreen)) 

                  Print("Error Order Modify BuyStop ",GetLastError()," Price=",DoubleToString(PriceSellStop,_Digits)," SL=",DoubleToString(SL,_Digits)," TP=",DoubleToString(TP,_Digits));

            }

         }

      }

   }

}

//--------------------------------------------------------------------

bool TrendCreate(const long            chart_ID=0,        // ID 3@0D8:0 

                 const string          name="TrendLine",  // 8<O ;8=88 

                 const int             sub_window=0,      // =><5@ ?>4>:=0 

                 datetime              time1=0,           // 2@5<O ?5@2>9 B>G:8 

                 double                price1=0,          // F5=0 ?5@2>9 B>G:8 

                 datetime              time2=0,           // 2@5<O 2B>@>9 B>G:8 

                 double                price2=0,          // F5=0 2B>@>9 B>G:8 

                 const color           clr=clrRed,        // F25B ;8=88 

                 const ENUM_LINE_STYLE style=STYLE_SOLID, // AB8;L ;8=88 

                 const int             width=1,           // B>;I8=0 ;8=88 

                 const bool            back=false,        // =0 704=5< ?;0=5 

                 const bool            selection=true,    // 2K45;8BL 4;O ?5@5<5I5=89 

                 const bool            ray_right=true,    // ?@>4>;65=85 ;8=88 2?@02> 

                 const bool            hidden=true,       // A:@KB 2 A?8A:5 >1J5:B>2 

                 const long            z_order=0)         // ?@8>@8B5B =0 =060B85 <KHLN 

  { 

   if(ObjectFind(chart_ID,name)!=-1) 

   {

      ObjectSetInteger(chart_ID,name,OBJPROP_TIME1,time1); 

      ObjectSetInteger(chart_ID,name,OBJPROP_TIME2,time2); 

      ObjectSetDouble(chart_ID,name,OBJPROP_PRICE1,price1); 

      ObjectSetDouble(chart_ID,name,OBJPROP_PRICE2,price2); 

      return(true); 

   }

   if(!ObjectCreate(chart_ID,name,OBJ_TREND,sub_window,time1,price1,time2,price2)) 

     { 

      return(false); 

     } 

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 

   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style); 

   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width); 

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 



   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); 

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); 

   ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right); 

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); 

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); 

   return(true); 

  } 

//+------------------------------------------------------------------+ //--------------------------------------------------------------------

void OnDeinit(const int reason)

{

   switch(reason) 

   { 

   case REASON_ACCOUNT: //:B828@>20= 4@C3>9 AG5B ;81> ?@>87>H;> ?5@5?>4:;NG5=85 : B>@3>2><C A5@25@C 2A;54AB285 87<5=5=8O =0AB@>5: AG5B0

      break; 

   case REASON_CHARTCHANGE: //!8<2>; 8;8 ?5@8>4 3@0D8:0 1K; 87<5=5=

      break; 

   case REASON_CHARTCLOSE: //@0D8: 70:@KB

      ObjectDelete("cm trend line");break; 

   case REASON_PARAMETERS: //E>4=K5 ?0@0<5B@K 1K;8 87<5=5=K ?>;L7>20B5;5<

      break; 

   case REASON_RECOMPILE: //@>3@0<<0 ?5@5:><?8;8@>20=0

      break; 

   case REASON_REMOVE: //@>3@0<<0 C40;5=0 A 3@0D8:0

      ObjectDelete("cm trend line");break; 

   case REASON_TEMPLATE: //@8<5=5= 4@C3>9 H01;>= 3@0D8:0

      ObjectDelete("cm trend line");break; 

   case REASON_PROGRAM://-:A?5@B ?@5:@0B8; A2>N @01>BC, 2K7202 DC=:F8N ExpertRemove()

      ObjectDelete("cm trend line");break; 

   default:ObjectDelete("cm trend line"); 

   } 

}

//--------------------------------------------------------------------

bool ButtonCreate(const long              chart_ID=0,               // ID 3@0D8:0

                  const string            name="Button",            // 8<O :=>?:8

                  const int               sub_window=0,             // =><5@ ?>4>:=0

                  const long              x=0,                      // :>>@48=0B0 ?> >A8 X

                  const long              y=0,                      // :>>@48=0B0 ?> >A8 Y

                  const int               width=50,                 // H8@8=0 :=>?:8

                  const int               height=18,                // 2KA>B0 :=>?:8

                  const string            text="Button",            // B5:AB

                  const string            font="Arial",             // H@8DB

                  const int               font_size=10,             // @07<5@ H@8DB0

                  const color             clr=clrRed,               // F25B B5:AB0

                  const color             clrfon=clrBlack,          // F25B D>=0

                  const color             border_clr=clrNONE,       // F25B 3@0=8FK

                  const bool              state=false,       // F25B 3@0=8FK

                  const ENUM_BASE_CORNER  CORNER=CORNER_LEFT_LOWER)

  {

   if (ObjectFind(chart_ID,name)==-1)

   {

      ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0);

      ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);

      ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);

      ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,CORNER);

      ObjectSetString(chart_ID,name,OBJPROP_FONT,font);

      ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);

      ObjectSetInteger(chart_ID,name,OBJPROP_BACK,0);

      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,0);

      ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,0);

      ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,1);

      ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,1);

      ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state);

   }

   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr);

   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,clrfon);

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);

   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);

   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);

   return(true);

}

//----------------------

string Error(int code)

{

   switch(code)

   {

      case 0:   return("5B >H81>:");

      case 1:   return("5B >H81:8, => @57C;LB0B =58725AB5=");                            

      case 2:   return("1I0O >H81:0");                                                   

      case 3:   return("5?@028;L=K5 ?0@0<5B@K");                                         

      case 4:   return("">@3>2K9 A5@25@ 70=OB");                                          

      case 5:   return("!B0@0O 25@A8O :;85=BA:>3> B5@<8=0;0");                            

      case 6:   return("5B A2O78 A B>@3>2K< A5@25@><");                                  

      case 7:   return("54>AB0B>G=> ?@02");                                              

      case 8:   return("!;8H:>< G0ABK5 70?@>AK");                                         

      case 9:   return("54>?CAB8<0O >?5@0F8O =0@CH0NI0O DC=:F8>=8@>20=85 A5@25@0");      

      case 64:  return("!G5B 701;>:8@>20=");                                              

      case 65:  return("5?@028;L=K9 =><5@ AG5B0");                                       

      case 128: return("AB5: A@>: >6840=8O A>25@H5=8O A45;:8");                          

      case 129: return("5?@028;L=0O F5=0");                                              

      case 130: return("5?@028;L=K5 AB>?K");                                             

      case 131: return("5?@028;L=K9 >1J5<");                                             

      case 132: return(" K=>: 70:@KB");                                                   

      case 133: return("">@3>2;O 70?@5I5=0");                                               

      case 134: return("54>AB0B>G=> 45=53 4;O A>25@H5=8O >?5@0F88");                     

      case 135: return("&5=0 87<5=8;0AL");                                                

      case 136: return("5B F5=");                                                        

      case 137: return("@>:5@ 70=OB");                                                   

      case 138: return(">2K5 F5=K");                                                     

      case 139: return("@45@ 701;>:8@>20= 8 C65 >1@010BK205BAO");                        

      case 140: return(" 07@5H5=0 B>;L:> ?>:C?:0");                                       

      case 141: return("!;8H:>< <=>3> 70?@>A>2");                                         

      case 145: return(">48D8:0F8O 70?@5I5=0, B0: :0: >@45@ A;8H:>< 1;87>: : @K=:C");    

      case 146: return(">4A8AB5<0 B>@3>2;8 70=OB0");                                     

      case 147: return("A?>;L7>20=85 40BK 8AB5G5=8O >@45@0 70?@5I5=> 1@>:5@><");         

      case 148: return(">;8G5AB2> >B:@KBKE 8 >B;>65==KE >@45@>2 4>AB83;> ?@545;0, CAB0=>2;5==>3> 1@>:5@><.");

      case 4000: return("5B >H81:8");                                                      

      case 4001: return("5?@028;L=K9 C:070B5;L DC=:F88");                                  

      case 4002: return("=45:A <0AA820 - 2=5 480?07>=0");                                  

      case 4003: return("5B ?0<OB8 4;O AB5:0 DC=:F89");                                    

      case 4004: return("5@5?>;=5=85 AB5:0 ?>A;5 @5:C@A82=>3> 2K7>20");                    

      case 4005: return("0 AB5:5 =5B ?0<OB8 4;O ?5@540G8 ?0@0<5B@>2");                     

      case 4006: return("5B ?0<OB8 4;O AB@>:>2>3> ?0@0<5B@0");                             

      case 4007: return("5B ?0<OB8 4;O 2@5<5==>9 AB@>:8");                                 

      case 4008: return("58=8F80;878@>20==0O AB@>:0");                                     

      case 4009: return("58=8F80;878@>20==0O AB@>:0 2 <0AA825");                           

      case 4010: return("5B ?0<OB8 4;O AB@>:>2>3> <0AA820");                               

      case 4011: return("!;8H:>< 4;8==0O AB@>:0");                                          

      case 4012: return("AB0B>: >B 45;5=8O =0 =>;L");                                      

      case 4013: return("5;5=85 =0 =>;L");                                                 

      case 4014: return("58725AB=0O :><0=40");                                             

      case 4015: return("5?@028;L=K9 ?5@5E>4");                                            

      case 4016: return("58=8F80;878@>20==K9 <0AA82");                                     

      case 4017: return("K7>2K DLL =5 @07@5H5=K");                                         

      case 4018: return("52>7<>6=> 703@C78BL 181;8>B5:C");                                 

      case 4019: return("52>7<>6=> 2K720BL DC=:F8N");                                      

      case 4020: return("K7>2K 2=5H=8E 181;8>B5G=KE DC=:F89 =5 @07@5H5=K");                

      case 4021: return("54>AB0B>G=> ?0<OB8 4;O AB@>:8, 2>72@0I05<>9 87 DC=:F88");         

      case 4022: return("!8AB5<0 70=OB0");                                                  

      case 4050: return("5?@028;L=>5 :>;8G5AB2> ?0@0<5B@>2 DC=:F88");                      

      case 4051: return("54>?CAB8<>5 7=0G5=85 ?0@0<5B@0 DC=:F88");                         

      case 4052: return("=CB@5==OO >H81:0 AB@>:>2>9 DC=:F88");                             

      case 4053: return("H81:0 <0AA820");                                                  

      case 4054: return("5?@028;L=>5 8A?>;L7>20=85 <0AA820-B09<A5@88");                    

      case 4055: return("H81:0 ?>;L7>20B5;LA:>3> 8=48:0B>@0");                             

      case 4056: return("0AA82K =5A>2<5AB8<K");                                            

      case 4057: return("H81:0 >1@01>B:8 3;>10;L=K5E ?5@5<5==KE");                         

      case 4058: return(";>10;L=0O ?5@5<5==0O =5 >1=0@C65=0");                             

      case 4059: return("$C=:F8O =5 @07@5H5=0 2 B5AB>2>< @568<5");                          

      case 4060: return("$C=:F8O =5 @07@5H5=0");                                            

      case 4061: return("H81:0 >B?@02:8 ?>GBK");                                           

      case 4062: return("68405BAO ?0@0<5B@ B8?0 string");                                  

      case 4063: return("68405BAO ?0@0<5B@ B8?0 integer");                                 

      case 4064: return("68405BAO ?0@0<5B@ B8?0 double");                                  

      case 4065: return(" :0G5AB25 ?0@0<5B@0 >68405BAO <0AA82");                           

      case 4066: return("0?@>H5==K5 8AB>@8G5A:85 40==K5 2 A>AB>O=88 >1=>2;5=8O");          

      case 4067: return("H81:0 ?@8 2K?>;=5=88 B>@3>2>9 >?5@0F88");                         

      case 4099: return(">=5F D09;0");                                                     

      case 4100: return("H81:0 ?@8 @01>B5 A D09;><");                                      

      case 4101: return("5?@028;L=>5 8<O D09;0");                                          

      case 4102: return("!;8H:>< <=>3> >B:@KBKE D09;>2");                                   

      case 4103: return("52>7<>6=> >B:@KBL D09;");                                         

      case 4104: return("5A>2<5AB8<K9 @568< 4>ABC?0 : D09;C");                             

      case 4105: return("8 >48= >@45@ =5 2K1@0=");                                         

      case 4106: return("58725AB=K9 A8<2>;");                                              

      case 4107: return("5?@028;L=K9 ?0@0<5B@ F5=K 4;O B>@3>2>9 DC=:F88");                 

      case 4108: return("525@=K9 =><5@ B8:5B0");                                           

      case 4109: return("">@3>2;O =5 @07@5H5=0. 5>1E>48<> 2:;NG8BL >?F8N  07@5H8BL A>25B=8:C B>@3>20BL 2 A2>9AB20E M:A?5@B0.");            

      case 4110: return(";8==K5 ?>78F88 =5 @07@5H5=K. 5>1E>48<> ?@>25@8BL A2>9AB20 M:A?5@B0.");           

      case 4111: return(">@>B:85 ?>78F88 =5 @07@5H5=K. 5>1E>48<> ?@>25@8BL A2>9AB20 M:A?5@B0.");          

      case 4200: return("1J5:B C65 ACI5AB2C5B");                                           

      case 4201: return("0?@>H5=> =58725AB=>5 A2>9AB2> >1J5:B0");                          

      case 4202: return("1J5:B =5 ACI5AB2C5B");                                            

      case 4203: return("58725AB=K9 B8? >1J5:B0");                                         

      case 4204: return("5B 8<5=8 >1J5:B0");                                               

      case 4205: return("H81:0 :>>@48=0B >1J5:B0");                                        

      case 4206: return("5 =0945=> C:070==>5 ?>4>:=>");                                    

      default:   return("H81:0 =58725AB=0 ");

   }

}

//--------------------------------------------------------------------

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---