当前位置: 首页 > article >正文

“K线剩余时间”,显示当前K线已用和剩余时间 +品种信息面板 MT4免费工具!

指标名称:K线剩余时间

版本:MT4 ver. 2.01(指标)

K线剩余时间该指标提供了当前K线剩余时间统计,以及其他市场的详细信息视图,显示当前交易品种的基本交易状态、合约规格、价格信息等。通过在图表上创建面板,用户可以方便地查看实时的市场数据,例如买卖价格、点差、合约大小等,还包括每根K线的开始时间和剩余时间等信息。

功能:

  • 市场交易状态:显示当前市场的交易模式(例如是否只允许买入、卖出、仅平仓等)。

  • 合约信息:包括合约大小、最小/最大交易量、点值、止损限制等。

  • 价格信息:显示当前的买入价格、卖出价格、点差、Tick大小及Tick值。

  • 时间信息:显示当前K线的已过时间与剩余时间,帮助交易者更好地把握市场节奏。

参数:

部分代码展示:

//+------------------------------------------------------------------+
//|                                                       K线剩余时间.mq4 |
//|                                Copyright © 2009-2024, www.QChaos.com |
//|                                          https://www.qchaos.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 量化混沌, www.qchaos.com"
#property link      "https://www.qchaos.com"
#property version   "2.01"
#property strict

#property description "---------------------------------------------"
#property description "EA、指标公式分享"
#property description "EA、指标编写业务承接"
#property description "---------------------------------------------"

#property description "---------------------------------------------"
#property description   "显示关于交易品种的详细信息、上根蜡烛的时间间隔,以及到下一根蜡烛的倒计时。"
#property description   "提供警报选项。"
#property indicator_chart_window

#include <MQLTA Utils.mqh>

enum ENUM_PANEL_SIZE
{
    PANEL_SIZE_SMALL = 1,  // 小尺寸面板
    PANEL_SIZE_MEDIUM = 2, // 中等尺寸面板
    PANEL_SIZE_LARGE = 3   // 大尺寸面板
};

enum ENUM_DEFAULT_OPEN
{
    NOTHING = 0, // 无操作
    DETAILS = 1, // 显示详细信息
    CURRENT = 2  // 显示当前信息
};

enum ENUM_DISPLAY_MODE
{
    MINIMAL = 0, // 仅显示倒计时
    FULL = 1     // 完整界面
};

enum ENUM_TIMEFORMAT
{
    HMS = 0,   // 时:分:秒
    COLON = 1, // 时:分:秒 格式 (HH:MM:SS)
};

input string Comment_1 = "====================";    // 蜡烛计时器设置
input string IndicatorName = "品种信息显示";             // 指标名称(用于绘制对象)
input ENUM_DISPLAY_MODE DefaultDisplay = FULL;   // 默认界面显示方式
input ENUM_DEFAULT_OPEN DefaultOpen = CURRENT;      // 默认打开的窗口
input ENUM_TIMEFORMAT TimeFormat = HMS;             // 时间格式
input string Comment_2 = "====================";    // 通知选项
input bool EnableNotify = false;                    // 启用通知功能
input int SecondsNotice = 60;                       // 提前通知的秒数
input bool SendAlert = true;                        // 是否发送警报通知
input bool SendApp = false;                         // 是否发送手机通知
input bool SendEmail = false;                       // 是否通过电子邮件发送通知
input string Comment_3 = "====================";    // 面板位置设置
input ENUM_BASE_CORNER Corner = CORNER_LEFT_UPPER;  // 面板在图表上的位置(左上角)
input int Xoff = 20;                                // 面板的水平偏移量
input int Yoff = 20;                                // 面板的垂直偏移量
input int FontSize = 8;                             // 字体大小
input ENUM_PANEL_SIZE PanelSize = PANEL_SIZE_SMALL; // 面板大小
input string Comment_4 = "====================";    // 面板颜色设置
input color LargeFontColor = clrNavy;               // 大字体颜色
input color SmallFontColor = clrBlack;              // 小字体颜色
input color CaptionBGColor = clrKhaki;              // 标题背景颜色
input color EditsBGColor = clrWhiteSmoke;           // 编辑框背景颜色
input color BorderColor = clrBlack;                 // 边框颜色
input color BorderFillColor = clrWhite;             // 边框填充颜色


int CornerSignX = 1;
int CornerSignY = 1;

string HoursString = "";
string MinutesString = "";
string SecondsString = "";

string Font = "Consolas";

bool DetailsOpen = false;
bool CurrentOpen = false;
bool NotifiedThisCandle = false;

