Skip to content

Latest commit

 

History

History
143 lines (82 loc) · 5.33 KB

拿下腾子(1).md

File metadata and controls

143 lines (82 loc) · 5.33 KB

动量效应(momentum effect)是指股票价格在短期内会持续上涨或下跌的一种投资行为模式。它基于人类的心理偏差,即投资者倾向于相信过去的获胜者会继续获胜,从而推动股价朝着相同方向继续移动。

动量效应主要体现在以下几个方面:

  1. 短期内,股票价格呈现持续上涨或持续下跌的态势。这是因为投资者对过去表现良好的股票持有乐观预期,推动股价不断上涨;对过去表现不佳的股票则持有悲观预期,导致股价不断下跌。
  2. 动量效应通常持续时间较短,最常见的是5-10个交易日。超出这个时间范围,动量效应的影响力就会逐渐减弱。
  3. 动量效应主要出现在小市值、高波动性的股票中,这些股票更容易受到投资者情绪的影响。相比之下,大市值、低波动性的蓝筹股通常不太受动量效应的影响。
  4. 动量效应可能会被其他因素所抑制,如宏观经济形势的恶化、公司业绩的大幅下滑等。这些负面因素会打击投资者的信心,从而阻碍动量效应的持续。

GRU:

在我们的项目中,GRU模型的输入是过去k天的股票数据,包括开盘价、最高价、最低价和收盘价等特征。模型的输出包括三种形式:

  1. 价格模型:直接预测下一个交易日的股价。
  2. 概率模型:预测下一个交易日股价上涨的概率。
  3. 贝叶斯模型:将股价预测建模为一个随机过程,输出价格分布的参数。

通过在训练集、验证集和测试集上的实验对比,我们发现贝叶斯模型的表现最为稳定,能更好地捕捉股价的波动特征。因此我们选择贝叶斯模型作为基础,设计了两种交易策略:简单策略仅根据上涨概率进行买卖,高级策略则同时考虑预测股价。这些策略在随后的回测实验中取得了不错的收益表现。

解决RTOS中的中断嵌套问题

1. 中断嵌套的挑战

中断嵌套指的是一个中断服务例程(ISR)执行过程中,又发生了另一个优先级更高的中断。这带来以下挑战:

  1. 上下文保存和恢复的复杂性增加
  2. 可能导致栈溢出
  3. 影响系统实时性
  4. 增加中断延迟

2. 解决方案

2.1 使用单独的中断栈

为所有中断使用一个独立的栈,这样可以避免任务栈溢出的风险。

2.2 优化中断入口和出口代码

使用汇编优化中断处理的入口和出口代码,以最小化上下文切换开销。

2.3 实现中断嵌套计数

跟踪中断嵌套的层数,以正确处理上下文恢复。

2.4 使用中断优先级管理

合理设置中断优先级,避免不必要的嵌套。

2.5 使用临界区保护

在关键代码段使用临界区保护,防止中断嵌套导致的数据不一致。

3. μCOS中的具体实现

μCOS提供了一套完整的中断管理机制:

  1. OSIntEnter() 和 OSIntExit() 函数

    • 用于中断服务例程的入口和出口,管理中断嵌套计数
  2. OS_ENTER_CRITICAL() 和 OS_EXIT_CRITICAL() 宏

    • 用于临界区保护
  3. 中断延迟发布机制

    • 在中断中不直接做上下文切换,而是设置一个标志,在中断退出时再检查是否需要切换
  4. 避免在中断中执行耗时操作

  5. 合理设置栈大小,防止栈溢出

  6. 使用CMSIS-RTOS API可以简化中断处理

  7. 考虑使用硬件特性,如Cortex-M的尾链(tail-chaining)来优化性能

通过正确实现这些机制,我们可以有效地处理中断嵌套问题,确保系统的实时性和可靠性

RTOS移植中的上下文切换挑战

1. 为什么上下文切换是最大挑战

上下文切换是RTOS的核心功能,它直接影响系统的性能和可靠性。在移植过程中,它面临以下挑战:

  1. 硬件相关性强:需要深入了解目标处理器的架构
  2. 对时序要求高:必须在最短时间内完成切换
  3. 错误敏感:一旦出错可能导致整个系统崩溃
  4. 需要汇编实现:通常需要使用汇编语言来实现最高效率

2. 上下文切换的关键点

2.1 保存当前任务上下文

需要保存的信息包括:

  • 通用寄存器(R0-R12)
  • 程序计数器(PC)
  • 堆栈指针(SP)
  • 程序状态寄存器(PSR)

2.2 恢复新任务上下文

需要恢复上述所有保存的信息。

2.3 触发机制

在ARM Cortex-M系列处理器上,通常使用PendSV(可挂起的系统调用)中断来触发上下文切换。

3. 实现挑战

3.1 效率挑战

上下文切换需要在最短时间内完成,以确保实时性能。

3.2 浮点处理

如果使用了浮点单元(FPU),需要额外保存和恢复浮点寄存器

3.3 中断处理

需要正确处理嵌套中断和中断优先级,确保高优先级中断能够及时响应。

4. 调试挑战

上下文切换的调试特别困难,因为:

  1. 发生在最底层
  2. 涉及到硬件寄存器的变化
  3. 传统的断点调试可能影响系统行为

调试技巧:

  1. 使用逻辑分析仪监视关键信号
  2. 利用处理器的跟踪功能(如ARM的ETM)
  3. 在关键点设置标志位,通过LED或GPIO输出来指示执行流程

5. 优化策略

  1. 最小化保存和恢复的寄存器数量
  2. 利用处理器的特殊指令(如ARM的LDM/STM指令)
  3. 合理安排内存布局,提高缓存利用率
  4. 考虑使用硬件特性(如Cortex-M的尾链技术)