以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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 -- 所以,我编写的语句有什么语法或逻辑上的错误吗? 我要怎么实现我的意图呢?
|