double DPIScale; // Scaling parameter for the panel based on the screen DPI.
int PanelMovX, PanelMovY, PanelLabX, PanelLabY, PanelRecX;
int DetGLabelX, DetGLabelEX, DetGLabelY, DetButtonX, DetButtonY;
int CurGLabelX, CurGLabelEX, CurGLabelY, CurButtonX, CurButtonY;

int OnInit()
{
    IndicatorSetString(INDICATOR_SHORTNAME, IndicatorName);
    
    CleanChart();
    
    if (Corner == CORNER_LEFT_UPPER)
    {
        CornerSignX = 1;
        CornerSignY = 1;
    }
    else if (Corner == CORNER_LEFT_LOWER)
    {
        CornerSignX = 1;
        CornerSignY = -1;
    }
    else if (Corner == CORNER_RIGHT_UPPER)
    {
        CornerSignX = -1;
        CornerSignY = 1;
    }
    else if (Corner == CORNER_RIGHT_LOWER)
    {
        CornerSignX = -1;
        CornerSignY = -1;
    }

    DPIScale = (double)TerminalInfoInteger(TERMINAL_SCREEN_DPI) / 96.0;

    PanelMovX = (int)MathRound(26 * DPIScale * PanelSize);
    PanelMovY = (int)MathRound(26 * DPIScale * PanelSize);
    PanelLabX = (int)MathRound(120 * DPIScale * PanelSize);
    PanelLabY = PanelMovY;
    PanelRecX = (PanelMovX + 2) * 2 + PanelLabX + 2;

    DetGLabelX = (int)MathRound(80 * DPIScale * PanelSize);
    DetGLabelEX = (int)MathRound(80 * DPIScale * PanelSize);
    DetGLabelY = (int)MathRound(20 * DPIScale * PanelSize);
    DetButtonX = (int)MathRound(90 * DPIScale * PanelSize);
    DetButtonY = DetGLabelY;

    CurGLabelX = (int)MathRound(80 * DPIScale * PanelSize);
    CurGLabelEX = (int)MathRound(80 * DPIScale * PanelSize);
    CurGLabelY = (int)MathRound(20 * DPIScale * PanelSize);
    CurButtonX = (int)MathRound(90 * DPIScale * PanelSize);
    CurButtonY = DetGLabelY;

    if (TimeFormat == HMS)
    {
        HoursString = "h ";
        MinutesString = "m ";
        SecondsString = "s";
    }
    else if (TimeFormat == COLON)
    {
        HoursString = ":";
        MinutesString = ":";
        SecondsString = "";
    }

    if ((DefaultDisplay == 1) && (DefaultOpen == 1)) DetailsOpen = true;
    if ((DefaultDisplay == 1) && (DefaultOpen == 2)) CurrentOpen = true;
    if (DefaultDisplay == 1) CreateMiniPanel();
    if (DefaultDisplay == 0) ShowCountdown();
    if (DefaultDisplay == 0)
    {
        DetailsOpen = false;
        CurrentOpen = false;
    }

    EventSetTimer(1);
    
    return INIT_SUCCEEDED;
}


http://www.kler.cn/a/391577.html

相关文章:

  • 24.11.13 Javascript3
  • Blender进阶:图像纹理节点和映射节点
  • react动态路由
  • 在C++上实现反射用法
  • java操作ES(一)RestHighLevelClient(2)集成与demo
  • 7天用Go从零实现分布式缓存GeeCache(学习)(3)
  • MDBook 使用指南
  • Serverless GPU:助力 AI 推理加速
  • 常见error集合
  • RDD 算子全面解析:从基础到进阶与面试要点
  • 最新7+非肿瘤生信,机器学习筛选关键基因+样本验证。目前机器学习已经替代WGCNA成为筛选关键基因方法。非肿瘤生信分析欢迎咨询!
  • 期权懂|期权市场的发展对于投资者有什么影响?
  • AI写作(二)NLP:开启自然语言处理的奇妙之旅(2/10)
  • Ab测试与灰度发布
  • 生成 Django 中文文档 PDF 版
  • 【ESP32】ESP-IDF开发 | 低功耗管理+RTC唤醒和按键唤醒例程
  • 开发工具 IntelliJ IDEA 使用技巧、快捷键、插件分享
  • Flink转换算子
  • CSM32RV20:RISC-V核的低功耗MCU芯片,常用在智能门锁上
  • C++中级学习笔记
  • TortoiseSVN提示服务器凭证检核错误:站点名称不符
  • windows下QT5.12.11使用MSVC编译器编译mysql驱动并使用详解
  • STM32学习笔记------GPIO介绍
  • SpringCloudAlibabaSidecar整合异构微服务
  • ES6模块、CommonJS、AMD等不同的模块化实现。
  • npm i 的时候报错: npm ERR! Error: EPERM: operation not permitted, rename