金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
楼主: 100018518

如何做到一根K只发一个信号,后台交易一次。连续K发出同向信号后台连续交易。

[复制链接]

37

主题

9945

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-5-19 15:07 | 显示全部楼层
本帖最后由 技术006 于 2022-5-19 15:30 编辑

1.函数没有限制,但是函数用在不合适的地方,就像你现在把图表仓位相关的函数用在股票池就会存在问题。就像种子本身没有问题,种在不同的土地中,自然就会产生环境因素的影响。不可能指望盐碱地种水稻。
功能也一样,股票池的作用选股。你在选股策略中用到holding这类的,明确告诉你,必然和图表有差别,甚至每次执行holidng都会变。

2. 股票池执行的频率,就是你股票池中设置选项中执行方式决定的。(启动时定时器开始计时)例如:【一直执行,间隔时间10秒】
截图202205191504235769.png

3.你描述的交易在后台中,是可以独立完成,如果非要把图表+股票池+后台组合成的四不像,光机制上的差异影响,就不能让他们满足你5楼的需求。
还有用户非得在后台中结合图表的,实现所谓的持仓同步,10个人中9个都是完蛋的。交易功能的选择就一个标准:尽可能以一个独立功能完成、保证运行稳定。

注:我们是技术,只解决相关技术问题,不关心你是什么版本用户。并不是所有的需求我们都能够协助实现的,这个请理解和见谅
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

45

主题

257

帖子

262

积分

等级: 免费版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2022-5-19 16:00 | 显示全部楼层
技术006 发表于 2022-5-19 15:07
1.函数没有限制,但是函数用在不合适的地方,就像你现在把图表仓位相关的函数用在股票池就会存在问题。就像 ...

谢谢老师啦。有几个疑问请老师指明:
1、若执行的是跟图表一样的计算holidng都会变。我理解是不是同图表的Tick执行方式类似:如holding=0开仓,这时图表就会在出现信号时执行holding=holding+1,holding=0便不再成,策略顺序执行随后语句遇到holding=0都不成立,但是,随着下一个Tick信号,holding=0又再成立,整个K都不能控制开仓,直到K结束前的最后holding才固定为<>0。股票池的holding是执行holding=holding+1累加的,然后K最后变为1吗?
2、varibal变量与gloablvariabl的机制如何?有没有改变?

补充内容 (2022-5-19 16:16):
3、是不是股票池就是图表的轮询,只是固定起始K(K数量递增)变化为动态起始K且数量固定。
回复

使用道具 举报

37

主题

9945

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-5-19 16:20 | 显示全部楼层
1. 不完全正确,或者说你理解的只是个表象。图表最新k在没走完前,信号是可能存在变化的,因为close在变。在一根k上,只有一个最新的holding值,即使是全局变量也一样。所以,一根k上即使满足多次,它也不会累加。
序列变量的累加是k线与k线之间的。
股票池不能用的原因,是因为图表策略机制的问题,图表策略必须保证k线的起始位置不变(杠精策略除外),起始位置一样,才是保障策略信号稳定的前提条件之一,而股票池,使用的数量是指定的,随着数据的生成,股票池执行所用的数据起始位置也在前移。这才是很多时候有些人那图表看到的和其他功能对比的不一样 原因之一。即使数据量一样,也可能不同,还收到谁先执行的影响等因素。
2、varibal适用于图表交易,它是在图表使用的第一根k上完成初始化。(只要k线回刷到第一根k上,就会初始化)
gloablvariabl适用图表,它只在启动时,或者被加载时才起作用


截图202205191620517596.png
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

45

主题

257

帖子

262

积分

等级: 免费版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2022-5-19 16:31 | 显示全部楼层
技术006 发表于 2022-5-19 16:20
1. 不完全正确,或者说你理解的只是个表象。图表最新k在没走完前,信号是可能存在变化的,因为close在变。 ...

谢谢老师,慢慢的我有点理解了机制。
会不会就是我12#楼补充所说:是不是股票池就是图表的轮询,只是固定起始K(K数量递增)变化为动态起始K且数量固定。
holding=0对控制开仓过程:图表出现信号时执行holding=holding+1,holding=0便不再成,策略顺序执行随后语句遇到holding=0都不成立,但是,随着下一个Tick信号,holding=0又再成立,整个K都不能控制开仓,直到K结束前的最后holding才固定为<>0。
回复

使用道具 举报

37

主题

9945

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-5-19 18:59 | 显示全部楼层
本帖最后由 技术006 于 2022-5-19 19:04 编辑

