cm ea StopOrdersTrendLine

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 ---