Miscellaneous
2
Views
0
Downloads
0
Favorites
JPN_Time_SubZero
#property copyright "ver.2.4"
#property link "http://d.hatena.ne.jp/fai_fx/"
//ì¬æÊÆobt@Ìwè
#property indicator_separate_window
#property indicator_minimum -1
#property indicator_maximum 2
//úÝèÏ
// ©ªÌftHgÝèÉí¹ÄJX^}CY·é̪æ¢B
extern int TimeInterval = 12;
extern bool UseLocalPCTime = true;
//UseLocalPCTimeªtrue ÌÍAºÌTime_difference@ðgíÈ¢ÌÅÓ
extern int Time_difference = 9;
extern bool Grid = true;
extern bool YEAR = false;
extern bool MONTH = false;
extern bool DAY = false;
extern bool HOUR = true;
extern bool Zero_H = false;
extern bool MINUTE = false;
extern bool SECOND = false;
extern bool ARROW = false;
extern bool NewLine= false;
extern color GridColor = LightSlateGray;//C'32,32,32';
extern int FontSize = 8;
extern color TextColor = White;
extern bool UseColorGrid= false;
extern bool Use12Hour= false;
string WinName=" ";//Xy[X2¶
int DefPeri;
//ú»
int init(){
IndicatorShortName(WinName);
IndicatorDigits(0);
SetIndexLabel(0,NULL);
if(DefPeri != Period()){
DefPeri = Period();
DeleteTimeObject();
}
if(!YEAR && !MONTH && !DAY) NewLine = false;
return(0);
}
//I¹@Ô\¦ðí
int deinit(){
DeleteTimeObject();
return(0);
}
int start(){
if(Bars < 50 ) return(0);
if(Volume[0] < 2 ) return(0);
int limit=Bars-IndicatorCounted()-1;
if(limit < WindowBarsPerChart() ) limit = WindowBarsPerChart();
static datetime PreBarsTime = 0;
static datetime StandardTime = 0;
//[JÔo
if(UseLocalPCTime){
int Time_difference0 = (TimeLocal()-TimeCurrent()+15*60)/3600;
if(Time_difference != Time_difference0){
PreBarsTime = Time[Bars-1];
DeleteTimeObject();
StandardTime = 0;
}
if(Time_difference0 > 10){
static int checkcount = 0;
checkcount++;
if(checkcount>10){
UseLocalPCTime = false;
Alert(Symbol(),Period()," Can't detect LocalTime difference\n Now use Time_difference = ",Time_difference);
}
}else{
Time_difference = Time_difference0;
//Print("Time_difference =",Time_difference);
}
}
//XN[obNµ½çAìè¼·
if(PreBarsTime != Time[Bars-1]){
PreBarsTime = Time[Bars-1];
DeleteTimeObject();
StandardTime = 0;
}
//îÔÌJnðßé
if(StandardTime == 0){
for(int j=Bars-1; j>=0; j--){
if(TimeMinute(Time[j])==0 && TimeHour(Time[j]+Time_difference * 3600)==0){
StandardTime = Time[j]-24*60*60;//JnÍAPúO©çB
break;
}
}
}
datetime Period_Interval = DefPeri * 60 * TimeInterval;
//Chart repaint Éõ¦Ä10{O©çâè¼¹éæ¤ÉB
StandardTime = StandardTime - 10 * Period_Interval;
for(int i=limit; i>=0; i--){
//îÔÉêvµ½çì¬
if(StandardTime == Time[i] ){
SetTimeText(Time[i],Time_difference);
}
//ÌîÔðÝè·é
while(StandardTime <= Time[i]) StandardTime = StandardTime + Period_Interval;
}
return(0);
}
void SetTimeText(datetime settime,int Time_difference){
//ú{Ô̶¬
datetime JPNT = settime + Time_difference * 3600;
//út¶ñÌì¬
string Y="";
string M="";
string D="";
string JPND,JPNM;
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(!Zero_H) h=TimeHour(JPNT);
}
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);
string tm = TimeToStr(settime,TIME_DATE|TIME_SECONDS);
//¯¶IuWFNgª¶ÝµÈ¯êÎì¬
if(ObjectFind(StringConcatenate("JPNTZ_",tm)) == -1){
MakeTimeObject(StringConcatenate("JPNTZ_Arrow",tm),
StringConcatenate("JPNTZ_",tm),
StringConcatenate("JPNTZ_Text",tm,"_2"),StringConcatenate("JPNTZ_Grid_",tm),JPND,JPNM,settime);
}
}
void MakeTimeObject(string ArrowName,string TimeTextName1,string TimeTextName2,string GridName,string DATE,string TIME,datetime settime){
int DefWin=WindowFind(WinName);
int Pos=2;
//îóÌì¬
if(ARROW){
ObjectCreate(ArrowName, OBJ_ARROW,DefWin,settime, Pos);
Pos--;
ObjectSet(ArrowName,OBJPROP_ARROWCODE,241);
ObjectSet(ArrowName,OBJPROP_COLOR,TextColor);
}
if(NewLine){
//2sÅ\¦
//útÌì¬
ObjectCreate(TimeTextName1, OBJ_TEXT,DefWin,settime, Pos);
Pos--;
ObjectSetText(TimeTextName1, DATE, FontSize, "Arial", TextColor);
//ÔÌì¬
ObjectCreate(TimeTextName2, OBJ_TEXT,DefWin,settime, Pos);
//Pos--;
ObjectSetText(TimeTextName2, TIME, FontSize, "Arial", TextColor);
}else{
//1sÅ\¦
if(!ObjectCreate(TimeTextName1, OBJ_TEXT,DefWin,settime, Pos))
{
Print("error: can't create OBJ_TEXT! code #",GetLastError());
return(0);
}
//Pos--;
if(YEAR || MONTH || DAY){
if(HOUR || MINUTE || SECOND){
ObjectSetText(TimeTextName1, StringConcatenate(DATE,"_",TIME), FontSize, "Arial", TextColor);
}else{
ObjectSetText(TimeTextName1, DATE, FontSize, "Arial", TextColor);
}
}else if(HOUR || MINUTE || SECOND){
//ObjectSetText(TimeTextName1, TIME, FontSize, "Arial", TextColor);
color MyTextColor = TextColor;
if(StrToInteger(TIME)>12 && Use12Hour){
MyTextColor = DeepSkyBlue;
TIME = StrToInteger(TIME)-12;
}
ObjectSetText(TimeTextName1, TIME, FontSize, "Arial", MyTextColor);
}
}
//ObhÌì¬
if(Grid){
int hr = TimeHour(settime+Time_difference * 3600);
color MyGridColor = GridColor;
// ÁèÌCÉFï·éÈçȺðKÉ«·¦é
if(UseColorGrid){
if(hr == 16) MyGridColor = IndianRed;
if(hr == 21 || hr == 0 || hr == 4) MyGridColor = SteelBlue;
}
ObjectCreate(GridName,OBJ_TREND, 0, settime,0,settime,0.1);
ObjectSet(GridName,OBJPROP_COLOR,MyGridColor);
ObjectSet(GridName, OBJPROP_STYLE, STYLE_DOT);
ObjectSet(GridName, OBJPROP_BACK,true);
}
WindowRedraw();
}
void DeleteTimeObject(){
//\bh©ç·×ÄÌIuWFNgðæ¾µÄí
for(int i=ObjectsTotal();i>=0;i--){
string ObjName=ObjectName(i);
if(StringSubstr(ObjName,0,5) == "JPNTZ"){
ObjectDelete(ObjName);
}
}
}
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---