按时间标记位置脚本

无论是进行策略分析,还是进行交易系统设计,时间是一个非常重要的参照因素,特别是在进行历史数据回溯验证的时候,如果想快速定位到某个时间点,就需要找到一个办法在行情图表上进行明显的标记,比如在什么时间点出现了亏损、什么时间点出现了盈利,使用按时间标记功能,就可以快速标记所有位置,便于统计、分析。在这个例子中,我们运用的是画竖线的方式,并区分不同颜色的线,来实现需求。

画线对象

需要用到画对象函数ObjectCreate(),指定对象类型为OBJ_VLINE,创建画线对象便可以设置颜色、宽度、风格等相关属性。

 int chart_id = 0;
 string line_name = TimeToString(D'2021.04.01 00:00:00');
 if(!ObjectCreate(chart_id,line_name,OBJ_VLINE,0,D'2021.04.01 00:00:00',0))
     {
        printf(": failed to create a line! Error code = ",GetLastError());
     }
 //设置属性
 ObjectSetInteger(chart_id,line_name,OBJPROP_COLOR,line_color); 	//设置颜色
 ObjectSetInteger(chart_id,line_name,OBJPROP_STYLE,line_style); 	//设置风格
 ObjectSetInteger(chart_id,line_name,OBJPROP_WIDTH,line_width); 	//设置宽度

时间位置

这个例子实现画出2021年4月份所有00:00:00开市的位置时间线,首先需要取到所有符合条件的时间数据,再用for循环画出所有对象。取时间数据可以用CopyTime()函数,通过指定起始时间、结束时间,将这段时间周期内的所有时间数据取到。通过判断时间是否是00:00:00就是满足需求的时间位置。

 datetime time_lines[];
 ENUM_TIMEFRAMES time_period = PERIOD_H1;
 datetime time_start = D'2021.01.01 00:00:00';
 datetime time_end = D'2021.04.21 00:00:00';
 CopyTime(Symbol(),time_period,time_start,time_end,time_lines);

这里用time_lines数组将所有数据进行了存储,是datetime时间格式,怎么判断是否为开市时间呢,用TimeToStruct()函数将格式进行转换为MqlDateTime时间结构体,就可以得到时、分、秒,进行条件判断。

MqlDateTime time_struct ;
TimeToStruct(time_lines[i],time_struct);
if(time_struct.hour == 0 && time_struct.min == 0 && time_struct.sec == 0)
      {
//画线对象
      }

针对其实时间、终止时间、时间周期,可以将这些参数放到脚本头部作为输入参数进行更加灵活的控制,当然也可以将线条的颜色、宽度、样式等也作为输入参数,就有一个功能更加丰富灵活的按时间标记位置脚本了,需要特别注意的是添加#property script_show_inputs,才能显示脚本输入参数。

input datetime time_start = D'2021.01.01 00:00:00';
input datetime time_end = D'2021.04.21 00:00:00';
input ENUM_TIMEFRAMES time_period = PERIOD_H1;
input color line_color = clrRed;
input ENUM_LINE_STYLE line_style = STYLE_SOLID;
input int line_width = 2;

实现源码

#property copyright "公众号 Luyuanmw 微信 wentxiong"
#property link      源码讲解   "https://study.163.com/course/introduction/1213774825.htm?inLoc=ss_ssjg_qblb_MT5&share=2&shareId=480000002309742"
#property version   "1.00"

#property script_show_inputs

input datetime time_start = D'2021.01.01 00:00:00';
input datetime time_end = D'2021.04.21 00:00:00';
input ENUM_TIMEFRAMES time_period = PERIOD_H1;
input color line_color = clrRed;
input ENUM_LINE_STYLE line_style = STYLE_SOLID;
input int line_width = 2;

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
//画出2021年4月所有00:00开市时间位置
   datetime time_lines[];
   CopyTime(Symbol(),time_period,time_start,time_end,time_lines);

   for(int i = 0; i < ArraySize(time_lines); i++)
     {
      //时间位置
      MqlDateTime time_struct ;
      TimeToStruct(time_lines[i],time_struct);
      if(time_struct.hour == 0 && time_struct.min == 0 && time_struct.sec == 0)
        {
         //画线对象
         int chart_id = 0;
         string line_name = TimeToString(time_lines[i]);
         if(!ObjectCreate(chart_id,line_name,OBJ_VLINE,0,time_lines[i],0))
           {
            printf(": failed to create a line! Error code = ",GetLastError());
           }
         //设置属性
         ObjectSetInteger(chart_id,line_name,OBJPROP_COLOR,line_color); //设置颜色
         ObjectSetInteger(chart_id,line_name,OBJPROP_STYLE,line_style); //设置风格
         ObjectSetInteger(chart_id,line_name,OBJPROP_WIDTH,line_width); //设置宽度
        }
     }
  }
//+------------------------------------------------------------------+

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Altium Designer是一款常用于电子设计的软件,它提供了丰富的功能和工具来帮助工程师完成电路设计和PCB布局。为了提高设计效率和方便性,Altium Designer还支持脚本文件的编写和使用。 脚本文件是一种电子化的程序代码,由特定的编程语言编写而成,用于自动化执行一系列的操作或任务。在Altium Designer中,脚本文件通常使用Delphi脚本进行编写。 Altium Designer脚本文件的使用主要有以下几个方面的作用: 1. 自动完成重复性任务:通过脚本文件,可以实现自动化完成一些重复性的任务,如自动布局元件、设置连线规则等。这可以大大提高设计效率,减少人工操作的时间和错误。 2. 批量修改元件参数:通过脚本文件,可以对设计中的元件进行批量修改参数的操作。比如可以批量修改元件的值、参考设计器等。 3. 自定义功能的添加:Altium Designer的功能是很强大的,但有时候无法满足用户的特定需求。通过脚本文件,可以实现自定义功能的添加,满足特定需求。例如,可以通过脚本实现特定的元件选择过滤、电气规则检查等。 总之,Altium Designer脚本文件是一个强大的工具,可以帮助工程师在设计过程中提高效率和准确性。通过编写和使用脚本文件,可以实现自动化完成一些重复性任务、批量修改元件参数以及添加自定义功能等。 ### 回答2: Altium Designer脚本文件是一种用于自动化和批量处理任务的脚本工具。脚本文件以文本形式存储,可以在Altium Designer软件中运行。 使用脚本文件,可以实现一系列功能,例如自动生成特定的设计,执行操作以加快设计流程或自动完成重复性的任务。通过编写脚本,用户可以使用Altium Designer软件提供的开发环境和函数库来实现设计自动化。 脚本文件的编写可以使用多种编程语言,包括Python和Delphi脚本。用户可以编写自定义脚本以满足其特定需求。Altium Designer软件还提供了一组内置的脚本命令和函数,用于访问和操作设计文件、器件库和项目文件等。除了这些内置命令和函数外,用户还可以通过API(应用程序编程接口)添加自己的扩展命令和功能。 脚本文件的使用可以大大提高设计效率和一致性。它们可以自动执行各种设计任务,例如创建原理图或PCB布局,导入和导出设计文件,自动添加标记或注释等。此外,脚本还可以与其他工具和系统集成,以增强整个设计流程的自动化和集成。 总之,Altium Designer脚本文件是一种功能强大的工具,可以帮助设计师提高工作效率、减少错误和快速完成设计任务。通过编写和使用脚本文件,用户可以自定义和优化设计流程,满足个性化的设计需求。 ### 回答3: Altium Designer是一款用于电路设计和PCB布局的软件。脚本文件是一种用来自动化和批处理操作的文件类型。 Altium Designer的脚本文件使用Delphi编程语言进行编写。脚本文件可以用来执行各种任务,例如创建和修改电路图和PCB文件,添加组件和轨迹,进行自动布线和生成报告等。 脚本文件可以批量处理大量设计任务,提高设计效率。通过自动化执行重复性工作,可以节省大量的时间和精力。脚本文件还可以帮助保持设计的一致性,减少人为错误。 在Altium Designer中,可以通过打开脚本编辑器来创建和编辑脚本文件。脚本编辑器提供了丰富的编程接口和函数库,使得编写脚本变得简单和高效。 通过脚本文件,用户可以编写自定义的功能和工具,以满足特定的设计需求。用户可以根据自己的设计流程和工作习惯编写脚本,实现定制化的设计流程和自动化操作。 总之,Altium Designer的脚本文件是一种用于自动化和批处理设计任务的文件类型,通过编写脚本文件,可以提高设计效率,减少错误,并实现定制化的设计流程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路远马亡Trade

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值