以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://www.weistock.com/bbs/list.asp?boardid=2)
----  请问,为什么上述语句中的条件没有作用?  (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=137125)

--  作者:c100010913
--  发布时间:2016/7/26 20:58:11
--  请问,为什么上述语句中的条件没有作用?
 IF HOLDING=0 THEN SECSTA:=STKINDI(\'\',\'0T.SECST\',0,6,0);

请问,为什么上述语句中的条件没有作用?

也就是,无论HOLDING的值是否为0,都会执行THEN 后面的STKINDI指令,为什么呢? 

--  作者:wenarm
--  发布时间:2016/7/27 8:32:06
--  

你是怎么判断他执行的。你可以输出HOLDING。看下其条件的值。

或者也可以加debugfile函数在if语句中进行输出holding的值。


--  作者:c100010913
--  发布时间:2016/7/27 11:34:14
--  
我的用这个命令的本意是:已经开仓后的情况下,不要刷新读取SECSTA参数值。
但是,这个命令下,即使已开仓(即HOLDING不等0),公式仍然会读取最新的引用SECSTA值,,,
我怎么才能达到我的本意?

--  作者:c100010913
--  发布时间:2016/7/27 11:40:34
--  
我是在实时盘中,观察公式运行时,发现在已开仓的情况下,SECSTA的值仍然会被刷新的。。。


--  作者:wenarm
--  发布时间:2016/7/27 12:39:23
--  

SECSTA是一个序列变量。赋给他的值,砸没有再次赋值前,它始终都是一个值,这个值你在其他位置调用时,是可以读取到的。

不理台理解你3楼的意思。举个例说下

你说的会刷新,指的是SECSTA:=STKINDI(\'\',\'0T.SECST\',0,6,0);这句话在执行?


--  作者:c100010913
--  发布时间:2016/7/27 13:49:07
--  
是的,这个SECSTA变量值按说没有这句话的执行,它不应该刷新变化的。
三楼是我编写这个条件执行的用意说明,,,也许是我对函数的理解不到位,以致于无法做到条件控制。。。
但是,若能用别的方式达到这个目的,我是欣然接受的!

我的目的是:
已开仓的情况下,不要刷新读取变量值SECSTA;
在没有开仓的情况下,则保持同步引用STKINDI(\'\',\'0T.SECST\',0,6,0);

不知能否做到?

--  作者:wenarm
--  发布时间:2016/7/27 14:10:35
--  

是的,这个SECSTA变量值按说没有这句话的执行,它不应该刷新变化的。

你是怎么判断它刷新的?你在你的语句里加入一句话,要是能输出的HOLDING不是0,则说明,这个判断语句进入。

IF HOLDING=0 THEN  begin

    SECSTA:=STKINDI(\'\',\'0T.SECST\',0,6,0);

    DEBUGFILE(\'D:\\TEST.TXT\',\'进入判断语句,holding=%.2f\',HOLDING);

end

   


--  作者:c100010913
--  发布时间:2016/7/27 14:23:21
--  
当公式已经持仓,有显示开仓信号及资金曲线变化,此时 HOLDING是不是非零状态?反之,公式无持仓,即为零状态,对否?
--  作者:wenarm
--  发布时间:2016/7/27 14:26:58
--  

是的,holding是你图表上的虚拟市场。不是指你账户栏里的持仓。

你可以单独输出HOLDING,在图表上看下。它是有3中状态,正,负,0


--  作者:c100010913
--  发布时间:2016/7/27 15:50:49
--  
所以,我编写的语句有什么语法或逻辑上的错误吗?
我要怎么实现我的意图呢?