乐于分享
好东西不私藏

显示交易时间还要多久结束的指标源码分享

显示交易时间还要多久结束的指标源码分享
HI,大家好
今天来个指标,算是最简单最简单的指标了,你想看到交易周期的时间什么时候到吗?就是这样:
你放在5分钟,那么就是5分钟倒计时,我知道这个对做手单的朋友有用,所以我就放出来了,也算是一个辅助的玩法吧,还可以自己设置样式:
你选择自己喜欢的颜色吧,好了,如果你还要有什么喜欢的指标你可以找我来要,也可以让我做,就看我有时间没有,但是不会编译的朋友,还是联系我吧,我就只能直接发给你了:
下面是源码:(源码可以直接编译,编译很简单的)
//+------------------------------------------------------------------+//|                                          BarCountdown.mq4        |//|              MT4倒计时指标 - 支持自定义位置、字体大小、跟随买价   |//+------------------------------------------------------------------+#property indicator_chart_window#property indicator_buffers 0//--- 外部参数input bool   ShowSeconds = true;               // 是否显示秒数input string DisplayMode = "跟随买价线";       // 显示模式: 左上角/右上角/左下角/右下角/跟随买价线input int    FontSize = 14;                   // 字体大小input color  FontColor = Red;                 // 字体颜色input int    XOffset = 10;                    // 水平偏移(像素)input int    YOffset = 30;                    // 垂直偏移(像素) - 仅角落模式有效//--- 全局变量string objName = "BarCountdownTimer";int    periodSeconds;          // 当前周期秒数datetime lastTime;             // 上次更新时间,用于减少不必要的刷新//+------------------------------------------------------------------+//| 初始化函数                                                       |//+------------------------------------------------------------------+intinit(){    // 计算周期秒数    periodSeconds = Period() * 60;    lastTime = 0;    // 创建对象(若不存在)    if(ObjectFind(0, objName) == -1)    {        ObjectCreate(0, objName, OBJ_LABEL, 000);        ObjectSetInteger(0, objName, OBJPROP_COLOR, FontColor);        ObjectSetInteger(0, objName, OBJPROP_FONTSIZE, FontSize);        ObjectSetString(0, objName, OBJPROP_FONT, "Arial");    }    return(0);}//+------------------------------------------------------------------+//| 反初始化函数                                                     |//+------------------------------------------------------------------+intdeinit(){    ObjectDelete(0, objName);    return(0);}//+------------------------------------------------------------------+//| 将模式和文本转换为角标代码                                        |//+------------------------------------------------------------------+intGetCorner(string mode){    if(mode == "右上角")   return 1;    if(mode == "左下角")   return 2;    if(mode == "右下角")   return 3;    return 0;   // 默认左上角}//+------------------------------------------------------------------+//| 主循环                                                           |//+------------------------------------------------------------------+intstart(){    datetime curTime = TimeCurrent();    // 计算剩余秒数    datetime barOpen = Time[0];    datetime barEnd = barOpen + periodSeconds;    int remaining = barEnd - curTime;    if(remaining < 0) remaining = 0;    // 格式化文本    int minutes = remaining / 60;    int seconds = remaining % 60;    string text;    if(ShowSeconds)        text = StringFormat("距K线结束: %02d:%02d", minutes, seconds);    else        text = StringFormat("距K线结束: %d分钟", minutes);    // 更新对象属性    ObjectSetString(0, objName, OBJPROP_TEXT, text);    ObjectSetInteger(0, objName, OBJPROP_COLOR, FontColor);    ObjectSetInteger(0, objName, OBJPROP_FONTSIZE, FontSize);    // 根据模式设置位置    if(DisplayMode == "跟随买价线")    {        // 跟随买价线模式:使用OBJ_LABEL并动态计算屏幕坐标        double price = Bid;                  // 当前买价        datetime time = TimeCurrent();       // 当前时间(也可以偏移几根K线)        // 将价格和时间转换为屏幕像素坐标        int x = 0, y = 0;        if(ChartTimePriceToXY(00, time, price, x, y))        {            // 设置坐标为相对于窗口左上角的像素位置            ObjectSetInteger(0, objName, OBJPROP_CORNER, 0);      // 左上角为参考            ObjectSetInteger(0, objName, OBJPROP_XDISTANCE, x + XOffset);            ObjectSetInteger(0, objName, OBJPROP_YDISTANCE, y + YOffset);        }        else        {            // 转换失败时,回退到左上角            ObjectSetInteger(0, objName, OBJPROP_CORNER, 0);            ObjectSetInteger(0, objName, OBJPROP_XDISTANCE, XOffset);            ObjectSetInteger(0, objName, OBJPROP_YDISTANCE, YOffset);        }    }    else    {        // 角落模式        int corner = GetCorner(DisplayMode);        ObjectSetInteger(0, objName, OBJPROP_CORNER, corner);        ObjectSetInteger(0, objName, OBJPROP_XDISTANCE, XOffset);        ObjectSetInteger(0, objName, OBJPROP_YDISTANCE, YOffset);    }    // 可选:每秒钟强制刷新一次(MT4会在每个tick自动调用start,无需额外操作)    return(0);}//+------------------------------------------------------------------+