//+------------------------------------------------------------------+ //| SynchroChart_main3.mq4 | //| Copyright 2015, Rondo | //| http://fx-dollaryen.seesaa.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, Rondo" #property link "http://fx-dollaryen.seesaa.net/" #property version "3.0" #property strict #property indicator_chart_window #define KEY_LEFT 37 #define KEY_UP 38 #define KEY_RIGHT 39 #define KEY_DOWN 40 #define BASIC_LEFT 0 #define BASIC_RIGHT 1 string Global_variable_name1 = "synchro"; string Global_variable_name2 = "synchro_Period"; enum basic{ left = BASIC_LEFT, //左側 right = BASIC_RIGHT //右側 }; input basic basicPosition = left; //同期基準 input ENUM_BASE_CORNER conerPosition = CORNER_RIGHT_LOWER; //コーナー位置 input int xPosition = 50; //横軸 input int yPosition = 20; //縦軸 //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { if(basicPosition == BASIC_LEFT) GlobalVariableSet(Global_variable_name2, -1); if(basicPosition == BASIC_RIGHT) GlobalVariableSet(Global_variable_name2, _Period); ButtonCreate("SynchroChart_Button", xPosition, yPosition, conerPosition, "OFF"); return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { ObjectDelete("SynchroChart_Button"); GlobalVariableDel(Global_variable_name1); GlobalVariableDel(Global_variable_name2); return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { uint StartTime; if(ObjectGetInteger(0, "SynchroChart_Button", OBJPROP_STATE, true)){ if(basicPosition == BASIC_LEFT){ StartTime = (uint)Time[WindowFirstVisibleBar()]; GlobalVariableSet(Global_variable_name1, StartTime); } if(basicPosition == BASIC_RIGHT){ if(WindowFirstVisibleBar() - WindowBarsPerChart()<0) StartTime = (uint)Time[0]+Period()*60-1; else StartTime = (uint)Time[WindowFirstVisibleBar() - WindowBarsPerChart()]+Period()*60-1; GlobalVariableSet(Global_variable_name1, StartTime); } } else GlobalVariableDel(Global_variable_name1); return(0); } //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- long value; uint StartTime; if(id == CHARTEVENT_CLICK && ChartGetInteger(0, CHART_MOUSE_SCROLL, 0, value)){ if(ObjectGetInteger(0, "SynchroChart_Button", OBJPROP_STATE, true)){ if(basicPosition == BASIC_LEFT){ StartTime = (uint)Time[WindowFirstVisibleBar()]; GlobalVariableSet(Global_variable_name1, StartTime); } if(basicPosition == BASIC_RIGHT){ if(WindowFirstVisibleBar() - WindowBarsPerChart()<0) StartTime = (uint)Time[0]+Period()*60-1; else StartTime = (uint)Time[WindowFirstVisibleBar() - WindowBarsPerChart()]+Period()*60-1; GlobalVariableSet(Global_variable_name1, StartTime); } } else GlobalVariableDel(Global_variable_name1); } if(id == CHARTEVENT_KEYDOWN){ if(lparam == KEY_UP || lparam == KEY_DOWN || lparam == KEY_LEFT || lparam == KEY_RIGHT){ if(ObjectGetInteger(0, "SynchroChart_Button", OBJPROP_STATE, true)){ if(basicPosition == BASIC_LEFT){ StartTime = (uint)Time[WindowFirstVisibleBar()]; GlobalVariableSet(Global_variable_name1, StartTime); } if(basicPosition == BASIC_RIGHT){ if(WindowFirstVisibleBar() - WindowBarsPerChart()<0) StartTime = (uint)Time[0]+Period()*60-1; else StartTime = (uint)Time[WindowFirstVisibleBar() - WindowBarsPerChart()]+Period()*60-1; GlobalVariableSet(Global_variable_name1, StartTime); } } else GlobalVariableDel(Global_variable_name1); } } if(id == CHARTEVENT_OBJECT_CLICK){ if(sparam == "SynchroChart_Button"){ if(ObjectGetInteger(0, "SynchroChart_Button", OBJPROP_STATE, true)){ ObjectSetString(0, "SynchroChart_Button", OBJPROP_TEXT, "ON"); } else{ ObjectSetString(0, "SynchroChart_Button", OBJPROP_TEXT, "OFF"); GlobalVariableDel(Global_variable_name1); } } } } //+------------------------------------------------------------------+ //| Create the button | //+------------------------------------------------------------------+ void ButtonCreate(string name, int x, int y, int corner, string text){ ObjectCreate(0, name, OBJ_BUTTON, 0, 0, 0); ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y); //ObjectSetInteger(0,name,OBJPROP_XSIZE,width); //ObjectSetInteger(0,name,OBJPROP_YSIZE,height); ObjectSetInteger(0,name,OBJPROP_CORNER,corner); ObjectSetString(0,name,OBJPROP_TEXT,text); ObjectSetString(0,name,OBJPROP_FONT, "Arial"); //ObjectSetInteger(0,name,OBJPROP_FONTSIZE,font_size); //ObjectSetInteger(0,name,OBJPROP_COLOR,clr); //ObjectSetInteger(0,name,OBJPROP_BGCOLOR,back_clr); ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,clrNONE); ObjectSetInteger(0,name,OBJPROP_BACK,false); ObjectSetInteger(0,name,OBJPROP_STATE,false); ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false); ObjectSetInteger(0,name,OBJPROP_SELECTED,false); ObjectSetInteger(0,name,OBJPROP_HIDDEN,true); ObjectSetInteger(0,name,OBJPROP_ZORDER,0); }