首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我的pinescript代码中回测数据为0的原因

在Pinescript代码中,回测数据为0的原因可能有以下几种情况:

  1. 数据源问题:回测数据为0可能是因为数据源中缺少相应的数据或者数据源本身存在问题。建议检查数据源是否完整,并确保数据源的准确性和可靠性。
  2. 数据处理问题:回测数据为0可能是因为在代码中对数据进行处理时出现了错误。可以检查代码中的数据处理逻辑,确保没有出现错误或者漏洞。
  3. 数据获取问题:回测数据为0可能是因为在获取数据时出现了问题。可以检查代码中的数据获取逻辑,确保数据能够正确地被获取到。
  4. 数据格式问题:回测数据为0可能是因为数据格式不正确。可以检查数据的格式是否符合代码的要求,并进行相应的格式转换或处理。
  5. 其他问题:回测数据为0还可能是由于其他未知的问题导致的。可以尝试通过调试代码、查看日志等方式来定位和解决问题。

总之,回测数据为0可能是由于数据源、数据处理、数据获取、数据格式等多种因素导致的。在解决问题时,可以逐一排查并修复可能存在的问题。如果问题仍然存在,建议参考Pinescript的官方文档或者向Pinescript社区寻求帮助。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

公开代码,我的量化程序的开发历程!

