快速计算平台matlab到C++ 代码转换

来源:互联网 发布:apache camel中文教程 编辑:程序博客网 时间:2024/06/09 20:00
  1. main.m是类似于主函数,是整个程序的骨干,所引用的函数如果不是系统默认的函数就是那么就是引用其他的文件

  2. C++的数据是串行的,而matlab的程序是批处理的程序。批处理是指一次加载所有数据把需要用到的参数先算完,然后组合。而串行是指当需要计算的时候我才计算,不需要的计算的时候可能先不算

  3. main.m文件中26行到30行表明要加载数据的类型,33行 加载数据到data,是自己写的工具类,具体内容需要到loading_data.m去看。

  4. main.m文件41行调用 wald_wolfowitz_test,返回的 是计算后的所有lnprice

  5. wald_wolfowitz_test.m文件中6-9行是dataflag的初始化,就是查看所有data_flag是正还是负。
    15行是遍历剩下的数据集。对应于momententer.cpp中136行

  6. main.m文件46行中调用了par_calibration方法,par_calibration.m中31行调用了hitting_time_method方法。

  7. hitting_time_method.m文件中,第33-51行使用滑动窗口,对应于momentEnter.cpp中191-203中计算search_index,后面类似计算出sign_mu ,mu,sigma 在hitting_time_method.m文件第70多行的时候

  8. par_calibration.m文件中,44-54行类似于231-236行中。

  9. main.m文件中,48-49行计算lossing_stop_down和lossing_stop_up. 调用了moment_tum_trading_strategy函数

  10. 在moment_trading_strategy.m文件中,52行是计算相应的a, 函数中有fsolve函数。fsolve是计算sum_function的值,类似于梯度下降。fsolve函数终止条件是计算400次或者算出的结果A达到某个条件。C++没有fsolve函数,需要自己实现

  11. 之前调用了sum_function,打开sum_function.m. 我们可以看到第28行,最后一行计算出F即sum_function需要的参数有par,a和expected_loss。expected_loss是已知的,a是已知的,par需要靠A算出来,没法直接算出来。所以我们需要预先把par算出来,才能实现fsolve函数

  12. 所以momentEnter.cpp中 246-256中第一个循环是计算出par 下面才是fsolve的C++实现。

原创粉丝点击