以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请教问题怎么解决?谢谢  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=167132)

--  作者:菩提长江
--  发布时间:2018/12/16 13:11:45
--  请教问题怎么解决?谢谢
1时收:CALLSTOCKEX(\'RB00\',vtCLOSE,5,0,0);
4时收:CALLSTOCKEX(\'RB00\',vtCLOSE,13,0,0);
日收:CALLSTOCKEX(\'RB00\',vtCLOSE,6,0,0);
周收:CALLSTOCKEX(\'RB00\',vtCLOSE,7,0,0);

1时均:ma(1时收,2),LINETHICK2;
4时均:ma(4时收,45),LINETHICK2;
日均:ma(日收,17),LINETHICK2;
周均:ma(周收,2),LINETHICK2;

1时做多:=ref(CROSS(1时收-0.79,1时均),1) and 1时收-0.79>1时均;
1时做空:=ref(CROSS(1时均,1时收+0.79),1) and 1时均>1时收+0.79;
4时做多:=ref(CROSS(4时收,4时均),1) and 4时收>4时均;
4时做空:=ref(CROSS(4时均,4时收),1) and 4时均>4时收;
日做多:=ref(CROSS(日收,日均),1) and 日收>日均;
日做空:=ref(CROSS(日均,日收),1) and 日均>日收;
周做多:=ref(CROSS(周收-1,周均),1) and 周收-1>周均;
周做空:=ref(CROSS(周均,周收+1),1) and 周均>周收+1;

当前资金:ASSET,NOAXIS;
持仓量:=HOLDING;

IF 1时做多 THEN
BEGIN
PLAYSOUND(HOLDING<0,\'E:\\Alarm.WAV\');
SELLSHORT(HOLDING<0,0,MARKET);
BUY(HOLDING=0,仓1时%,MARKET);
END

IF 4时做多 THEN
BEGIN
PLAYSOUND(HOLDING<0,\'E:\\Alarm.WAV\');
SELLSHORT(HOLDING<0,0,MARKET);
BUY(HOLDING=0,仓4时%,MARKET);
END

IF 日做多 THEN
BEGIN
PLAYSOUND(HOLDING<0,\'E:\\Alarm.WAV\');
SELLSHORT(HOLDING<0,0,MARKET);
BUY(HOLDING=0,仓日%,MARKET);
END

IF 周做多 THEN
BEGIN
PLAYSOUND(HOLDING<0,\'E:\\Alarm.WAV\');
SELLSHORT(HOLDING<0,0,MARKET);
BUY(HOLDING=0,仓周%,MARKET);
END

IF 1时做空 THEN
BEGIN
PLAYSOUND(HOLDING>0,\'E:\\Alarm.WAV\');
SELL(HOLDING>0,0,MARKET);
BUYSHORT(HOLDING=0,仓1时%,MARKET);
END

IF 4时做空 THEN
BEGIN
PLAYSOUND(HOLDING>0,\'E:\\Alarm.WAV\');
SELL(HOLDING>0,0,MARKET);
BUYSHORT(HOLDING=0,仓4时%,MARKET);
END

IF 日做空 THEN
BEGIN
PLAYSOUND(HOLDING>0,\'E:\\Alarm.WAV\');
SELL(HOLDING>0,0,MARKET);
BUYSHORT(HOLDING=0,仓日%,MARKET);
END

IF 周做空 THEN
BEGIN
PLAYSOUND(HOLDING>0,\'E:\\Alarm.WAV\');
SELL(HOLDING>0,0,MARKET);
BUYSHORT(HOLDING=0,仓周%,MARKET);
END
------------------------------------------------------
现在遇到的问题是:一小时图表中,日线的 开仓/反手 信号在当天的第一个小时就出现了。正常正确的应该是:在 日线图表中 单独加载 日线的 开仓/反手 信号,当天日线收盘价定K才出现 信号才对。周线的 开仓/反手 信号在当周的第一个小时就出现了,正常正确的应该是:周五最后一个小时定周线K才出现信号才对。2小时、4小时问题 同理。
我如何才能实现:一小时图表中,4小时、日线、周线等跨周期的信号在正确的位置出现 开平仓信号?同时反过来,在周线图表中,我如何能够实现日线、4小时、1小时等 小周期的信号和仓位的问题?同时,在 日线图表中,能否实现 跨大小周期的 周线、4小时线、1小时的 信号和不同的仓位问题?
谢谢

--  作者:FireScript
--  发布时间:2018/12/17 10:45:47
--  
 你这个需求描述的太笼统了啊。 毕竟是代码问题,建议还是详细描述,比如需要用代码实现什么样的具体操作。
简单看了下代码,看到一个可能存在的问题。
1时收:CALLSTOCKEX(\'RB00\',vtCLOSE,5,0,0);
4时收:CALLSTOCKEX(\'RB00\',vtCLOSE,13,0,0);
日收:CALLSTOCKEX(\'RB00\',vtCLOSE,6,0,0);
周收:CALLSTOCKEX(\'RB00\',vtCLOSE,7,0,0);

1时均:ma(1时收,2),LINETHICK2;
4时均:ma(4时收,45),LINETHICK2;
日均:ma(日收,17),LINETHICK2;
周均:ma(周收,2),LINETHICK2;

这里的均线是想求什么均线,指定周期上的均线值?如果是这样的话,这样计算是不对的。举个例子吧:
比如你1分钟周期,你想求五分钟周期的均线,你应该新建一个均线指标,然后在1分钟上引用五分钟周期的均线指标来获取这个值,这个要用stkind函数去实现。你这样把数据引用过来计算均值是有问题的。
比如你1分钟你引用大周期的五分钟,这样你连续几个1分钟K引用到的都会是一个大周期五分钟的值,这种情况下你求的均值根本不是五分钟周期上均线值的。
[此贴子已经被作者于2018/12/17 10:46:44编辑过]

--  作者:菩提长江
--  发布时间:2018/12/17 11:48:33
--  
@FireScript 你的理解是对的,能否帮忙将上述我的代码用 stkind函数 来实现?谢谢
我的目的就是:在1小时图表下,引用4小时、日线、周线 这三个大周期图表中的均线值,并且满足相对应的图表中 收盘价和均线值的关系,然后 开仓/反手,不同的周期对应不同的 开仓的 仓位。

--  作者:FireScript
--  发布时间:2018/12/17 12:19:06
--  
 stkind的使用有专门说明帖的,你先参考下这个帖子里面的说明尝试下: