cm_Shadow Candles

Author: Copyright © 2012-2020, cmillion@narod.ru
Price Data Components
Series array that contains open prices of each barSeries array that contains close prices for each barSeries array that contains the highest prices of each barSeries array that contains the lowest prices of each barSeries array that contains open time of each bar
Orders Execution
Checks for the total of open ordersIt can change open orders parameters, due to possible stepping strategyIt automatically opens orders when conditions are reached
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
cm_Shadow Candles
ÿþ//+------------------------------------------------------------------+

//|                                                cm_B5=8 A25G8.mq4 |

//|    4;8=0 A25G8 50, B5=L A=87C 30, AB028< 109AB>? =04 A25G59 10 ? |

//|                              Copyright © 2012, Khlystov Vladimir |

//|                                         http://cmillion.narod.ru |

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

#property copyright "Copyright © 2012-2020, cmillion@narod.ru"

#property link      "http://cmillion.ru"

#property strict

#property description "!>25B=8: >B:@K205B >B;>65==K5 >@45@0 ?@8 ?>O2;5=88 A25G8 B8?0 <>;>B (A 1>;LH>9 B5=LN)."

#property description "SL A>25B=8: AB028B 70 B5=L =0 @0AAB>O=88 SL ?C=:B>2 >B =53>. TP @025= @07<5@C B5=8 <8=CA TP"

#property description ">? DC=:F88: B@0;, 157C1KB>:, D8;LB@ ?> 2@5<5=8"

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

extern string  ver="cm_Shadow Candles 2.0";

input ENUM_TIMEFRAMES TIMEFRAMES = 0;

extern int     candllevel           = 50;     // 07<5@ A25G8 =5 <5=55

extern int     candllshadow         = 180;    //B5=L A25G8 % >B B5;0 A25G8 (=5 <5=55)

extern int     Step                 = 0;      //@0AAB>O=85 >B A25G8 4> >B;>65==>3> >@45@0

extern int     BarLife              = 3;      //=0 ?@>BO65=88 :0:>3> G8A;0 A25G59 6825B >B;>65==K9 >@45@

extern int     StopLoss             = 20,     //SL ?> Low/High +- pips

               TakeProfit           = 0;      //TP ?> B5=8 - pips

extern int     TrailingStop         = 0;      //4;8=0 B@0;;0, 5A;8 0 B> =5B B@0;;0

extern int     TrailingStart        = 0;      //:>340 2:;NG0BL B@0;, =0?@8<5@ ?>A;5 4>AB865=8O 40 ? ?@81K;

extern int     TrailingStep            = 0;      //H03 B@0;;0 - ?5@5<5I0BL AB>?;>AA =5 1;865 G5< TrailingStep

extern int     NoLoss               = 0,      //?5@52>4 2 157C1KB>: ?@8 7040==>< :>;-25 ?C=:B>2 ?@81K;8, 5A;8 0 B> =5B ?5@52>40 2 157C1KB>:

               MinProfitNoLoss      = 10;     //<8=8<0;L=0O ?@81K;L ?@8 ?5@52>45 2157C1KB>:

extern int     MaxOrders            = 5;      //<0:A8<0;L=>5 :>;-2> >4=>=0?@02;5==KE >@45@>2 2 @K=:5

extern int     Magic                = 0;      //<038:

extern double  Lot                  = 0.0;

extern double  RiskPercent          = 5;          //?@>F5=B >B 10;0=A0 4;O @0AG5B0 ;>B0

extern int     slippage             = 30;     //0:A8<0;L=> 4>?CAB8<>5 >B:;>=5=85 F5=K 4;O @K=>G=KE >@45@>2

extern int     TimeStart            = 0 ,     //>3@0=8G5=85 2@5<5=8 @01>BK A>25B=8:0

               TimeEnd              = 24;     //=5 >B:@K205< >@45@0 8 70:@K205< >B;>6:8 5A;8 2@5<O =5 <564C TimeStart 8 TimeEnd

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

 int     DigitsLot            = 2;           //:>;-2> 7=0:>2 ?>A;5 70?OB>9 2 @07<5@5 ;>B0 (2 - 0,01) (1 - 0,1)

int  STOPLEVEL;

double PriceDeleteB,PriceDeleteS;

datetime TimeOpen;

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

double MINLOT,MAXLOT;

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

int OnInit()

{ 

   MINLOT = MarketInfo(Symbol(),MODE_MINLOT);

   MAXLOT = MarketInfo(Symbol(),MODE_MAXLOT);

   if (Digits==3 || Digits==5)

   {

      Step*=10;

      StopLoss*=10;

      TakeProfit*=10;

      TrailingStop*=10;

      TrailingStart*=10;

      TrailingStep*=10;

      NoLoss*=10;

      MinProfitNoLoss*=10;

   }

   return(INIT_SUCCEEDED);

}

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

void OnTick()

{

   if (!IsTradeAllowed()) 

   {

      Comment("">@3>2;O 70?@5I5=0 IsTradeAllowed",12,"Arial",Crimson);

      return;

   }

   //---

   int TekHour = Hour();

   bool Trade;

   if ( TimeStart < TimeEnd && TekHour >= TimeStart && TekHour < TimeEnd ) Trade=true; 

   else 

   {

      if ( TimeStart > TimeEnd && (TekHour >= TimeStart || TekHour < TimeEnd)) Trade=true; //B>@3>2;O =>GLN

      else Trade=false;

   }

   if (!Trade)

   {

      Comment("">@3>2;O 70?@5I5=0 ?> 2@5<5=8 ");

   }

   else Comment(ver);

   //---

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

   double OSL,StLo,PriceB=0,PriceS=0,OOP,SL;

   int b=0,s=0,TicketB=0,TicketS=0,OT;

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

   {    

      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

      {

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

         { 

            OT = OrderType(); 

            OSL = NormalizeDouble(OrderStopLoss(),Digits);

            OOP = NormalizeDouble(OrderOpenPrice(),Digits);

            SL=OSL;

            if (OT==OP_BUY)             

            {  

               b++;

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

               {

                  StLo = NormalizeDouble(OOP+MinProfitNoLoss*Point,Digits); 

                  if (StLo > OSL && StLo <= NormalizeDouble(Bid - NoLoss * Point,Digits)) SL = StLo;

               }

               

               if (TrailingStop>STOPLEVEL && TrailingStop!=0 && (Bid - OOP)/Point >= TrailingStart)

               {

                  StLo = NormalizeDouble(Bid - TrailingStop*Point,Digits); 

                  if (StLo>=OOP && StLo > OSL+TrailingStep*Point) SL = StLo;

               }

               

               if (SL > OSL)

               {  

                  if (!OrderModify(OrderTicket(),OOP,SL,OrderTakeProfit(),0,White)) Print("Error ",GetLastError(),"   Order Modify Buy   SL ",OSL,"->",SL);

                  else Print("Order Buy Modify   SL ",OSL,"->",SL);

               }

            }                                         

            if (OT==OP_SELL)        

            {

               s++;

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

               {

                  StLo = NormalizeDouble(OOP-MinProfitNoLoss*Point,Digits); 

                  if ((StLo < OSL || OSL==0) && StLo >= NormalizeDouble(Ask + NoLoss * Point,Digits)) SL = StLo;

               }

               

               if (TrailingStop>STOPLEVEL && TrailingStop!=0 && (OOP - Ask)/Point >= TrailingStart)

               {

                  StLo = NormalizeDouble(Ask + TrailingStop*Point,Digits); 

                  if (StLo<=OOP && (StLo < OSL-TrailingStep*Point || OSL==0)) SL = StLo;

               }

               

               if ((SL < OSL || OSL==0) && SL!=0)

               {  

                  if (!OrderModify(OrderTicket(),OOP,SL,OrderTakeProfit(),0,White)) Print("Error ",GetLastError(),"   Order Modify Sell   SL ",OSL,"->",SL);

                  else Print("Order Sell Modify   SL ",OSL,"->",SL);

               }

            } 

            if (OT==OP_BUYSTOP)  {PriceB=OOP; TicketB=OrderTicket();}     

            if (OT==OP_SELLSTOP) {PriceS=OOP; TicketS=OrderTicket();}  

         }

      }

   }

   bool err;

   if (!Trade)

   {

      if (b+s==0) 

      {

         if (TicketS>0) err=OrderDelete(TicketS);

         if (TicketB>0) err=OrderDelete(TicketB);

         return;

      }

   }

   

   double Price;

   double body = MathAbs(iOpen(NULL,TIMEFRAMES,1)-iClose(NULL,TIMEFRAMES,1))/Point;

   double shadowUp = (iHigh(NULL,TIMEFRAMES,1)-iOpen(NULL,TIMEFRAMES,1))/Point;

   double shadowDn = (iOpen(NULL,TIMEFRAMES,1)-iLow(NULL,TIMEFRAMES,1))/Point;

   double StopLevel = STOPLEVEL*Point+Point;

   

   int S=0;

   if ((iHigh(NULL,TIMEFRAMES,1)-iLow(NULL,TIMEFRAMES,1))/Point>=candllevel)

   {

      if (iOpen(NULL,TIMEFRAMES,1)<iClose(NULL,TIMEFRAMES,1) && shadowDn>=body/100*candllshadow && shadowDn>shadowUp) {S= 1;Candle(Blue);}

      if (iOpen(NULL,TIMEFRAMES,1)>iClose(NULL,TIMEFRAMES,1) && shadowUp>=body/100*candllshadow && shadowDn<shadowUp) {S=-1;Candle(Red);}

   }

   

   if (PriceDeleteB>Bid && PriceDeleteB!=0) 

   {

      if (TicketB>0) {err=OrderDelete(TicketB);PriceDeleteB=0;return;}

   }

   double TP;

   if (TicketB==0 && S==1 && TimeOpen!=iTime(NULL,TIMEFRAMES,0))

   {

      if (TicketS>0) err=OrderDelete(TicketS);

      Price = NormalizeDouble(iHigh(NULL,TIMEFRAMES,1)+Step * Point,Digits);

      if (Price<NormalizeDouble(Ask+StopLevel,Digits)) Price=NormalizeDouble(Ask+StopLevel,Digits);

      SL = NormalizeDouble(iLow(NULL,TIMEFRAMES,1) - StopLoss * Point,Digits);

      if (SL>NormalizeDouble(Price-StopLevel,Digits)) SL=NormalizeDouble(Price-StopLevel,Digits);

      TP = NormalizeDouble(Price + (shadowDn-TakeProfit) * Point,Digits);

      if (TP<NormalizeDouble(Price+StopLevel,Digits)) TP=NormalizeDouble(Price+StopLevel,Digits);

      if (SendOrder(OP_BUYSTOP,LOT(),Price,SL,TP,TimeCurrent()+Period()*60*BarLife)) TimeOpen=iTime(NULL,TIMEFRAMES,0);

   }

   if (PriceDeleteS<Bid && PriceDeleteS!=0) 

   {

      if (TicketS>0) {err=OrderDelete(TicketS);PriceDeleteS=0;return;}

   }



   if (TicketS==0 && S==-1 && TimeOpen!=iTime(NULL,TIMEFRAMES,0))

   {

      if (TicketB>0) err=OrderDelete(TicketB);

      Price = NormalizeDouble(iLow(NULL,TIMEFRAMES,1) - Step * Point,Digits);

      if (Price>NormalizeDouble(Bid-StopLevel,Digits)) Price=NormalizeDouble(Bid-StopLevel,Digits);

      SL = NormalizeDouble(iHigh(NULL,TIMEFRAMES,1) + StopLoss * Point,Digits);

      if (SL<NormalizeDouble(Price+StopLevel,Digits)) SL=NormalizeDouble(Price+StopLevel,Digits);

      TP = NormalizeDouble(Price - (shadowUp-TakeProfit) * Point,Digits);

      if (TP>NormalizeDouble(Price-StopLevel,Digits)) TP=NormalizeDouble(Price-StopLevel,Digits);

      if (SendOrder(OP_SELLSTOP,LOT(),Price,SL,TP,TimeCurrent()+Period()*60*BarLife)) TimeOpen=iTime(NULL,TIMEFRAMES,0);

   }

}

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

bool SendOrder(int tip, double lots, double price, double sl=0, double tp=0,datetime t=0)

{

   if(!IsNewOrderAllowed()) return(false);

   lots=CheckVolumeValue(lots);

   if(lots>MAXLOT) lots = MAXLOT;

   if(lots<MINLOT) lots = MINLOT;

   int tipe;

   if (tip==OP_BUY || tip==OP_BUYSTOP || tip==OP_BUYLIMIT) tipe=OP_BUY;

   else tipe=OP_SELL;

   if (AccountFreeMarginCheck(Symbol(),tipe,lots)<0)

   {

      Alert("54>AB0B>G=> A@54AB2");

      return(false);

   }

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

   {    

      if (OrderSend(Symbol(),tip, lots,price,slippage,sl,tp,NULL,Magic,t,clrNONE)!=-1) return(true);

         Alert(" ?>?KB:0 ",i," H81:0 >B:@KB8O >@45@0 ",Strtip(tip)," <<",Error(GetLastError()),">>  lot=",lots,"  pr=",price," sl=",sl," tp=",tp);

      Sleep(500);

      RefreshRates();

      if (IsStopped()) return(false);

   }

   return(false);

}

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

string Strtip(int tip)

{

   switch(tip) 

   { 

   case OP_BUY:      return("BUY"); 

   case OP_SELL:     return("SELL"); 

   case OP_BUYSTOP:  return("BUYSTOP"); 

   case OP_SELLSTOP: return("SELLSTOP"); 

   case OP_BUYLIMIT: return("BUYLIMIT"); 

   case OP_SELLLIMIT:return("SELLLIMIT"); 

   }

   return("error"); 

}

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

void Candle(color C)

{

   string NameLine=StringConcatenate("cndl ",TimeToStr(iTime(NULL,TIMEFRAMES,1),TIME_DATE|TIME_MINUTES));



   ObjectDelete(NameLine);

   ObjectCreate(NameLine,OBJ_TREND,0,iTime(NULL,TIMEFRAMES,1),iLow(NULL,TIMEFRAMES,1),iTime(NULL,TIMEFRAMES,1),iHigh(NULL,TIMEFRAMES,1));

   ObjectSet(NameLine, OBJPROP_COLOR,C); 

   ObjectSet(NameLine, OBJPROP_STYLE, 0);

   ObjectSet(NameLine, OBJPROP_WIDTH, 1);

   ObjectSet(NameLine, OBJPROP_RAY,   false);

   

   NameLine=StringConcatenate(NameLine," B5;>");



   ObjectDelete(NameLine);

   ObjectCreate(NameLine,OBJ_TREND,0,iTime(NULL,TIMEFRAMES,1),iOpen(NULL,TIMEFRAMES,1),iTime(NULL,TIMEFRAMES,1),iClose(NULL,TIMEFRAMES,1));

   ObjectSet(NameLine, OBJPROP_COLOR,C); 

   ObjectSet(NameLine, OBJPROP_STYLE, 0);

   ObjectSet(NameLine, OBJPROP_WIDTH, 5);

   ObjectSet(NameLine, OBJPROP_RAY,   false);

}

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

double LOT()

{

   if (Lot!=0) return(Lot);

   double LOT = NormalizeDouble(AccountBalance()*RiskPercent/100/MarketInfo(Symbol(),MODE_MARGINREQUIRED),DigitsLot);

   if (LOT>MAXLOT) LOT = MAXLOT;

   if (LOT<MINLOT) LOT = MINLOT;

   return(LOT);

}

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

void OnDeinit(const int reason)

{

   if (!IsTesting()) ObjectsDeleteAll(0,"cndl");

   Comment("");

}

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

bool IsNewOrderAllowed()

{

   int max_allowed_orders=(int)AccountInfoInteger(ACCOUNT_LIMIT_ORDERS);

   if(max_allowed_orders==0) return(true);

   if(OrdersTotal()<max_allowed_orders) return(true);

   return(false);

}

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

double CheckVolumeValue(double volume)

{

   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);

   if(volume<min_volume) return(min_volume);

   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);

   if(volume>max_volume) return(max_volume);

   double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);//--- 3@040F8O >1J5<0

   int ratio=(int)MathRound(volume/volume_step);

   if(MathAbs(ratio*volume_step-volume)>0.0000001) return(ratio*volume_step);

   return(volume);

}

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

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