cm_Shadow Candles

Author: Copyright © 2012-2020, cmillion@narod.ru
Profit factor:
0.00
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