以文本方式查看主题

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

--  作者:smarter
--  发布时间:2010/7/19 11:32:06
--  公式编辑中的问题

VARIABLE: t_time=235959;
...

IF tj1 THEN BEGIN
t_time:=CURRENTTIME;
END

 

结果t_time显示的是电脑系统时间,不断在变.

 

请问: 如何得到满足条件tj1时的精确时间(到秒)? 谢谢!

 


--  作者:金字塔
--  发布时间:2010/7/19 12:00:12
--  

用t_time:=time0;试试


--  作者:weiwei
--  发布时间:2010/7/19 12:31:12
--  
CURRENTTIME返回的当前计算机时间,本身就是精确到秒的
--  作者:smarter
--  发布时间:2010/7/19 12:52:24
--  
以下是引用金字塔在2010-7-19 12:00:12的发言:

用t_time:=time0;试试

谢谢!
time0在K线周期下, 不能精确到秒
 
以下是引用weiwei在2010-7-19 12:31:12的发言:
CURRENTTIME返回的当前计算机时间,本身就是精确到秒的

 

谢谢!

请问: 如何得到满足条件tj1时的精确时间(到秒)?  而不是不断在变. 

[此贴子已经被作者于2010-7-19 12:58:45编辑过]

--  作者:weiwei
--  发布时间:2010/7/19 13:20:46
--  

VARIABLE: t_time=235959;
...

IF tj1 THEN BEGIN
t_time:=CURRENTTIME;
END

 

你上述公式就完全可以实现你所要求的功能,但至于为什么时间不断在变,你应该仔细查查为什么tj1一直是大于0的条件为真


--  作者:smarter
--  发布时间:2010/7/19 15:47:16
--  

VARIABLE: t_SK=235600,t_BP=235600,t_BK=235600,t_SP=235600;
DP:=MINDIFF;
ma1:ma(c,10);
ma2:ma(c,20);
BK:=cross(ma1,ma2);
SK:=cross(ma2,ma1);

IF HOLDING>0 THEN BEGIN
t_SK:=235600;
t_BP:=235600;
END
IF HOLDING<0 THEN BEGIN
t_BK:=235600;
t_SP:=235600;
END

IF BK and HOLDING<0 THEN BEGIN
tSELLSHORT(BK,0,lmt,DYNAINFO(19)+DP);
SELLSHORT(BK,0,thisclose);
t_BP:=CURRENTTIME;
END

IF BK and HOLDING=0 THEN BEGIN
tBUY(BK,1,lmt,DYNAINFO(19)+DP);
BUY(BK,1,thisclose);
t_BK:=CURRENTTIME;
END

IF SK and HOLDING>0 THEN BEGIN
tSELL(SK,0,lmt,DYNAINFO(18)-DP);
SELL(SK,0,thisclose);
t_SP:=CURRENTTIME;
END

IF SK  and HOLDING=0 THEN BEGIN
tBUYSHORT(SK,1,lmt,DYNAINFO(18)-DP);
BUYSHORT(SK,1,thisclose);
t_SK:=CURRENTTIME;
END
tSK:t_SK;
tBP:t_BP;
tBK:t_BK;
tSP:t_SP;
多:BK;
空:SK;

 

请在恒指\\ES\\外汇等正在交易的品种中看, 至少总有一项随计算机时间而变化, 而多\\空条件为0, 是不是该函数的一个BUG


 


--  作者:admin
--  发布时间:2010/7/19 15:49:48
--  

你上述公式过于复杂,我们无法帮你做出判断,希望你能简化你的公式,达到能描述问题原因即可


--  作者:smarter
--  发布时间:2010/7/19 16:12:41
--  

简化的公式

 

VARIABLE: t_SK=235600,t_BK=235600;
DP:=MINDIFF;
ma1:ma(c,10);
ma2:ma(c,20);
BK:=cross(ma1,ma2);
SK:=cross(ma2,ma1);

IF HOLDING>0 THEN BEGIN
t_SK:=235600;
END
IF HOLDING<0 THEN BEGIN
t_BK:=235600;
END

IF BK THEN BEGIN
tSELLSHORT(HOLDING<0,0,lmt,DYNAINFO(19)+DP);
SELLSHORT(HOLDING<0,0,thisclose);

tBUY(HOLDING=0,1,lmt,DYNAINFO(19)+DP);
BUY(HOLDING=0,1,thisclose);
t_BK:=CURRENTTIME;
END

IF SK THEN BEGIN
tSELL(HOLDING>0,0,lmt,DYNAINFO(18)-DP);
SELL(HOLDING>0,0,thisclose);

tBUYSHORT(HOLDING=0,1,lmt,DYNAINFO(18)-DP);
BUYSHORT(HOLDING=0,1,thisclose);
t_SK:=CURRENTTIME;
END
tSK:t_SK;
tBK:t_BK;
多:BK;
空:SK;

 

请在恒指\\ES\\外汇等正在交易的品种中看, tSK和tBK至少总有一项随计算机时间而变化, 而此时多\\空条件为0.

请帮忙解决, 谢谢!

 

 


 

[此贴子已经被作者于2010-7-19 16:31:40编辑过]

--  作者:admin
--  发布时间:2010/7/19 16:31:22
--  
我们没觉得你的公式有什么问题,由于VARIABLE声明的变量是全局的,所以只要之前有过任何一次开仓,就会置变量为某一个数字而一直持续下去
--  作者:smarter
--  发布时间:2010/7/19 16:34:02
--  
以下是引用admin在2010-7-19 16:31:22的发言:
我们没觉得你的公式有什么问题,由于VARIABLE声明的变量是全局的,所以只要之前有过任何一次开仓,就会置变量为某一个数字而一直持续下去

 

多谢答复!

 

请问: 如何得到满足条件tj1时的精确时间(到秒)? 即如何记录满足条件tj1时的精确时间

您能给出好办法吗  谢谢!

[此贴子已经被作者于2010-7-19 16:35:33编辑过]