交易危机

 找回密码
 快捷注册(禁q号)

QQ登录

只需一步,快速开始

搜索
查看: 1377|回复: 4

[指标] 世界交易时间表盘,一目了然,

[复制链接]

1056

主题

2万

积分

17

精华

操盘专家

金钱
20854 美元
权重
251
发表于 2020-4-29 13:28 | 显示全部楼层 |阅读模式
交易所时间表.rar (34.54 KB, 下载次数: 19)

评分

参与人数 1金钱 +1 收起 理由
orchidd + 1 感谢楼主分享

查看全部评分

太阳每天升起,每天都是新的一天。

1056

主题

2万

积分

17

精华

操盘专家

金钱
20854 美元
权重
251
 楼主| 发表于 2020-4-29 13:36 | 显示全部楼层
QQ截图20200429133631.png
太阳每天升起,每天都是新的一天。

955

主题

7689

积分

0

精华

高级操盘手

金钱
7689 美元
权重
405
发表于 2020-4-29 13:47 | 显示全部楼层
.................
回复

使用道具 举报

1056

主题

2万

积分

17

精华

操盘专家

金钱
20854 美元
权重
251
 楼主| 发表于 2020-4-29 13:53 | 显示全部楼层
这个编程思路有意思,贴出来供大家研究学习

  1. #property version       "1.1"
  2. #property strict

  3. #property indicator_separate_window
  4. //----程序预设参数
  5. input int TimeZone=8;//本地时区
  6. input string str2 = "====请自行输入夏令时====";//交易所时间表
  7. input string NewYorkStartTime="8:30";//纽约开市时间
  8. input string NewYorkCloseTime="15:00";//纽约收市时间
  9. input string LondonStartTime="9:30";//伦敦开市时间
  10. input string LondonCloseTime="16:30";//伦敦收市时间
  11. input string FrankfurtStartTime="9:00";//法兰克福开市时间
  12. input string FrankfurtCloseTime="16:00";//法兰克福收市时间
  13. input string TokyoStartTime="9:00";//东京开市时间
  14. input string TokyoCloseTime="15:30";//东京收市时间
  15. input string SydneyStartTime="9:00";//悉尼开市时间
  16. input string SydneyCloseTime="17:00";//悉尼收市时间
  17. input string WellingtonStartTime="9:00";//惠灵顿开市时间
  18. input string WellingtonCloseTime="17:00";//惠灵顿收市时间

  19. int Corner=0; //交易信息显示四个角位置
  20. int cnt;
  21. datetime GMT;
  22. color myColor=SlateGray;
  23. color TitleColor=Yellow; //标题颜色
  24. color TimeIntervalColor=SlateGray; //小时间隔颜色
  25. color TimeColor=SlateGray; //小时数字颜色
  26. color TradingColor=Green; //交易时间段


  27. int OnInit()
  28. {
  29.     return(INIT_SUCCEEDED);
  30. }

  31. int OnCalculate(const int rates_total,
  32.                 const int prev_calculated,
  33.                 const datetime &time[],
  34.                 const double &open[],
  35.                 const double &high[],
  36.                 const double &low[],
  37.                 const double &close[],
  38.                 const long &tick_volume[],
  39.                 const long &volume[],
  40.                 const int &spread[])
  41. {
  42.     iMain();
  43.     return(rates_total);
  44. }

  45. /*
  46. 函    数:时间轴
  47. 参数说明:string myName 对象名
  48.           int myStartX 起始坐标X
  49.           int myStartY 起始坐标Y
  50.           color myBaseColor 基本颜色
  51. 函数返回:
  52. */
  53. void iTimeLine(string myName,int myStartX,int myStartY,color myBaseColor)
  54. {
  55.     iDisplayInfo(myName,myName, Corner, 5, myStartY, 8, "", TitleColor);
  56.     int myCount=24*12; //每5分钟一个竖线
  57.     int myInterval=myStartX;
  58.     int myTimesBet=12; //小时间隔变量,+12,<288
  59.     int myTimesNum=1; //小时数字,+1 <24
  60.     double myStartHour,myStartMinute,myEndHour,myEndMinute;
  61.     //本地时间轴
  62.     if (myName=="Local")
  63.     {
  64.         myTimesBet=12;
  65.         myTimesNum=1;
  66.         for (cnt=0;cnt<myCount;cnt++)
  67.         {
  68.             iDisplayInfo(myName+(string)cnt,":", Corner, myInterval, myStartY, 8, "", myBaseColor); //绘基础时间柱图形
  69.             //绘当前时间位置、1小时间隔、小时数字、交易时间段
  70.             //----绘1小时间隔、小时数字
  71.             if (cnt==myTimesBet)
  72.             {
  73.                 iDisplayInfo(myName+(string)cnt,"|", Corner, myInterval, myStartY, 8, "", TimeIntervalColor);
  74.                 iDisplayInfo((string)myTimesNum+myName+(string)cnt,(string)myTimesNum, Corner, myInterval-2, myStartY+15, 7, "", clrAqua);
  75.                 myTimesBet=myTimesBet+12;
  76.                 myTimesNum=myTimesNum+1;
  77.             }
  78.             //----绘当前时间位置
  79.             if (cnt==MathFloor((TimeLocal()-iTime(NULL,1440,0))/300))
  80.             {
  81.                 iDisplayInfo(myName+(string)cnt,"|", Corner, myInterval, myStartY, 12, "", Red);
  82.             }
  83.             myInterval=myInterval+5;
  84.         }
  85.         iDisplayInfo(myName+"Time",TimeToStr(GMT+TimeZone*3600,TIME_DATE|TIME_SECONDS), Corner, myInterval+10, myStartY, 8, "", TitleColor);
  86.     }
  87.     //惠灵顿时间轴  +12
  88.     if (myName=="Wellington")
  89.     {
  90.         myTimesBet=12;
  91.         myTimesNum=5;
  92.         for (cnt=0;cnt<myCount;cnt++)
  93.         {
  94.             iDisplayInfo(myName+(string)cnt,".", Corner, myInterval, myStartY, 8, "", myBaseColor); //绘基础时间柱图形
  95.             //绘当前时间位置、1小时间隔、小时数字、交易时间段
  96.             //----绘交易时间段
  97.             myStartHour=TimeHour(StrToTime(WellingtonStartTime));
  98.             myStartMinute=TimeMinute(StrToTime(WellingtonStartTime));
  99.             myEndHour=TimeHour(StrToTime(WellingtonCloseTime));
  100.             myEndMinute=TimeMinute(StrToTime(WellingtonCloseTime));
  101.             if (cnt>=(myStartHour+myStartMinute/60-4)*12
  102.                 && cnt<=(myEndHour+myEndMinute/60-4)*12)
  103.             {
  104.                 iDisplayInfo(myName+(string)cnt,"|", Corner, myInterval, myStartY, 8, "", TradingColor); //绘交易时间段
  105.             }
  106.             //----绘1小时间隔、小时数字
  107.             if (cnt==myTimesBet)
  108.             {
  109.                 iDisplayInfo(myName+(string)cnt,"|", Corner, myInterval, myStartY, 8, "", TimeIntervalColor);
  110.                 iDisplayInfo((string)myTimesNum+myName+(string)cnt,(string)myTimesNum, Corner, myInterval-2, myStartY+15, 7, "", SlateGray);
  111.                 myTimesBet=myTimesBet+12;
  112.                 myTimesNum=myTimesNum+1;
  113.                 if (myTimesNum==24) myTimesNum=0;
  114.             }
  115.             //----绘当前时间位置
  116.             if (cnt==MathFloor((TimeLocal()-iTime(NULL,1440,0))/300))
  117.             {
  118.                 iDisplayInfo(myName+(string)cnt,"|", Corner, myInterval, myStartY, 12, "", Red);
  119.             }
  120.             myInterval=myInterval+5;
  121.         }
  122.         iDisplayInfo(myName+"Time",TimeToStr(GMT+12*3600,TIME_DATE|TIME_SECONDS), Corner, myInterval+10, myStartY, 8, "", TitleColor);
  123.     }
  124.     //悉尼时间轴  +10
  125.     if (myName=="Sydney")
  126.     {
  127.         myTimesBet=12;
  128.         myTimesNum=3;
  129.         for (cnt=0;cnt<myCount;cnt++)
  130.         {
  131.             iDisplayInfo(myName+(string)cnt,".", Corner, myInterval, myStartY, 8, "", myBaseColor); //绘基础时间柱图形
  132.             //绘当前时间位置、1小时间隔、小时数字、交易时间段
  133.             //----绘交易时间段
  134.             myStartHour=TimeHour(StrToTime(SydneyStartTime));
  135.             myStartMinute=TimeMinute(StrToTime(SydneyStartTime));
  136.             myEndHour=TimeHour(StrToTime(SydneyCloseTime));
  137.             myEndMinute=TimeMinute(StrToTime(SydneyCloseTime));
  138.             if (cnt>=(myStartHour+myStartMinute/60-2)*12
  139.                 && cnt<=(myEndHour+myEndMinute/60-2)*12)
  140.             {
  141.                 iDisplayInfo(myName+(string)cnt,"|", Corner, myInterval, myStartY, 8, "", TradingColor); //绘交易时间段
  142.             }
  143.             //----绘1小时间隔、小时数字
  144.             if (cnt==myTimesBet)
  145.             {
  146.                 iDisplayInfo(myName+(string)cnt,"|", Corner, myInterval, myStartY, 8, "", TimeIntervalColor);
  147.                 iDisplayInfo((string)myTimesNum+myName+(string)cnt,(string)myTimesNum, Corner, myInterval-2, myStartY+15, 7, "", SlateGray);
  148.                 myTimesBet=myTimesBet+12;
  149.                 myTimesNum=myTimesNum+1;
  150.                 if (myTimesNum==24) myTimesNum=0;
  151.             }
  152.             //----绘当前时间位置
  153.             if (cnt==MathFloor((TimeLocal()-iTime(NULL,1440,0))/300))
  154.             {
  155.                 iDisplayInfo(myName+(string)cnt,"|", Corner, myInterval, myStartY, 12, "", Red);
  156.             }
  157.             myInterval=myInterval+5;
  158.         }
  159.         iDisplayInfo(myName+"Time",TimeToStr(GMT+10*3600,TIME_DATE|TIME_SECONDS), Corner, myInterval+10, myStartY, 8, "", TitleColor);
  160.     }
  161.     //东京时间轴  +9
  162.     if (myName=="Tokyo")
  163.     {
  164.         myTimesBet=12;
  165.         myTimesNum=2;
  166.         for (cnt=0;cnt<myCount;cnt++)
  167.         {
  168.             iDisplayInfo(myName+(string)cnt,".", Corner, myInterval, myStartY, 8, "", myBaseColor); //绘基础时间柱图形
  169.             //绘当前时间位置、1小时间隔、小时数字、交易时间段
  170.             //----绘交易时间段
  171.             myStartHour=TimeHour(StrToTime(TokyoStartTime));
  172.             myStartMinute=TimeMinute(StrToTime(TokyoStartTime));
  173.             myEndHour=TimeHour(StrToTime(TokyoCloseTime));
  174.             myEndMinute=TimeMinute(StrToTime(TokyoCloseTime));
  175.             if (cnt>=(myStartHour+myStartMinute/60-1)*12
  176.                 && cnt<=(myEndHour+myEndMinute/60-1)*12)
  177.             {
  178.                 iDisplayInfo(myName+(string)cnt,"|", Corner, myInterval, myStartY, 8, "", TradingColor); //绘交易时间段
  179.             }
  180.             //----绘1小时间隔、小时数字
  181.             if (cnt==myTimesBet)
  182.             {
  183.                 iDisplayInfo(myName+(string)cnt,"|", Corner, myInterval, myStartY, 8, "", TimeIntervalColor);
  184.                 iDisplayInfo((string)myTimesNum+myName+(string)cnt,(string)myTimesNum, Corner, myInterval-2, myStartY+15, 7, "", SlateGray);
  185.                 myTimesBet=myTimesBet+12;
  186.                 myTimesNum=myTimesNum+1;
  187.                 if (myTimesNum==24) myTimesNum=0;
  188.             }
  189.             //----绘当前时间位置
  190.             if (cnt==MathFloor((TimeLocal()-iTime(NULL,1440,0))/300))
  191.             {
  192.                 iDisplayInfo(myName+(string)cnt,"|", Corner, myInterval, myStartY, 12, "", Red);
  193.             }
  194.             myInterval=myInterval+5;
  195.         }
  196.         iDisplayInfo(myName+"Time",TimeToStr(GMT+9*3600,TIME_DATE|TIME_SECONDS), Corner, myInterval+10, myStartY, 8, "", TitleColor);
  197.     }
  198.     //法兰克福时间轴  +1
  199.     if (myName=="Frankfurt")
  200.     {
  201.         myTimesBet=12;
  202.         myTimesNum=18;
  203.         for (cnt=0;cnt<myCount;cnt++)
  204.         {
  205.             iDisplayInfo(myName+(string)cnt,".", Corner, myInterval, myStartY, 8, "", myBaseColor); //绘基础时间柱图形
  206.             //绘当前时间位置、1小时间隔、小时数字、交易时间段
  207.             //----绘交易时间段
  208.             myStartHour=TimeHour(StrToTime(FrankfurtStartTime));
  209.             myStartMinute=TimeMinute(StrToTime(FrankfurtStartTime));
  210.             myEndHour=TimeHour(StrToTime(FrankfurtCloseTime));
  211.             myEndMinute=TimeMinute(StrToTime(FrankfurtCloseTime));
  212.             if (cnt>=(myStartHour+myStartMinute/60+7)*12
  213.                 && cnt<=(myEndHour+myEndMinute/60+7)*12)
  214.             {
  215.                 iDisplayInfo(myName+(string)cnt,"|", Corner, myInterval, myStartY, 8, "", TradingColor); //绘交易时间段
  216.             }
  217.             //----绘1小时间隔、小时数字
  218.             if (cnt==myTimesBet)
  219.             {
  220.                 iDisplayInfo(myName+(string)cnt,"|", Corner, myInterval, myStartY, 8, "", TimeIntervalColor);
  221.                 iDisplayInfo((string)myTimesNum+myName+(string)cnt,(string)myTimesNum, Corner, myInterval-2, myStartY+15, 7, "", SlateGray);
  222.                 myTimesBet=myTimesBet+12;
  223.                 myTimesNum=myTimesNum+1;
  224.                 if (myTimesNum==24) myTimesNum=0;
  225.             }
  226.             //----绘当前时间位置
  227.             if (cnt==MathFloor((TimeLocal()-iTime(NULL,1440,0))/300))
  228.             {
  229.                 iDisplayInfo(myName+(string)cnt,"|", Corner, myInterval, myStartY, 12, "", Red);
  230.             }
  231.             myInterval=myInterval+5;
  232.         }
  233.         iDisplayInfo(myName+"Time",TimeToStr(GMT+1*3600,TIME_DATE|TIME_SECONDS), Corner, myInterval+10, myStartY, 8, "", TitleColor);
  234.     }
  235.     //伦敦时间轴  +0
  236.     if (myName=="London(GMT)")
  237.     {
  238.         myTimesBet=12;
  239.         myTimesNum=17;
  240.         for (cnt=0;cnt<myCount;cnt++)
  241.         {
  242.             iDisplayInfo(myName+(string)cnt,".", Corner, myInterval, myStartY, 8, "", myBaseColor); //绘基础时间柱图形
  243.             //绘当前时间位置、1小时间隔、小时数字、交易时间段
  244.             //----绘交易时间段
  245.             myStartHour=TimeHour(StrToTime(LondonStartTime));
  246.             myStartMinute=TimeMinute(StrToTime(LondonStartTime));
  247.             myEndHour=TimeHour(StrToTime(LondonCloseTime));
  248.             myEndMinute=TimeMinute(StrToTime(LondonCloseTime));
  249.             if ((cnt>=(myStartHour+myStartMinute/60+8)*12
  250.                 && cnt<=(myEndHour+myEndMinute/60+8)*12)
  251.                 ||((myEndHour+myEndMinute/60+8)*12>288
  252.                     && cnt>=0 && cnt<=(myEndHour+myEndMinute/60+8)*12-288))
  253.             {
  254.                 iDisplayInfo(myName+(string)cnt,"|", Corner, myInterval, myStartY, 8, "", TradingColor); //绘交易时间段
  255.             }
  256.             
  257.             //----绘1小时间隔、小时数字
  258.             if (cnt==myTimesBet)
  259.             {
  260.                 iDisplayInfo(myName+(string)cnt,"|", Corner, myInterval, myStartY, 8, "", TimeIntervalColor);
  261.                 iDisplayInfo((string)myTimesNum+myName+(string)cnt,(string)myTimesNum, Corner, myInterval-2, myStartY+15, 7, "", SlateGray);
  262.                 myTimesBet=myTimesBet+12;
  263.                 myTimesNum=myTimesNum+1;
  264.                 if (myTimesNum==24) myTimesNum=0;
  265.             }
  266.             //----绘当前时间位置
  267.             if (cnt==MathFloor((TimeLocal()-iTime(NULL,1440,0))/300))
  268.             {
  269.                 iDisplayInfo(myName+(string)cnt,"|", Corner, myInterval, myStartY, 12, "", Red);
  270.             }
  271.             myInterval=myInterval+5;
  272.         }
  273.         iDisplayInfo(myName+"Time",TimeToStr(GMT+0*3600,TIME_DATE|TIME_SECONDS), Corner, myInterval+10, myStartY, 8, "", TitleColor);
  274.     }
  275.     //纽约时间轴  -5
  276.     if (myName=="NewYork")
  277.     {
  278.         myTimesBet=12;
  279.         myTimesNum=12;
  280.         for (cnt=0;cnt<myCount;cnt++)
  281.         {
  282.             iDisplayInfo(myName+(string)cnt,".", Corner, myInterval, myStartY, 8, "", myBaseColor); //绘基础时间柱图形
  283.             //绘当前时间位置、1小时间隔、小时数字、交易时间段
  284.             //----绘交易时间段
  285.             myStartHour=TimeHour(StrToTime(NewYorkStartTime));
  286.             myStartMinute=TimeMinute(StrToTime(NewYorkStartTime));
  287.             myEndHour=TimeHour(StrToTime(NewYorkCloseTime));
  288.             myEndMinute=TimeMinute(StrToTime(NewYorkCloseTime));
  289.             if ((cnt>=(myStartHour+myStartMinute/60+13)*12
  290.                 && cnt<=(myEndHour+myEndMinute/60+13)*12)
  291.                 ||((myEndHour+myEndMinute/60+13)*12>288
  292.                     && cnt>=0 && cnt<=(myEndHour+myEndMinute/60+13)*12-288))
  293.             {
  294.                 iDisplayInfo(myName+(string)cnt,"|", Corner, myInterval, myStartY, 8, "", TradingColor); //绘交易时间段
  295.             }
  296.             //----绘当前时间位置
  297.             //----绘1小时间隔、小时数字
  298.             if (cnt==myTimesBet)
  299.             {
  300.                 iDisplayInfo(myName+(string)cnt,"|", Corner, myInterval, myStartY, 8, "", TimeIntervalColor);
  301.                 iDisplayInfo((string)myTimesNum+myName+(string)cnt,(string)myTimesNum, Corner, myInterval-2, myStartY+15, 7, "", SlateGray);
  302.                 myTimesBet=myTimesBet+12;
  303.                 myTimesNum=myTimesNum+1;
  304.                 if (myTimesNum==24) myTimesNum=0;
  305.             }
  306.             if (cnt==MathFloor((TimeLocal()-iTime(NULL,1440,0))/300))
  307.             {
  308.                 iDisplayInfo(myName+(string)cnt,"|", Corner, myInterval, myStartY, 12, "", Red);
  309.             }
  310.             myInterval=myInterval+5;
  311.         }
  312.         iDisplayInfo(myName+"Time",TimeToStr(GMT-5*3600,TIME_DATE|TIME_SECONDS), Corner, myInterval+10, myStartY, 8, "", TitleColor);
  313.     }
  314. }

  315. void iMain()
  316. {
  317.     //清除标签
  318.     int myWindowsHandle = WindowFind(WindowExpertName()); //获取当前指标名称所在窗口序号
  319.     ObjectsDeleteAll(myWindowsHandle, OBJ_LABEL);
  320.     GMT=TimeLocal()-TimeZone*3600;
  321.     iDisplayInfo("ServerTime","Server  "+TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS), Corner, 230, 3, 8, "", TitleColor);
  322.     //绘时间轴
  323.     iTimeLine("Local",80,15,myColor);
  324.     iTimeLine("Wellington",80,45,myColor);
  325.     iTimeLine("Sydney",80,75,myColor);
  326.     iTimeLine("Tokyo",80,105,myColor);
  327.     iTimeLine("Frankfurt",80,135,myColor);
  328.     iTimeLine("London(GMT)",80,165,myColor);
  329.     iTimeLine("NewYork",80,195,myColor);
  330.     return;
  331. }
  332.    
  333. /*
  334. 函    数:在屏幕上显示文字标签
  335. 输入参数:string LableName 标签名称,如果显示多个文本,名称不能相同
  336.           string LableDoc 文本内容
  337.           int Corner 文本显示角
  338.           int LableX 标签X位置坐标
  339.           int LableY 标签Y位置坐标
  340.           int DocSize 文本字号
  341.           string DocStyle 文本字体
  342.           color DocColor 文本颜色
  343. 输出参数:在指定的位置(X,Y)按照指定的字号、字体及颜色显示指定的文本
  344. 算法说明:
  345. */
  346. void iDisplayInfo(string LableName,string LableDoc,int myCorner,int LableX,int LableY,int DocSize,string DocStyle,color DocColor)
  347.    {
  348.       int myWindowsHandle = WindowFind(WindowExpertName());
  349.       ObjectCreate(LableName, OBJ_LABEL, myWindowsHandle, 0, 0);
  350.       ObjectSetText(LableName, LableDoc, DocSize, DocStyle,DocColor);
  351.       ObjectSet(LableName, OBJPROP_CORNER, Corner);
  352.       ObjectSet(LableName, OBJPROP_XDISTANCE, LableX);
  353.       ObjectSet(LableName, OBJPROP_YDISTANCE, LableY);
  354.       return;
  355.    }
复制代码
太阳每天升起,每天都是新的一天。

0

主题

121

积分

0

精华

见习操盘手

金钱
121 美元
权重
0
发表于 2020-12-21 00:38 | 显示全部楼层
学习学习
您需要登录后才可以回帖 登录 | 快捷注册(禁q号)

本版积分规则

QQ|黄金吧|黄金论坛|手机版|指标下载|非农|目录|交易危机

版权所有: ©2014-2021 fx3q.com Powered by Discuz! X3
浙ICP备: ICP14039028

浙公网安备 33011802001420号

风险提示:杠杆风险高,交易要谨慎 声明:坛友发言和回复均为个人观点,不代表论坛立场。
若有侵权请联系fx3q@qq.com删除

快速回复 返回顶部 返回列表