显示时间_源代码

| 发表于 2020-7-21 07:50:03 | 显示全部楼层 |复制链接
  1. #property version   "1.00"
  2. #property strict
  3. #property indicator_chart_window
  4. input string            strOBJ_string     = "ShowTime_";
  5. input int               intOBJ_ShowWindow = 0;
  6. input ENUM_BASE_CORNER  intOBJ_ShowCorner = 1;
  7. double Show_SPREAD=0;
  8. string Show_String="";
  9. //+------------------------------------------------------------------+
  10. //| Custom indicator initialization function                         |
  11. //+------------------------------------------------------------------+
  12. int OnInit()
  13.   {
  14. //--- indicator buffers mapping
  15.    EventSetTimer(1);   
  16.    DeleteTimeObject(strOBJ_string, StringLen(strOBJ_string));  
  17. //---
  18.    return(INIT_SUCCEEDED);
  19.   }
  20.   
  21.   
  22.   
  23. //+------------------------------------------------------------------+
  24. //| Custom indicator deinitialization function                         |
  25. //+------------------------------------------------------------------+
  26. int deinit()
  27.   {
  28. //----
  29.    EventKillTimer();
  30.    DeleteTimeObject(strOBJ_string, StringLen(strOBJ_string));  
  31. //----
  32.    return(0);
  33.   }  
  34.   
  35.   
  36.   
  37. //+------------------------------------------------------------------+
  38. //| Custom indicator iteration function                              |
  39. //+------------------------------------------------------------------+
  40. int OnCalculate(const int rates_total,
  41.                 const int prev_calculated,
  42.                 const datetime &time[],
  43.                 const double &open[],
  44.                 const double &high[],
  45.                 const double &low[],
  46.                 const double &close[],
  47.                 const long &tick_volume[],
  48.                 const long &volume[],
  49.                 const int &spread[])
  50.   {
  51. //---  
  52.    int TF_Remaining_Total_Second = (int)iTime(NULL, 240, 0) + 60 * 240 - (int)TimeCurrent();      //
  53.    int TF_Remaining_Total_Minute = (int)MathFloor(TF_Remaining_Total_Second / 60);                //
  54.    int TF_Remaining_Hour         = (int)MathFloor(MathFloor(TF_Remaining_Total_Second / 60) /60); //
  55.    int TF_Remaining_Minute       = (int)MathMod(TF_Remaining_Total_Minute,60);                    //
  56.    int TF_Remaining_Second       = TF_Remaining_Total_Second - 60 * TF_Remaining_Total_Minute;    //
  57.   
  58.    string ShowHour=IntegerToString(TF_Remaining_Hour,0);       //
  59.    string ShowMinute= IDNumberToString(TF_Remaining_Minute,2); //
  60.    string ShowSeconds=IDNumberToString(TF_Remaining_Second,2); //
  61.    
  62.   
  63.    //------------------------------------------------------------------------------------------------------------------------------------------
  64.    Show_String= ShowHour+":"+ShowMinute+":"+ShowSeconds;
  65.    DrawLabel(strOBJ_string+"Time1", Show_String, 0, 5, White, 14, "Arial", intOBJ_ShowCorner, intOBJ_ShowWindow, true);      
  66.   
  67.    //----------------------------------------------------------------------------------------------------------------------------------------------
  68.    double SPREAD=MarketInfo(NULL,MODE_SPREAD);
  69.    if(!(Show_SPREAD==SPREAD))
  70.      {
  71.        Show_SPREAD=SPREAD;
  72.        printf("---------------------------SPREAD:" + TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS) + " ("+DoubleToStr(Show_SPREAD,2) + ")------------");
  73.      }
  74.    Show_String=(string)NormalizeDouble(MarketInfo(Symbol(), MODE_TICKVALUE), 2)+"| " +(string)Show_SPREAD;
  75.    DrawLabel(strOBJ_string+"TICKVALUE|SPREAD", Show_String, 0, 55, Yellow, 13, "Arial", intOBJ_ShowCorner, intOBJ_ShowWindow, true);  
  76.    //----------------------------------------------------------------------------------------------------------------------------------------------
  77.    Show_String=DoubleToStr(MarketInfo(Symbol(), MODE_MARGINREQUIRED), 2);
  78.    DrawLabel(strOBJ_string+"MARGINREQUIRED", Show_String, 0, 80, Yellow, 12, "Arial", intOBJ_ShowCorner, intOBJ_ShowWindow, true);
  79.       
  80. //--- return value of prev_calculated for next call
  81.    return(rates_total);
  82.   }
  83.   
  84.   
  85.   
  86. //+------------------------------------------------------------------+
  87. //| Timer function                                                   |
  88. //+------------------------------------------------------------------+
  89. void OnTimer()
  90.   {
  91. //---
  92.     int TM_Second = 60-TimeSeconds(TimeCurrent());
  93.     DrawLabel(strOBJ_string+"Time5tf0", IDNumberToString(TM_Second,2), 0, 25, Yellow, 14,"Arial" ,intOBJ_ShowCorner, intOBJ_ShowWindow,true);
  94.    
  95.     DrawLabel(strOBJ_string+"Time5tf1", DoubleToStr(MarketInfo(Symbol(), MODE_SWAPLONG), 2)+"L", 30, 28, Coral, 8,"Arial" ,intOBJ_ShowCorner, intOBJ_ShowWindow,true); //SWAPLONG
  96.     DrawLabel(strOBJ_string+"Time5tf2", DoubleToStr(MarketInfo(Symbol(), MODE_SWAPSHORT),2)+"S", 30, 42, Coral, 8,"Arial" ,intOBJ_ShowCorner, intOBJ_ShowWindow,true); //SWAPSHORT
  97.     if(!(IsConnected()))      
  98.       {
  99.         DrawLabel(strOBJ_string+"Time5tf", "IsConnected", 5, 25, Yellow, 12,"Arial" ,intOBJ_ShowCorner, intOBJ_ShowWindow,true);
  100.         ObjectDelete(strOBJ_string+"Time5tf0");
  101.         ObjectDelete(strOBJ_string+"Time5tf1");
  102.         ObjectDelete(strOBJ_string+"Time5tf2");
  103.      }  
  104.   
  105.   
  106.   }
  107. //+------------------------------------------------------------------+
  108. void DrawLabel(string obj_Name, string obj_Text, int obj_X, int obj_Y, color obj_Color, int obj_Size, string obj_Font, int obj_Coner, int obj_Window, bool obj_ShowBackup) {
  109.    //ObjectDelete(obj_Name);
  110.    int FindObjectRtn=ObjectFind(obj_Name);
  111.    if(FindObjectRtn<0)
  112.      {      
  113.        ObjectCreate(obj_Name, OBJ_LABEL, obj_Window, 0, 0);
  114.        ObjectSetText(obj_Name, obj_Text, obj_Size, obj_Font, obj_Color);
  115.        ObjectSet(obj_Name, OBJPROP_CORNER, obj_Coner);
  116.        ObjectSet(obj_Name, OBJPROP_XDISTANCE, obj_X);
  117.        ObjectSet(obj_Name, OBJPROP_YDISTANCE, obj_Y);
  118.        ObjectSet(obj_Name, OBJPROP_BACK, obj_ShowBackup);
  119.      }
  120.    else
  121.      {
  122.        ObjectSetText(obj_Name, obj_Text, obj_Size, obj_Font, obj_Color);
  123.        ObjectSet(obj_Name, OBJPROP_CORNER, obj_Coner);
  124.        ObjectSet(obj_Name, OBJPROP_XDISTANCE, obj_X);
  125.        ObjectSet(obj_Name, OBJPROP_YDISTANCE, obj_Y);
  126.        ObjectSet(obj_Name, OBJPROP_BACK, obj_ShowBackup);   
  127.      }
  128. }
  129. void DeleteTimeObject(string TipTxt, int TxtLen)
  130. {
  131.    int ObjTotal=ObjectsTotal();
  132.    for(int i = ObjTotal; i>=0; i--){
  133.       string ObjName=ObjectName(i);
  134.       if(StringSubstr(ObjName,0,TxtLen) == TipTxt){
  135.          ObjectDelete(ObjName);
  136.       }
  137.    }  
  138.    ObjTotal=0;
  139. }
  140. string IDNumberToString(int CalNumber, int SN)
  141. {
  142.    string strNumber;
  143.    int StrLen;
  144.    StrLen=SN-StringLen(IntegerToString(CalNumber));
  145. switch(StrLen)
  146.   {
  147.    case 1:
  148.       strNumber = "0"+IntegerToString(CalNumber);
  149.       break;
  150.    case 2:
  151.       strNumber = "00"+IntegerToString(CalNumber);
  152.       break;
  153.    case 3:
  154.       strNumber = "000"+IntegerToString(CalNumber);
  155.       break;
  156.    case 4:
  157.       strNumber = "0000"+IntegerToString(CalNumber);
  158.       break;
  159.    case 5:
  160.       strNumber = "00000"+IntegerToString(CalNumber);
  161.       break;
  162.    default:
  163.       strNumber = IntegerToString(CalNumber);
  164.       break;
  165.   }
  166.    return(strNumber);
  167. }
复制代码
举报

评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册