【问题标题】:Find the trading date every 2 weeks (if Saturday or Sunday, then show Friday date)每 2 周查找交易日期(如果是周六或周日,则显示周五日期)
【发布时间】:2019-06-08 19:15:09
【问题描述】:

对于回测交易系统,我需要每 2 周轮换一次仓位,但如果当天是周六或周日,我需要选择周五。

半月更新每月进行两次;月中和月末。 月中更新是在每个月的第 15 个日历日。如果 15 日是周末或节假日,更新将在 15 日之前的最后一个交易日进行。 例如,如果 15 日是星期六,则更新将在 14 日星期五收盘时进行。

我需要根据开始日期和结束日期返回轮换日期列表。 假设我需要从 2018 年 1 月 1 日到 2018 年 12 月 31 日每 15 天,它应该只返回基于上述规则的有效日期。

公式应适用于 Google Sheet 或 Excel。

我尝试了以下方法:

它并没有完全返回我需要的东西,因为 google sheet googlefinance 公式允许使用每日和每周间隔(1 或 7)。请参阅下面的 googlefinance 定义 (https://support.google.com/docs/answer/3093281?hl=en):

"interval - [ OPTIONAL ] - 返回数据的频率;“每日”或“每周”。 间隔也可以指定为 1 或 7。不允许使用其他数值。"

【问题讨论】:

    标签: excel google-sheets


    【解决方案1】:

    您的规格需要更加精确。您提供了多个不一致的间隔。例如:两周(每 14 天一次,并且总是在同一个工作日);每 15 天(在大多数时间段内不会是月中和 EOM);月中和月末。

    我建议为您所需的每个间隔开发公式。

    一旦您根据所需的间隔制定了这些相关公式,以避免日期落在周末(或系统需要的假期),您可以使用WORKDAY 函数:

    =WORKDAY(computedDate+1,-1, [holiday])
    

    如果您的computedDate 是在星期六或星期日;加上 1 天,然后减去前一个工作日,就会得到星期五。

    如果您的交易间隔是每两周一次,您只需确保第一个日期不是周六或周日。对于其他间隔,您可能必须将公式应用于每个 computedDate

    【讨论】:

    • 谢谢。详细规格是:半月更新每月进行两次;月中和月末。月中更新是在每个月的第 15 个日历日。如果 15 日是周末或节假日,更新将在 15 日之前的最后一个交易日进行。例如,如果 15 日是星期六,则更新将在 14 日星期五收盘时进行。
    • @Steve 好吧,只需将用于计算日期的公式嵌套在我提供的公式中(代替computedDate)。在 Excel 中,您可以使用 EOMONTH 函数计算月末,使用 EDATE 函数计算 15 日。我不知道谷歌表格是否有类似的东西,但它可能有。
    • 我正在努力寻找一种方法来替换 computedDate,因为每个月要生成 2 个不同的日期。我可以用 EDATE 函数或 EOMONTH 函数替换 computedDate,但是如何交替每个日期?
    • @Steve 好吧,我相信我回答了你标题中关于周末调整的问题。我建议您针对当前有关日期序列的问题提出一个新问题。并在问题中明确说明您需要什么,尝试过什么以及问题出在哪里。可能有助于阅读 How do I Ask a Good QuestionHow to create a Minimal, Complete, and Verifiable example 的帮助主题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多