1,股票池你可以理解和图表的轮训接近。
但是股票池起始位置会以后变(这是根本原因)。例如指定的计算数量是10根,那么本地无论什么时候都是最新的10根k参与计算。每次计算只要有新k出现,那么相对于上次计算的起始位置就会移动1根。
就是因为起始位置会变,所以理论持仓相关的结果如holding才可能会变。

holding=0对控制开仓过程:图表出现信号时执行holding=holding+1,holding=0便不再成,策略顺序执行随后语句遇到holding=0都不成立,但是,随着下一个Tick信号,holding=0又再成立,整个K都不能控制开仓,直到K结束前的最后holding才固定为<>0。

关于这个表述:有几处存在疑问的地方。你按照我给你的解释去理解。
1.如果你上面的表述都是在一根k上并且在此根k之前holding是=0的。例如在1分周期上,并且是每10秒接收到一笔tick数据(即理论上可以执行6遍策略)。那策略执行中,holding只和自己本次运行结果有关系。
如果第一遍执行时,这根k符合开多条件(比如第6行是此策略中的第一个下单语句),那么此时的holding=holding+1=1。(不含在开仓之后有加减仓的情况,如果有,那么holding就是执行到代码末尾出的结果),
第二次执行时,这个k又不符合开多条件(比如第6行是此策略中的第一个下单语句),那么此时的holding=0,第三次执行时,这个k又不符合开多条件(比如第6行是此策略中的第一个下单语句),那么此时的holding=0,
如果第四遍执行时,这根k符合开多条件(比如第6行是此策略中的第一个下单语句),那么此时的holding=holding+1=1。
如果第五遍执行时,这根k符合开多条件(比如第6行是此策略中的第一个下单语句),那么此时的holding=holding+1=1。
如果第六遍执行时,这根k符合开多条件(比如第6行是此策略中的第一个下单语句),那么此时的holding=holding+1=1。
【注:是否能下单,取决于图表程序化运行时的设置,能否捕捉到当前这根k中,1、4、5、6中的信号,该问题不是此处的重点】
依次类推完成6遍执行,其中每次执行的结果都不是基于上一遍执行的结果。只是最后一遍计算时k线走完时,所以结果是最后一遍的。
类似于你看书,每一页都会看上多遍(等于策略执行了多次)。而holding就像你对数做的注解(每次读的时候,都会把之前认为不合适的注解擦掉或者调整,也可能不动)。那么当要统计注解有多少处时,必然是从第一页一个个数。
至于每一页被擦掉的注解结果必然不会被统计。






金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

45

主题

257

帖子

262

积分

等级: 免费版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2022-5-19 19:39 | 显示全部楼层
技术006 发表于 2022-5-19 18:59
1,股票池你可以理解和图表的轮训接近。
但是股票池起始位置会以后变(这是根本原因)。例如指定的计算数 ...

老师辛苦,我自觉完全理解老师所说!我用几句话解释看对不对:股票池完全采用的是图表的运行固定轮询方式,只是起始K是动态的,加载的K线数是固定的。holding记录的是轮询时最后一个tick数据形成信号(成立或不成立)时的holding状态,与之前tick的轮询过程的holding状态无关,每次tick信号的hoding只会为该轮询赋值,依据是条件形成与否(策略的一遍执行,故称该轮询)。换句话说每个轮询holding都会回到原值!对于K记录就是最后一个Tick的holding赋值。

补充内容 (2022-5-19 19:41):
同理:对应的openprofit也是动态的,测试时时K结束的C
回复

使用道具 举报

37

主题

9945

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-5-19 20:15 | 显示全部楼层

完全正确

金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

45

主题

257

帖子

262

积分

等级: 免费版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2022-5-20 06:52 | 显示全部楼层
辛苦了
谢谢:不知道是不是bug?关于REF函数,轮询,K开始开仓,采用REF(xxx,1)函数,信号闪烁。
前一秒图
后一秒图


补充内容 (2022-5-20 06:54):
平仓条件:BP:=REF(bkcn0,1);
截图202205200649357400.png
截图202205200650269264.png
回复

使用道具 举报

37

主题

9945

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-5-20 08:09 | 显示全部楼层
你这2张图bp0结果是一样的。有差别的是bp2.
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

45

主题

257

帖子

262

积分

等级: 免费版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2022-5-21 07:35 | 显示全部楼层
谢谢老师的细心。但是我发现不是BP2的问题。调试时发现计算出了问题:BK1:=BP10=1&&BS=0&&(CD0||CD2);为何当BP10=1&&BS=1还会出现BK1=1?见图的调试结果

补充内容 (2022-5-21 07:38):
昨晚此处重复开仓!本应BK1=0得到限制!实盘测试运行于股票池,发现问题后回测调试结果。
截图202205210734238145.png
截图202205210735137109.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-5-30 14:48 , Processed in 0.104443 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表