A little help would be much appreciated

 

Hi, I am trying to upgrade this piece of code to turn on and off based on a keypress of numpad 4. I'm completely stuck as to where the issue is. The code does run as the comment is displayed but the boxes are not printed. Any help would be HIGHLY appreciated.

Thank you! 


#property indicator_chart_window
//+------------------------------------------------------------------------------------------------+
extern int   TimeFrame=240;
extern color UpCandle=Blue;
extern color DnCandle=Red;
extern color DojiColor=Blue;
extern int   Width=2;
extern int   CustomCandleTimeShift=2;
extern bool  BGCandle=false;
//+------------------------------------------------------------------------------------------------+
int      Nbar,OpenBar,timer,i,timerTF,name,MidBar;
double   HighPrevBar,LowPrevBar,ClosePrevBar;
double   OpenNewBar,HighNewBar,LowNewBar,CloseNewBar;
double   HighCurBar,LowCurBar,CloseCurBar;
double   priceNewSH,priceNewSL,pricePrevSH,pricePrevSL,priceCurSH,priceCurSL;
string   nameNewCandle,namePrevCandle;
string   nameNewShadowH,nameNewShadowL,namePrevShadowH,namePrevShadowL;
string   NameBar, NameHigh, NameLow;
datetime TimeOpenNewBar,TimeCloseNewBar,TimeClosePrevBar;
datetime timeNewShadow,timePrevShadow;
bool     NewBar;
bool     Showbars=false;
//+------------------------------------------------------------------------------------------------+
int init(){
   IndicatorShortName("M"+TimeFrame+" íà M"+Period());
   Nbar=TimeFrame/Period();
   timer=Period()*60;
   timerTF=TimeFrame*60;
   name=0;
   TimeOpenNewBar=Time[Bars-1];
   OpenNewBar=Open[Bars-1];
   NewBar=false;
   NameBar="Bar M"+TimeFrame+"-";
   NameHigh="High M"+TimeFrame+"-";
   NameLow="Low M"+TimeFrame+"-";
return(0);}
//+------------------------------------------------------------------------------------------------+
int deinit(){
   for(int DelOBJ=1; DelOBJ<=name; DelOBJ++){
   ObjectDelete(NameBar+DelOBJ);
   ObjectDelete(NameHigh+DelOBJ);
   ObjectDelete(NameLow+DelOBJ);}
   Comment("");
return(0);}
//+------------------------------------------------------------------------------------------------+
int start(){

if (Showbars) {
      //if(TimeFrame>1440) {Comment("\n"," TimeFrame more than D1 is not supporting!!!");return(0);}
      //if(Period()>240)   {Comment("\n"," Period more than H4 is not supporting!!!");return(0);}
      if(TimeFrame<=Period()||MathMod(TimeFrame,Period())!=0) {Comment("\n"," TimeFrame should be more or divisible by M",Period());return(0);}
   i=Bars-IndicatorCounted();
   while(i>0){i--;
   while(i>=0) if(Time[i]==TimeOpenNewBar||BarNew(i,TimeFrame)==false)i--;
                else{NewBar=true; name++; break;}
   if(i<0) i=0;
   if(NewBar==true){
   //+-----------------------------------------Previos Bar--------------------------------------------+
     OpenBar=iBarShift(0,0,TimeOpenNewBar,false);
     TimeClosePrevBar=Time[i+1];
     ClosePrevBar=Close[i+1];
     HighPrevBar=High[Highest(0,0,MODE_HIGH,OpenBar-i,i+1)];
     LowPrevBar=Low[Lowest(0,0,MODE_LOW,OpenBar-i,i+1)];
     namePrevCandle=NameBar+(name-1);
     MidBar=OpenBar-MathRound((OpenBar-i)/2);
     timePrevShadow=Time[MidBar];
     pricePrevSH=PriceShadow(OpenNewBar,ClosePrevBar,0);
     pricePrevSL=PriceShadow(OpenNewBar,ClosePrevBar,1);
     namePrevShadowH=NameHigh+(name-1);
     namePrevShadowL=NameLow+(name-1);
   //+----------------------------------Modifi Previos Bar & Shadow-----------------------------------+
   if(ObjectFind(namePrevCandle)==0){
     ObjectMove(namePrevCandle,1,TimeClosePrevBar,ClosePrevBar);
     PropBar(OpenNewBar,ClosePrevBar,namePrevCandle);
     if(OpenBar==i+1) ObjectSet(namePrevCandle,OBJPROP_WIDTH, Width*3);}
   if(ObjectFind(namePrevShadowH)==0){
     if(pricePrevSH==HighPrevBar) ObjectDelete(namePrevShadowH);
      else{ObjectMove(namePrevShadowH,0,timePrevShadow,pricePrevSH);
       ObjectMove(namePrevShadowH,1,timePrevShadow,HighPrevBar);
       ColorShadow(OpenNewBar,ClosePrevBar,namePrevShadowH);
       ObjectSetText(namePrevShadowH,"High="+DoubleToStr(HighPrevBar,Digits),7,"Tahoma");}}
   if(ObjectFind(namePrevShadowL)==0){
     if(pricePrevSL==LowPrevBar) ObjectDelete(namePrevShadowL);
      else{ObjectMove(namePrevShadowL,0,timePrevShadow,pricePrevSL);
       ObjectMove(namePrevShadowL,1,timePrevShadow,LowPrevBar);
       ColorShadow(OpenNewBar,ClosePrevBar,namePrevShadowL);
       ObjectSetText(namePrevShadowL,"Low="+DoubleToStr(LowPrevBar,Digits),7,"Tahoma");}}
   //+-------------------------------------------New Bar----------------------------------------------+
     OpenNewBar=Open[i];
     TimeOpenNewBar=Time[i];
     HighNewBar=High[i];
     LowNewBar=Low[i];
     CloseNewBar=Close[i];
     TimeCloseNewBar=Time[i]+timerTF-timer;
     nameNewCandle=NameBar+name;
     timeNewShadow=Time[i]+MathRound(Nbar/2)*timer;
     priceNewSH=PriceShadow(OpenNewBar,CloseNewBar,0);
     priceNewSL=PriceShadow(OpenNewBar,CloseNewBar,1);
     nameNewShadowH=NameHigh+name;
     nameNewShadowL=NameLow+name;
     NewBar=false;}
    else{
   //+------------------------------------------Current Bar-------------------------------------------+
     OpenBar=iBarShift(0,0,TimeOpenNewBar,false);
     CloseCurBar=Close[i];
     HighCurBar=High[Highest(0,0,MODE_HIGH,OpenBar+1,i)];
     LowCurBar=Low[Lowest(0,0,MODE_LOW,OpenBar+1,i)];
     priceCurSH=PriceShadow(OpenNewBar,CloseCurBar,0);
     priceCurSL=PriceShadow(OpenNewBar,CloseCurBar,1);}
   //+------------------------------Create New Object & Modifi Current--------------------------------+
   if(ObjectFind(nameNewCandle)!=0){
     ObjectCreate(nameNewCandle,OBJ_RECTANGLE,0,TimeOpenNewBar,OpenNewBar,TimeCloseNewBar,CloseNewBar);
     ObjectSet(nameNewCandle,OBJPROP_STYLE, STYLE_SOLID);
     PropBar(OpenNewBar,CloseNewBar,nameNewCandle);}
    else{
     ObjectMove(nameNewCandle,1,TimeCloseNewBar,CloseCurBar);       
     PropBar(OpenNewBar,CloseCurBar,nameNewCandle);}
   if(ObjectFind(nameNewShadowH)!=0){
     ObjectCreate(nameNewShadowH,OBJ_TREND,0,timeNewShadow,priceNewSH,timeNewShadow,HighNewBar);
     ObjectSet(nameNewShadowH,OBJPROP_STYLE, STYLE_SOLID);
     ObjectSet(nameNewShadowH,OBJPROP_WIDTH, Width);
     ObjectSet(nameNewShadowH,OBJPROP_RAY, false);
     ColorShadow(OpenNewBar,CloseNewBar,nameNewShadowH);}
    else{
     ObjectMove(nameNewShadowH,0,timeNewShadow,priceCurSH);
     ObjectMove(nameNewShadowH,1,timeNewShadow,HighCurBar);
     ColorShadow(OpenNewBar,CloseCurBar,nameNewShadowH);}
   if(ObjectFind(nameNewShadowL)!=0){
     ObjectCreate(nameNewShadowL,OBJ_TREND,0,timeNewShadow,priceNewSL,timeNewShadow,LowNewBar);
     ObjectSet(nameNewShadowL,OBJPROP_STYLE, STYLE_SOLID);
     ObjectSet(nameNewShadowL,OBJPROP_WIDTH, Width);
     ObjectSet(nameNewShadowL,OBJPROP_RAY, false);
     ColorShadow(OpenNewBar,CloseNewBar,nameNewShadowL);}
    else{
     ObjectMove(nameNewShadowL,0,timeNewShadow,priceCurSL);
     ObjectMove(nameNewShadowL,1,timeNewShadow,LowCurBar);
     ColorShadow(OpenNewBar,CloseCurBar,nameNewShadowL);}}
   //+-------------------------------------Comment OHLC-----------------------------------------------+
   Comment(Symbol(),",M",TimeFrame,"   O=",OpenNewBar,",  H=",HighCurBar,
                                   ",  L=",LowCurBar,",  C=",CloseCurBar,"\n");
   return(0);
}

if (!Showbars) {
   for(int DelOBJ=1; DelOBJ<=name; DelOBJ++){
   ObjectDelete(NameBar+DelOBJ);
   ObjectDelete(NameHigh+DelOBJ);
   ObjectDelete(NameLow+DelOBJ);}
   Comment("");
}
return(0);
}
//+---------------------------------------------------------------------------------------
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam) {

   if(id==CHARTEVENT_KEYDOWN) {
   
      switch(int(lparam)) { 
          
         case 100: { //This is Numeric 4 Used to Show the Lines
            if (Showbars) Showbars=false; else Showbars=true;
         }

      }
   }
}
//+---------------------Main Function "New Bar or Old Bar"-----------------------------------------+
bool BarNew (int j, int tmf)
{
//MathFloor(TimeDayOfYear(Time[j+CustomCandleTimeShift])/7)*10080
   int t0=MathFloor(TimeDayOfYear(Time[j+CustomCandleTimeShift])/7)*10080+1440*(TimeDayOfWeek(Time[j+CustomCandleTimeShift])-1)+60*TimeHour(Time[j+CustomCandleTimeShift])+TimeMinute(Time[j+CustomCandleTimeShift]),
       t1=MathFloor(TimeDayOfYear(Time[j+1+CustomCandleTimeShift])/7)*10080+1440*(TimeDayOfWeek(Time[j+1+CustomCandleTimeShift])-1)+60*TimeHour(Time[j+1+CustomCandleTimeShift])+TimeMinute(Time[j+1+CustomCandleTimeShift]);
      Print( t0, " ", t1);
   if(MathMod(t0,tmf)-MathMod(t1,tmf)==t0-t1) return(false);
   else return(true);
}
//+---------------------Function "Price Shadow"----------------------------------------------------+
double PriceShadow (double OpnB, double ClsB, int swt)
{double prH, prL;
if(OpnB<ClsB){prH=ClsB; prL=OpnB;}
if(OpnB>ClsB){prH=OpnB; prL=ClsB;}
if(OpnB==ClsB){prH=ClsB; prL=ClsB;}
switch(swt){case 0:return(prH);break;
case 1:return(prL);break;}}
//+---------------------Function "Properti Bars"---------------------------------------------------+
void PropBar (double OpPr, double ClPr, string NmOBJ)
{string Cl=" Close="+DoubleToStr(ClPr,Digits);
string Op=" Open="+DoubleToStr(OpPr,Digits);
if(OpPr==ClPr){ObjectSet(NmOBJ,OBJPROP_BACK, false);
ObjectSet(NmOBJ,OBJPROP_COLOR,DojiColor);
ObjectSetText(NmOBJ,"Doji "+Op+Cl,7,"Tahoma");}
if(OpPr<ClPr){ObjectSet(NmOBJ,OBJPROP_COLOR,UpCandle);
ObjectSet(NmOBJ,OBJPROP_BACK, BGCandle);
ObjectSetText(NmOBJ,"UpBar "+Op+Cl,7,"Tahoma");}
if (OpPr>ClPr){ObjectSet(NmOBJ,OBJPROP_COLOR,DnCandle);
ObjectSet(NmOBJ,OBJPROP_BACK, BGCandle);
ObjectSetText(NmOBJ,"DnBar "+Op+Cl,7,"Tahoma");}
ObjectSet(NmOBJ,OBJPROP_WIDTH, Width);}
//+----------------------Function "Color Shadow"---------------------------------------------------+
void ColorShadow (double OP, double CP, string NOBJ)
{if(OP==CP)ObjectSet(NOBJ,OBJPROP_COLOR,DojiColor);
if(OP<CP)ObjectSet(NOBJ,OBJPROP_COLOR,UpCandle);
if (OP>CP)ObjectSet(NOBJ,OBJPROP_COLOR,DnCandle);}
//+----------------------------------------------END-----------------------------------------------+
 
vish4al:

Hi, I am trying to upgrade this piece of code to turn on and off based on a keypress of numpad 4. I'm completely stuck as to where the issue is. The code does run as the comment is displayed but the boxes are not printed. Any help would be HIGHLY appreciated.

Thank you! 


Just use the debugger (with hist. prices) to check why the "boxes are not printed". It is provided for such problems.