JPN_Time_Sub





//ì¬æÊÆobt@Ìwè
#property indicator_separate_window
#property indicator_minimum -1
#property indicator_maximum 2

//úÝèÏ
extern bool Grid = false;
extern bool YEAR = false;
extern bool MONTH = true;
extern bool DAY = true;
extern bool HOUR = true;
extern bool MINUTE = true;
extern bool SECOND = false;
extern bool ARROW = false;
extern bool NewLine = false;
extern color GridColor = LightSlateGray;
extern int Time_difference = 7;
extern int FontSize = 8;
extern int TimeInterval = 12;
extern color TextColor = White;

string ObjArray[300000];
datetime JPNT,StandardTime;
//string JPND,JPNM,WinName="JPN_Time_Sub";
string JPND,JPNM,WinName=" ";
int DefPeri,DefWin,ObjTotal;

//ú»
int init(){
   IndicatorShortName(" ");
   if(DefPeri != Period()){
      DefPeri = Period();
      DeleteTimeObject();
   }

   return(0);
}


//I¹@Ô\¦ðí
int deinit(){
   DeleteTimeObject();
   return(0);
}


int start(){

   int limit=Bars-IndicatorCounted();

   for(int i=limit; i>=0; i--){

      //îÔ𴦽çì¬
      if(StandardTime <= Time[i]){
         //ú{Ô̶¬
         JPNT = Time[i] + Time_difference * 3600;
         SetTimeText(Time[i]);
  
         //ÌîÔðÝè·é
         datetime Period_Interval=DefPeri * 60 * TimeInterval;
         for(StandardTime = Time[i] + Period_Interval;(TimeDayOfWeek(StandardTime) == 0 || TimeDayOfWeek(StandardTime) == 6) && DefPeri < PERIOD_H1;StandardTime += Period_Interval){}
      }
   }
   return(0);

}

void SetTimeText(datetime settime){
   //út¶ñÌì¬
   string Y="";
   string M="";
   string D="";
  
   JPND = StringSubstr(TimeToStr(JPNT, TIME_DATE),2);
  
   if(YEAR){
      Y=StringSubstr(JPND,0,2);
   }
   if(MONTH){
      if(YEAR){
         Y=StringConcatenate(Y,".");
      }
      M=StringSubstr(JPND,3,2);
   }
   if(DAY){
      if(YEAR || MONTH){
         M=StringConcatenate(M,".");
      }
      D=StringSubstr(JPND,6,2);
   }
   JPND=StringConcatenate(Y,M,D);
 

   //Ô¶ñÌì¬
   string h="";
   string m="";
   string s="";

   JPNM = TimeToStr(JPNT, TIME_SECONDS);
   if(HOUR){
      h=StringSubstr(JPNM,0,2);
   }
   if(MINUTE){
      if(HOUR){
         h=StringConcatenate(h,":");
      }
      m=StringSubstr(JPNM,3,2);
   }
   if(SECOND){
      if(HOUR || MINUTE){
         m=StringConcatenate(m,":");
      }
      s=StringSubstr(JPNM,6,2);
   }
   JPNM=StringConcatenate(h,m,s);

   //¯¶IuWFNgª¶ÝµÈ¯êÎì¬
   if(ObjectFind(StringConcatenate("JPNTS_Arrow",JPND,"_",JPNM)) == -1){
      MakeTimeObject(StringConcatenate("JPNTS_Arrow",JPND,"_",JPNM),StringConcatenate("JPNTS_Text",JPND,"_",JPNM,"_1"),StringConcatenate("JPNTS_Text",JPND,"_",JPNM,"_2"),StringConcatenate("JPNTS_GridJPN",JPND,"_",JPNM),JPND,JPNM,settime);
   }
}

void MakeTimeObject(string ArrowName,string TimeTextName1,string TimeTextName2,string GridName,string DATE,string TIME,datetime settime){
   DefWin=WindowFind(WinName);//OÌ×
   int Pos=2;

   //îóÌì¬
   if(ARROW){
      ObjArray[ObjTotal]=ArrowName;
      ObjTotal++;
      ObjectCreate(ArrowName, OBJ_ARROW,DefWin,settime, Pos);
      Pos--;
      ObjectSet(ArrowName,OBJPROP_ARROWCODE,241);
      ObjectSet(ArrowName,OBJPROP_COLOR,TextColor);

   }
   
   if(NewLine){
      //2sÅ\¦
      //útÌì¬
      ObjArray[ObjTotal]=TimeTextName1;
      ObjTotal++;
      ObjectCreate(TimeTextName1, OBJ_TEXT,DefWin,settime, Pos);
      Pos--;
      ObjectSetText(TimeTextName1, DATE, FontSize, "Arial", TextColor);

   
      //ÔÌì¬
      ObjArray[ObjTotal]=TimeTextName2;
      ObjTotal++;
      ObjectCreate(TimeTextName2, OBJ_TEXT,DefWin,settime, Pos);
      Pos--;
      ObjectSetText(TimeTextName2, TIME, FontSize, "Arial", TextColor);

   }else{
      //1sÅ\¦
      ObjArray[ObjTotal]=StringConcatenate(TimeTextName1,"_",TimeTextName2);

      ObjectCreate(ObjArray[ObjTotal], OBJ_TEXT,DefWin,settime, Pos);
      Pos--;
      if(YEAR || MONTH || DAY){
         if(HOUR || MINUTE || SECOND){
            ObjectSetText(ObjArray[ObjTotal], StringConcatenate(DATE,"_",TIME), FontSize, "Arial", TextColor);
         }else{
            ObjectSetText(ObjArray[ObjTotal], DATE, FontSize, "Arial", TextColor);
         }
      }else if(HOUR || MINUTE || SECOND){
            ObjectSetText(ObjArray[ObjTotal], TIME, FontSize, "Arial", TextColor);
      }
      ObjTotal++;
   }
   //ObhÌì¬
   if(Grid){
      ObjArray[ObjTotal]=GridName;
      ObjTotal++;
      ObjectCreate(GridName,OBJ_TREND, 0, settime,0,settime,WindowPriceMax(0));
      ObjectSet(GridName,OBJPROP_COLOR,GridColor);
      ObjectSet(GridName, OBJPROP_STYLE, STYLE_DOT);
   }
   ObjectsRedraw();

}

void DeleteTimeObject(){
   DefWin=WindowFind(WinName);

   //zñÉi[µ½¼OÅí   
   for(int i = 0 ; i < ObjTotal ;i++){
      if(ObjArray[i] != ""){
         ObjectDelete(ObjArray[i]);
         ObjArray[i]="";
      }
   }
   
   //\bh©ç·×ÄÌIuWFNgðæ¾µÄí
   ObjTotal=ObjectsTotal();
   for(i=ObjTotal;i>=0;i--){
      string ObjName=ObjectName(i);
      if(StringSubstr(ObjName,0,5) == "JPNTS"){
         ObjectDelete(ObjName);
      }
   }
  
   
   ObjTotal=0;
}










Sample





Analysis



Market Information Used:

Series array that contains open time of each bar


Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: