蜡烛线形成

可用性:蜡烛线形成逻辑在 JForex4 版本 4.9.0 及更高版本中实现

为什么此更改很重要

从单一全球平台时区转向特定于工具的交易时段是 JForex4 中数据呈现方式最重要的变化之一。交易日不再是某个全球时区中的日历日。它是该工具自己的交易时段所在的日期。这影响了在 JForex4 上交易的每种工具:

  • 日线图和日内蜡烛线。 日线蜡烛线在工具交易时段的边界处开始和结束。日内蜡烛线(从 M2 及以上)也会在交易时段开盘时对齐,当交易时段在非整点时间开盘时,这会使其相对于时钟对齐而移位。M1 蜡烛线不受影响。因此,图表与每种工具的实际交易时间相符。
  • 日价格统计数据。 交易时段也会影响每种工具的日价格统计数据。它们属于工具的交易日,因此遵循交易时段边界而不是日历日或全球日期开始:
    • 日净价格变化和百分比变化。 变化相对于上一个收盘价进行衡量,上一个收盘价取决于交易时段结束时间。
    • 日最高价。 工具交易时段内的最高价格。
    • 日最低价。 工具交易时段内的最低价格。
  • 正确的交易周。 外汇每周显示正好 5 个交易日,没有部分星期日蜡烛线,也没有围绕夏令时变化的人为 6 天周。
  • 独立的夏令时处理。 每种工具都遵循其自身市场时区的夏令时规则,因此美国和欧洲的时间变化不再相互干扰。

由于每种工具的时段不同,同一日历日期可能涵盖不同工具的不同时期,因此在比较日线蜡烛线和日统计数据时应牢记这一点。本更改的背景在第 9 节中进行了说明。

一览

  • 每种工具都有自己的交易时段:开盘时间、收盘时间和时区。
  • 蜡烛线与交易时段开盘对齐,不是与时钟对齐,也不是与 UTC 对齐。D1 始终在交易时段开盘时开始。M2 及以上的日内时间框架仅在交易时段开盘不是该时间框架的整数倍数时才会移位。M1 从不受影响(请参阅第 6 节)。
  • 不是完整时间框架整数的时段以较短的最终蜡烛线结束。
  • 交易时段还驱动每种工具的日价格统计数据:日净价格和百分比变化(上一个收盘价取决于时段结束时间)、日最高价和日最低价。
  • 夏令时按工具处理,使用该工具自己时区的夏令时规则。
  • 结算时间(持仓展期)独立于时段: 所有工具均为东部时间 17:00(请参阅第 8 节)。
工具 时段 时区 时段长度 D1 开始 每天 H1 蜡烛线数 最后一根 H1
EUR/USD 17:00 – 17:00 America/New_York 24 小时 17:00 24 60 分钟
EUR/HUF 02:00 – 17:00 America/New_York 15 小时 02:00 15 60 分钟
USA500.IDX 17:00 – 15:15 America/Chicago 22 小时 15 分钟 17:00 23 15 分钟
UK100.IDX 08:00 – 16:30 Europe/London 8 小时 30 分钟 08:00 9 30 分钟
SUGAR.CMD 08:45 – 17:55 Europe/London 9 小时 10 分钟 08:45 10 10 分钟
COCOA.CMD 09:15 – 17:00 Europe/London 7 小时 45 分钟 09:15 8 45 分钟
BTC/USD, ETH/USD 00:00 – 00:00 UTC 24 小时 00:00 24 60 分钟

完整的时段列表可在 wiki 上找到:交易时段


1. 介绍

蜡烛线由每种工具的各个交易时段形成,而不是由全球平台时区形成。

这样可以:

  • 蜡烛线与每种工具的实际交易时间相符
  • 按地区正确处理夏令时,与其他地区无关
  • 日线蜡烛线边界与实际交易日对齐
  • 交易周一至周五的工具每周始终有 5 个交易日
  • 没有尴尬的夏令时过渡期

2. 什么是交易时段?

交易时段为工具定义了三件事:

  1. 市场何时开盘和收盘
  2. 表达这些时间的时区
  3. 蜡烛线计划:蜡烛线何时开盘和收盘

trading_session

2.1 时段定义格式

EUR/USD 的示例:

defaultTimezone  "America/New_York"

MONDAY
  start             "17:00:00"
  previousDayStart  true
  end               "17:00:00"
  previousDayEnd    false
字段 含义
defaultTimezone 定义中表示所有时间的时区。其夏令时规则适用。
start 该周日交易时段开盘的本地时间。
previousDayStart true 表示时段在前一个日历日开盘。
end 该周日交易时段收盘的本地时间。
previousDayEnd true 表示时段在前一个日历日收盘。false 表示在该日收盘。

对示例的解读:周一时段在周日美国东部时间 17:00 开盘,在周一 17:00 收盘。每个时段都以其收盘所在的日期命名,因此周一至周五给出五个交易日,周六或周日没有蜡烛线。

2.2 关键要点

  • 时段是特定于工具的,不是通用的。
  • 交易时段开盘决定了日线蜡烛线何时开始以及日内蜡烛线网格从何处开始(M1 不受影响,因为交易时段开盘总是在整分钟上)。
  • 因此,不同的工具有不同的蜡烛线开始时间。
  • 当时段长度不是时间框架的倍数时,会形成部分蜡烛线。

3. 如何读取时段时间

工具:开盘 - 收盘  时区
EUR/USD:17:00 - 17:00 America/New_York
情况 含义 示例
开盘 = 收盘 24 小时时段,从一个边界到另一个边界 17:00 – 17:00 = 24 小时
开盘 < 收盘 时段在单一天内 08:45 – 17:55 = 9 小时 10 分钟
开盘 > 收盘 时段整夜延伸到第二天 17:00 – 15:15 = 22 小时 15 分钟

时段长度 = (收盘 − 开盘),如果结果为零或负数,则加上 24 小时。


4. 计算每天的蜡烛线

对于时间框架 T 和时段长度 D(以分钟为单位):

蜡烛线数量  = ceil(D / T)
最后蜡烛线长度 = D - (蜡烛线数量 - 1) * T

如果 D 能被 T 整除,则没有部分蜡烛线,最后一根蜡烛线具有完整长度 T。

计算示例

工具 D (分钟) 时间框架 完整蜡烛线 余数 总计 最后蜡烛线
EUR/USD 1440 H1 24 0 24 60 分钟
SUGAR.CMD 550 H1 9 10 10 10 分钟
SUGAR.CMD 550 M5 110 0 110 5 分钟
SUGAR.CMD 550 M15 36 10 37 10 分钟
USA500.IDX 1335 H1 22 15 23 15 分钟
UK100.IDX 510 H1 8 30 9 30 分钟
EUR/HUF 900 H4 3 180 4 180 分钟

5. 按时段类型形成蜡烛线

5.1 标准时段(整点开盘):EUR/USD

时段:17:00 – 17:00 America/New_York

周日 17:00 纽约时间   -> 日线蜡烛线(交易日"周一")开盘
  17:00 - 18:00      H1 蜡烛线 1
  18:00 - 19:00      H1 蜡烛线 2
  ...
  16:00 - 17:00      H1 蜡烛线 24
周一 17:00 纽约时间   -> 日线蜡烛线收盘,下一根日线蜡烛线开盘
  • 每个交易日恰好 24 小时。
  • 每天恰好 24 根 H1 蜡烛线,各 60 分钟长。
  • 每周 5 个交易日。

5.2 非整点开盘:SUGAR.CMD

trading_session_sugar

时段:08:45 – 17:55 Europe/London(550 分钟)

H1 蜡烛线 开始 结束 长度
1 08:45 09:45 60 分钟
2 09:45 10:45 60 分钟
3 10:45 11:45 60 分钟
4 11:45 12:45 60 分钟
5 12:45 13:45 60 分钟
6 13:45 14:45 60 分钟
7 14:45 15:45 60 分钟
8 15:45 16:45 60 分钟
9 16:45 17:45 60 分钟
10 17:45 17:55 10 分钟
  • 交易日从 08:45 开始,而不是 00:00 或 08:00。
  • 所有 H1 蜡烛线都从 :45 开始。
  • M5 蜡烛线从 08:45、08:50、08:55、09:00、09:05 等开始(与时钟对齐相同,因为 08:45 是 5 分钟的整数倍)。
  • M2、M10 和 M30 蜡烛线相对于时钟对齐而移位,例如 M30 蜡烛线从 08:45、09:15、09:45 等开始。
  • 日线蜡烛线在 17:55 收盘,下一根在下一个交易日 08:45 开盘。

5.3 夜间时段,最后一小时不完整:USA500.IDX

时段:17:00 – 15:15 America/Chicago(1335 分钟 = 22 小时 15 分钟)

时段在前一个日历日的 17:00 开盘,在交易日本身的 15:15 收盘。

H1 蜡烛线 开始 结束 长度
1 17:00(前一天) 18:00 60 分钟
2 18:00 19:00 60 分钟
… … … 60 分钟
8 00:00 01:00 60 分钟
… … … 60 分钟
16 08:00 09:00 60 分钟
… … … 60 分钟
21 13:00 14:00 60 分钟
22 14:00 15:00 60 分钟
23 15:00 15:15 15 分钟
  • 每天 23 根 H1 蜡烛线:22 根完整蜡烛线加一根 15 分钟蜡烛线。
  • 时段在 15:15 收盘,因此日线蜡烛线在那里收盘。
  • 下一根日线蜡烛线在同一天下午 17:00 开盘。
  • 15:15 至 17:00 之间没有蜡烛线。

6. 蜡烛线时间戳

时间戳与交易时段开盘对齐,而不是与时钟时间对齐。 这对给定时间框架是否有影响取决于交易时段开盘时间。

时间框架的蜡烛线网格相对于通常的时钟网格(例如 M30 的 :00、:30)移位,仅当交易时段开盘不是该时间框架的整数倍数时。否则,蜡烛线会在与时钟对齐相同的时间上。

  • M1 从不受影响。 交易时段开盘总是在整分钟上,因此 M1 蜡烛线无论如何都在每一分钟开始。
  • M2 及更长时间框架可能受影响。 例如,在 08:45 开盘的时段的 M2 蜡烛线在 08:45、08:47、08:49 等开始,而时钟对齐会给出 08:44、08:46、08:48 等。
  • 日线蜡烛线始终在交易时段开盘时开始。

按交易时段开盘的 M 时间框架示例:

交易时段开盘 M1 M2 M5 M10 M15 M30 H1 D1
17:00 (EUR/USD) 相同 相同 相同 相同 相同 相同 相同 17:00
08:45 (SUGAR.CMD) 相同 移位 相同 移位 相同 移位 移位 08:45
09:15 (COCOA.CMD) 相同 移位 相同 移位 相同 移位 移位 09:15

"相同"表示蜡烛线时间与时钟对齐一致。"移位"表示蜡烛线以基于交易时段开盘时间的时间开始,如 H1 的 08:45、09:45 等或 M30 的 08:45、09:15 等。

两种工具的蜡烛线开始时间:

工具 D1 H1 M5
EUR/USD 17:00 17:00, 18:00, … 16:00 17:00, 17:05, …
SUGAR.CMD 08:45 08:45, 09:45, … 17:45 08:45, 08:50, 08:55, 09:00, …

所有时间都在工具自己的交易时段时区。


7. 夏令时处理

每种工具都使用其自己的交易时段时区的夏令时规则:

时区 夏令时开始 夏令时结束
America/New_York, America/Chicago 3 月第 2 个星期日 11 月第 1 个星期日
Europe/London 3 月最后一个星期日 10 月最后一个星期日
UTC 从不 从不

后果:

  • 由于交易时段时间以本地时间表示,EUR/USD 始终在美国东部时间 17:00 开盘。用 UTC 术语,这是冬季 22:00 和夏季 21:00。
  • 美国夏令时变化不会移动伦敦基工具的蜡烛线,欧洲变化也不会移动美国基工具的蜡烛线。
  • 在美国和欧洲变化之间,两个地区之间的 UTC 偏移与正常情况不同。春季持续约 2-3 周,秋季持续约 1 周。它不再影响蜡烛线,因为每种工具都遵循自己的区。
  • 加密货币使用 UTC,因此从不受夏令时影响。

8. 结算时间(重要)

结算时间对所有工具都是东部时间 17:00 (America/New_York)。

结算时间是持仓展期的时刻。这是一个全球程序:对所有工具同时发生,无论工具的交易时段如何。

8.1 时段 vs. 结算时间

交易时段 结算时间
定义 按工具 全球,所有工具的一个时间
时区 工具自己的(纽约、芝加哥、伦敦、UTC 等) America/New_York (ET)
时间 变化(17:00、08:45、09:15、02:00 等) 17:00 ET
决定 蜡烛线何时开盘和收盘 持仓何时展期(可能有例外)

8.2 这在实践中意味着什么

  • 结算时间不移动蜡烛线边界。 蜡烛线遵循工具的时段。展期遵循全球 17:00 ET 时间。
  • 对于时段为 17:00 – 17:00 America/New_York 的工具(如 EUR/USD),日线蜡烛线边界和结算时间重合。
  • 对于所有其他工具,它们不同。例如,SUGAR.CMD 蜡烛线在伦敦时间 08:45 开始,而其持仓仍在 17:00 ET 展期。
  • 由于 17:00 ET 遵循美国夏令时,其 UTC 等效值在冬季为 22:00,在夏季为 21:00。

9. 为什么采用这种方法:演变

方法 1:UTC 蜡烛线 方法 2:全球"日期开始时区" 方法 3:特定于工具的时段(当前)
日线蜡烛线开始 00:00 UTC 一个全球区的 00:00(例如 EET) 每种工具自己的时段开盘
外汇周 6 天(部分星期日蜡烛线) 通常 5 天,夏令时不匹配期间的人为 6 天周,除非修补 总是 5 天
夏令时 忽略 EET 定义中需要硬编码的美国夏令时规则 按时区自然处理
可见副作用 错误的交易日历 过渡周期间 EUR/USD 日线蜡烛线出现在 23:00 EET 无
适合所有工具 否 否 是

9.1 方法 1:UTC 蜡烛线

日线蜡烛线从 00:00 到 24:00 UTC 运行,适用于每种工具。外汇在纽约时间 17:00 开盘(冬季约 UTC 22:00),因此出现部分星期日蜡烛线,给图表上每周 6 个交易日。

9.2 方法 2:全球日期开始时区

为所有工具选择了一个时区(例如 EET),日线蜡烛线由从该区 00:00 开始的小时蜡烛线组成。对于 EUR/USD,00:00 EET 等于 17:00 纽约,这解决了 6 天周。它的缺点:

  • 一个时区不适合每种工具。
  • 美国和欧洲夏令时变化发生在不同的日期。为了避免人为的 6 天周,美国夏令时规则在 EET 定义中硬编码,因此在过渡周期间,EUR/USD 日线蜡烛线在 23:00 EET 显示,用户问为什么。

9.3 方法 3:特定于工具的时段(当前)

每种工具定义何时交易以及在哪个时区交易。日线蜡烛线直接来自时段边界,因此不需要解决方法,时区夏令时规则的变化会自动采用。


常见问题和故障排除

为什么日价格变化、日最高价和日最低价与我对日历日的预期不同? 它们是根据工具的交易时段计算的。用于净价格和百分比变化的上一个收盘价是交易时段结束时的价格,最高价和最低价仅涵盖交易时段内的价格。

为什么我的 H1 蜡烛线从 :45(或 :15)开始? 工具的交易时段在该分钟开盘,所有蜡烛线都与交易时段开盘对齐。

M1 蜡烛线随交易时段变化吗? 不会。交易时段开盘总是在整分钟上,因此 M1 蜡烛线恰好像以前一样在每一分钟开始。M2 及更长的时间框架可能在交易时段开盘不是该时间框架的整数倍数时被移位(请参阅第 6 节)。

为什么当天最后一根蜡烛线比其他蜡烛线短? 交易时段长度不是时间框架的倍数。最终蜡烛线覆盖余数(请参阅第 4 节)。

为什么 USA500.IDX 有 23 根 H1 蜡烛线? 交易时段为 22 小时 15 分钟:22 个完整小时加一根 15 分钟蜡烛线。

为什么我的日线蜡烛线不从 00:00 开始? 它们从该工具的交易时段开盘开始,采用其自己的时区。

EUR/USD 和指数显示不同的"天"。这是错误吗? 不是。每种工具有自己的时段边界,因此日线蜡烛线和日价格统计数据在工具之间按日历日不可比。

夏令时变化后,我看到意外的时钟时间蜡烛线。 检查图表和工具使用的时区。时段本身保持在相同的本地时间,只有其 UTC 等效值移位。

我的工具的日线蜡烛线不从东部时间 17:00 开始。结算时间错误吗? 不是。结算时间对所有工具都是东部时间 17:00,独立于工具的交易时段和蜡烛线边界(请参阅第 8 节)。

JForex4 的哪个版本具有这个逻辑? JForex4 4.9.0 或更高版本。


词汇表

术语 定义
交易时段 工具的开盘时间、收盘时间和时区
交易时段开盘 所有蜡烛线对齐的参考点
部分蜡烛线 比其时间框架短的蜡烛线,因为时段在蜡烛线完成前结束
结算时间 东部时间 17:00,所有工具持仓展期的全球时间
展期 在结算时间执行的持仓展期程序
夏令时 夏令时
IANA 时区 基于区域的时区标识符,如 America/New_York 或 Europe/London