于是我很快花了一两天时间写了一个简单的回测程序(看了一下,这个程序还在我的硬盘里,1000行左右的代码,逻辑比较完整,不但可以回测,还可以暴力搜索参数,也是开始回测我设计的那些交易系统。...当然这个过程中也暴露出很严重的问题,就是没有按照最终希望的交易过程去建立回测过程(回测和实盘不一致,回测策略终究不靠谱),这使得接下来的一个阶段一直停滞不前。...然后随后几天我再接再厉,策略中增加大盘指数的判断,年化收益上升到48%,用2010-2018年的数据回测,年化收益也有38%。...后来,从重新设计了轮动回测程序,并且进行了深度代码优化,使得单次执行的时间缩短到非常小,最后又经过缓存的优化,轮动执行100次,只需要不到10秒的时间,这才使得我可以把回测的重点从全A平均回测转到随机选股轮动回测...回测性能数据 补充一下有关性能的数据。 首先回测全A平均收益和轮动是不一样的。所谓全A平均收益回测,是指用交易策略对每一个股票单独进行回测,每个股票是独立的,所以可以利用CPU多核并行能力。

99540

量化交易 平台介绍

原因有三: 没有完整的股票行情和基本面数据1. 回测平台是载体, 重点在于快速验证策略1....证券投资机构各自使用的回测框架不同, 没用通用的框架 RiceQuant 平台介绍 网址: https://www.ricequant.com/welcome/ 注册 注册我就不多赘述了, 小伙伴们请自行完成...创建策略 首先我们先点击进入平台, 如图: 然后我们点击新建策略, 如图: 在新建策略中我们点击代码策略, 如图: 在策略名称中我们填入 “我的第一个策略”, 如图: 策略页面功能介绍...策略页面的样子: 各个区块的功能: 如何完成一个策略 选择策略的运行信息: 选择运行区间和初始资金- 选择回测频率- 选择股票池 编写策略的逻辑: 获取股票行情, 基本面数据- 选择哪些股票...在 handle_bar 方法中实现策略具体逻辑, 包括交易型号的产生, 订单的创建. handle_ bar 内的逻辑会在每次 bar 数据更新的时候被触发.

95110
  • Node写的毕设项目100人并发就撑不住,我是这样解决的

    我的毕设项目是为学院编写一个在线 SQL 考试系统,目标是支撑 300 人同时进行在线 SQL 编程考试,全栈开发。...我开启一次从 0 到 100 递增的 PTS 并发压测,结果如下: 可见从 100 并发开始,就出现了无法忽略的异常请求返回数量,5万请求860个异常,系统已经撑不住了,然后阅读生成的测试报告,发现几乎所有异常都发生在一个接口...定位并缩小问题范围 查找异常接口的Network数据之后发现,该接口是用户登录接口,怎么会呢?一个和业务本身无关的接口竟然成了系统瓶颈,惊讶片刻,我开始寻找更多信息,以确定原因。...关键代码如下: // 存储回调函数的map结构,用于在子进程给主进程返回事件时,进行相应的回调处理 const callbackMap = new Map(); /** * 为子进程创建各种类型的事件绑定...解决问题的办法很简单,申请一个公网 ip 服务器即可。 进程间共享状态怎么办 Node进程间状态共享有两种思路: 将状态存储在公共的Redis数据库中,所有进程对它进行存取。

    1K10

    记一次 JAVA 的内存泄露分析

    背景 前不久,上线了一个新项目,这个项目是一个压测系统,可以简单的看做通过回放词表(http请求数据),不断地向服务发送请求,以达到压测服务的目的。...,那也就10多万,怎么会有20多万呢,我们在代码中也没有找到对此有显示声明实例化的地方。...我们通过对 httpasyncclient 发送请求的源码进行跟踪了一下后发现,其内部实现是将回调类塞入到了http的请求类中,而请求类是放在在缓存队列中,所以导致回调类的引用关系没有解除,大量的回调类晋升到了...核心代码分析: ? ? ? 代码优化 找到问题的原因,我们现在来优化代码,验证我们的结论。...因为Listcache1中会保存回调对象,所以我们不能缓存请求类,只能缓存基本数据,在使用时进行动态的生成,来保证回调对象的及时回收。

    2.6K50

    Python零基础学习

    ,目标持仓比例) 比例在 1 与 0 之间#此处将持仓比例调整为 0 ,则等同于全部卖出order_target_percent(context.stock, 0) 6 策略回测 以上,我们用几行代码就把策略的框架完整地搭建起来了...7 从日回测到分钟回测: 在循环部分, handle 函数根据选择的频率(日、分钟)循环运行,在以上的日回测中, handle 内的代码会每日被触发一次 def handle(context, bar_dict...before_trading(context): # 设定并重置 context.fired 的值为 0 context.fired = 0 #从回测的开始日期至结束日期,根据选择的频率...会被每天重置为 0 在 handle 函数中,我们加入了判断,如 context.fired 为 0 ,则继续执行下面的代码,否则本次循环结束。...年 1 月 4 日至 2016 年 10 月 4 日,用资金 10 万元进行分钟回测吧,请点击 运行回测 8 模拟交易: 模拟交易通过实时的分钟切片数据进行撮合,也就是 handle 函数会每分钟被触发一次循环

    1.1K70

    AI股市预测实战:用LSTM神经网络预测沪深300未来五日收益率

    回测:得到 LSTM 预测结果后,若 LSTM 预测值小于 0,则记为 - 1,若大于 0,记为 1。...每个模型做两次回测,第一次回测(后文简称回测 1)为直接以 LSTM 预测值在沪深 300 上做单:若 LSTM 预测值为 1,买入并持有 5day(若之前已持仓,则更新持有天数),若 LSTM 预测值为...- 1,若为空仓期,则继续空仓,若已持有股票,则不更新持有天数; 第二次回测(后文简称回测 2)为以 LSTM 为择时指标,与 StockRanker 结合在 3000 只股票做单:若 LSTM 预测值为...2) 在权重上施加正则项探究 神经网络的过拟合:在训练神经网络过程中,“过拟合” 是一项尽量要避免的事。神经网络 “死记” 训练数据。...过拟合意味着模型在训练数据的表现会很好,但对于训练以外的预测则效果很差。原因通常为模型 “死记” 训练数据及其噪声,从而导致模型过于复杂。

    3.4K62

    vn.py源码解读(一、环境配置与回测初试)

    有人说,为什么学那么多的回测平台呀。...其实我个人觉得,做cta的话,两个回测平台还是要的,这样,当你的策略出现和你预计不符,而你有无法在代码逻辑层面找到问题的时候,你就可以用另外一个平台试一下,来看看到底是你的策略本身就不行,还是你的代码有着当前水平无法察觉的问题...闲话不说,总而言之,个人觉得,vn.py还是一个很不错的期货cta的平台,而且,不仅仅局限于回测,还可以直接当一个交易系统使用,整个代码框架也是相当不错的,只是似乎对刚入门的小朋友不是特别友好,入门级别的教程比较少...3.例子         和别的回测项目一样,我们要现有一个回测的核心,在vn.py中叫做engine,引擎,还是比较好理解的。...# 设置回测使用的数据 engine.setBacktestingMode(engine.BAR_MODE) # 设置引擎的回测模式为K线 engine.setDatabase(MINUTE_DB_NAME

    2.8K20

    Backtrader 来了!

    ,Backtrader 以“大脑”cerebro 为统一的调度中心,数据、策略、回测条件等信息都会导入 cerebro 中,并由 cerebro 启动和完成回测,最后返回回测结果: ?...本文省去了选股过程,直接提供最终的选股结果,然后对选股结果做回测,具体的回测条件如下: ? 数据说明 测试用到 2 个数据集,一个是日度历史行情数据,另一个是最终的选股结果数据集 。...在导入多只股票数据时需注意以下细节: ▪ 各股交易日不统一:上市日期不一致、退市日期不一致、回测区间内出现停牌等,都会使得不同股票各自的交易日数量不统一,所以要以回测区间内所有交易日为基础,对每只股票缺失的交易日进行补齐...; ▪ 行情数据缺失:在补齐交易日过程中,会使得补充的交易日缺失行情数据,需对缺失数据进行填充。...比如将缺失的 volume 填充为 0,表示股票无法交易的状态;将缺失的高开低收做前向填充;将上市前缺失的高开低收填充为 0 等; ▪ 股票与行情数据的匹配:通过设置 adddata() 方法中 name

    6.5K105

    用 Python 实现你的量化交易策略

    Python 的学习者中,有相当一部分是冲着爬虫去的。因为爬虫可以帮你解决很多工作和生活中的问题,节约你的生命。不过 Python 还有一个神秘而有趣的应用领域,那就是量化交易。...通过这些平台,你可以很方便地实现自己的交易策略,进行验证,甚至对接交易系统(由于政策原因,现在很多交易接口暂停开放)。 在交易策略方面,我是外行(虽然曾经也有证券从业资格)。...以优矿为例,注册之后,在“开始研究”页面,新建一个 Notebook,就可以开始用 Python 写你自己的策略。 ? 右上角的下拉框选择“策略”,就会帮你自动填写上策略回测的基本结构代码。 ?...开始的一些变量是对回测的基本配置。initialize 里可以做一些初始化的工作。handle_data 则是回测代码的核心,用来实现每个交易日(或每分钟)的交易指令。...具体的变量含义,这里不做特别细致的解释,文档里都有说明。仅从命名和注释里也可以看出,设定了回测的时间,股票池,资金,交易频率等。

    5.2K83

    一位从事量化交易的实战者,手把手带你入门量化交易!

    一旦确定了某个或某套策略组合,就需要根据历史数据对其盈利能力进行测试,这就属于回测的范畴了。 策略回测 回测的目的是提供证据,以证明通过上述过程确定的策略在应用于历史数据和样本外数据时是能获得收益的。...这就为该策略在“现实世界”中的表现设定了预期。然而,由于种种原因,回测并不能完全保证策略的成功。这或许是量化交易中最为微妙的领域了,因为这其中有许多的偏差,需要经过深思熟虑尽量消除偏差。...我们会讨论一些常见的偏差类型,比如前瞻性偏差,幸存者偏差和优化偏差(也称“数据透视”偏差)。回测中的其他重要领域还包括历史数据的可用性和清洗程度,考虑实际的交易成本和选择一个稳定的回测平台。...我不会Tradestation类似的软件或是Excel和MATLAB这类工具做过多研究,因为我相信可以搭建一个完整的自用技术栈,原因如下:这样做的一个好处是,哪怕是使用最先进的统计策略,都可以紧密地集成化回测软件和执行系统...我个人偏好是尽可能多地去搭建自己的数据采集器,策略回测和执行系统。如果你的资金要冒险投资,那么对系统进行过全面测试并了解其缺陷和特定问题后,你晚上睡觉才能安眠吧?

    2K31

    流量录制与回放技术实践

    启动前、结束后、其他标志性事件结束后都会向压测系统回传状态 对录制和回放产生数据进行处理与回传 打日志,记录 GoRepaly 输出的状态数据,便于后续排查 GoReplay 本身只提供最基本的功能,...”的状态给压测服务,随后调起 GoReplay 录制结束,GoReplay 退出,Gor 控制器回传“录制结束”状态给压测服务 Gor 控制器回传其他信息给压测系统 压测服务判定录制任务结束后,通知压测机将录制数据读取到本地文件中...答案如下: 首先判断数据长度是不是大于等于协议头的长度,即 16 个字节 判断数据前两个字节是否为魔数 0xdabb 判断第17个比特位是不是 1,不为1可丢弃掉 通过上面的检测可快速判断出数据是否符合...原因是我们的插件反序列化时拿不到接口参数的类型信息,所以我们把参数反序列化成了 Map 对象,这样 this$0 这个字段和值也会作为键值对存储到 Map 中。...之后,把改动的代码发布到线上,对于一些比较大的应用,一次发布涉及到几十台机器,还是相当耗时的。接着,把接口参数数据从日志文件中清洗出来。最后,还要把这些数据转换成压测脚本。

    6.5K30

    【量化核武】美丽的回测——教你定量计算过拟合概率

    摘要 金融数据的信噪比很低,使得过拟合成为回测中的必然。本文介绍一个量化分析框架,它可以计算回测中过拟合的概率,有助于评价量化策略的有效性。...众所周知,金融数据中的信噪比很低。当我们在回测中尝试了大量的参数时、或是在选股时测试了大量的因子后,找出来效果最好的一组参数或者一个因子总能获得非常不错的效果。...增大 N 对应着在回测中增加 number of tests,增大 V(SR) 对应着完全不考虑业务依据而漫无目的的扩大参数的取值范围。这些都是造成过拟合的原因。...我之前的文章《出色不如走运 (II)》对 Dr. Harvey 的一些研究进行了梳理,而本文介绍的回测中过拟合概率的量化手段则是 Dr....回测中有很多门道(见《科学回测中的大学问》);回测准确与否对于该策略在实盘外的表现至关重要。由于金融数据的信噪比极低且难以分辨出数据中哪些是噪音、哪些是因果关系,这使得回测中或多或少都会存在过拟合。

    1.9K41

    研报复制(五):单向波动差择时

    回测区间:20060406-20190531 标的:沪深300指数 语言:python 为了方便与报告结果相对比,回测区间起点与报告相同,终点设置为上月末。需要数据和代码后台回复“单向波动差”。...首先给出报告的回测结果,这里移动平均窗宽为60日 ? 这里的净值比 = 策略净值/沪深300归一化到20060406 ? 我回测的60日结果如下 ? 10日与60日对比如下 ?...报告最终回测的效果跟之前比非常逆天,净值曲线回撤很小,很平稳。 ?...但是报告中并没有给出具体的RPS值跟移动平均窗宽之间的关系,所以就只能自己尝试了,这里我尝试了一个很简单的逻辑:RPS的值都在0-1之间,设定最大窗宽为60,最小为1,根据RPS对窗宽做一个线性的插值,...最终回测结果如下 ? 结果相比于之前回撤降低了很多,但远远达不到报告中的逆天效果,而且我这里还是没有考虑交易成本的,代码调整比较简单,略过。

    3.2K53

    BackTrader 中文文档(十三)

    处理 2 百万根蜡烛超出核心内存 所有这些都可以改进,如果考虑到backtrader有几个配置选项用于执行回测会话,包括优化缓冲区并仅使用最少需要的数据集(理想情况下仅使用大小为1的缓冲区,这仅在理想情况下发生...) 让我们与之前未经优化的运行进行比较 而不是花费超过76秒预加载数据,因为数据没有预加载,回测立即开始 总时间为114.32秒,比135.93秒快了15.90%。...,用户解释了希望复制在例如 TradingView 中获得的回测结果,这在当今非常流行,或者其他一些回测平台。...即使不真正了解 TradingView 中使用的语言 Pinescript,并且对回测引擎的内部没有任何了解,仍然有一种方法可以让用户知道,跨平台编码必须谨慎对待。...[0]: self.buy() 虽然这只是一个小例子,但它展示了由于指标被编码为1栏差异而导致的回测结果可能会有所不同。

    41100

    LSTM Networks在股票市场上的探究

    取为1;如果预测值0,取为-1.为回测做准备for i in range(len(predictions)): if predictions[i]>0: predictions...第一次回测(后文简称回测1)为直接以LSTM预测值在沪深300上做单:若LSTM预测值为1,买入并持有5day(若之前已持仓,则更新持有天数),若LSTM预测值为-1,若为空仓期,则继续空仓,若已持有股票...,则不更新持有天数; 第二次回测(后文简称回测2)为以LSTM为择时指标,与StockRanker结合在3000只股票做单:若LSTM预测值为1,则允许StockRanker根据其排序分数买入股票,若LSTM...神经网络“死记”训练数据。过拟合意味着模型在训练数据的表现会很好,但对于训练以外的预测则效果很差。原因通常为模型“死记”训练数据及其噪声,从而导致模型过于复杂。...由回测结果可以看出,加入指示标后的LSTM模型收益率相对下降,但是回撤更小。LSTM预测值小于0的时间段覆盖了沪深300上大多数大幅下跌的时间段,虽然也错误地将一些震荡或上涨趋势划归为下跌趋势。

    1.5K72

    setInterval 和 hooks 撞在一起,翻车了~

    关注 ▲程序员自习室▲ 和众多前端精英,一起向上生长 前言 事情是这样子的,周末加班赶项目,有个同步数据功能为异步进程,需要写个轮询来获取同步结果。这功能简单啊,轮询我熟啊!...于是,我不假思索写下的功能代码,测试都懒得测直接部署移测。...这也是我写的轮询没有生效的原因!...另一方面,由于设置了 savedCallback ref,我们可以获取到最后一次渲染时设置的回调,然后在计时器触发时调用。这下数据都有记忆了,问题被解决了,不过这也太麻烦了,可读性很差!...我希望我们的代码最后是下面这样子的: function Counter() { const [count, setCount] = useState(0); useInterval(() =>

    1.3K20

    开发 | AI股市预测实战:用LSTM神经网络预测沪深300未来五日收益率

    回测:得到 LSTM 预测结果后,若 LSTM 预测值小于 0,则记为 - 1,若大于 0,记为 1。...每个模型做两次回测,第一次回测(后文简称回测 1)为直接以 LSTM 预测值在沪深 300 上做单:若 LSTM 预测值为 1,买入并持有 5day(若之前已持仓,则更新持有天数),若 LSTM 预测值为...- 1,若为空仓期,则继续空仓,若已持有股票,则不更新持有天数; 第二次回测(后文简称回测 2)为以 LSTM 为择时指标,与 StockRanker 结合在 3000 只股票做单:若 LSTM 预测值为...过拟合意味着模型在训练数据的表现会很好,但对于训练以外的预测则效果很差。原因通常为模型 “死记” 训练数据及其噪声,从而导致模型过于复杂。...回测结果如图 6,加入正则项之后回测 1 和回测 2 的最大回撤均有下降,说明加入正则项后确实减轻了模型的过拟合。

    1.3K50

    朋友的惨痛亲历:一行代码,百万人民币打水漂

    我们团队负责的是一个底层核心系统,链路上会有上百个应用依赖,为了应对大促这种超高流量的场景,大促前有一轮又一轮的压测。在首轮压测时,便发现我们的系统上有个数据库表不支持压测,导致压测计划无法进行。...因此团队有位同事 A 就起了紧急迭代,针对业务依赖的这个数据库表做压测改造,代码变更也就几行。 与此同时,同事 B 在这个系统上也想改下代码,就搭了压测改造的车,两块变更一起发布。...代码回滚后,上游系统之前异常的错误码逐步恢复到基线水平,客满的同事也反馈不再有新的投诉进来。至此,止血工作完成。 03 事件缘起和善后 接下来就是定位原因和善后工作。...由此看来,故障的直接原因是同事 B 的代码误提交,但事实上在提交后的各个环节里都有疏漏的地方。不久之后,同事 B 和负责测试的同事就离职了。...04 我的感受和思考 当时还是职场小菜鸟的我懵懵懂懂,亲历了这么一次大故障,让我感受到代码的强大,强大的影响力和破坏力。 「敬畏代码」不再是耳边的循循教导,而是要落实到工程实践中。

    36830

    python程序化交易实例-用 Python 实现你的量化交易策略「建议收藏」

    Python 的学习者中,有相当一部分是冲着爬虫去的。因为爬虫可以帮你解决很多工作和生活中的问题,节约你的生命。不过 Python 还有一个神秘而有趣的应用领域,那就是量化交易。...通过这些平台,你可以很方便地实现自己的交易策略,进行验证,甚至对接交易系统(由于政策原因,现在很多交易接口暂停开放)。 在交易策略方面,我是外行(虽然曾经也有证券从业资格)。...以优矿为例,注册之后,在”开始研究”页面,新建一个 Notebook,就可以开始用 Python 写你自己的策略。 右上角的下拉框选择”策略”,就会帮你自动填写上策略回测的基本结构代码。...开始的一些变量是对回测的基本配置。initialize 里可以做一些初始化的工作。handle_data 则是回测代码的核心,用来实现每个交易日(或每分钟)的交易指令。...具体的变量含义,这里不做特别细致的解释,文档里都有说明。仅从命名和注释里也可以看出,设定了回测的时间,股票池,资金,交易频率等。

    2.9K30

    论代码级性能优化变迁之路(一)

    一、前言 大家好,很久没有和大家一起讨论技术了,那么今天我将和大家一起探讨我负责的某项目的性能变迁之路。...Paste_Image.png 注: 在上述事例中,会话B会抛出死锁异常,死锁的原因就是A和B二个会话互相等待。...Paste_Image.png 项目在压测的过程中,cpu一直居高不下,那么通过分析得出如下分析: 数据库连接池影响 我们针对线上的环境进行模拟,尽量真实的在测试环境中再现,采用数据库连接池为咱们默认的...方案二: 使用AKKA技术框架,下面是我以前写的一个简单的压测情况: http://www.jianshu.com/p/6d62256e3327 4、日志打印问题 先看下面这段日志打印程序: QuataDTO...Paste_Image.png 再看压测图如下: ? Paste_Image.png ? Paste_Image.png 原因可以根据log4j源码分析如下: ?

    47020
    领券