以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- tenterprice函数问题 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=174860) |
-- 作者:marks -- 发布时间:2020/3/9 13:09:00 -- tenterprice函数问题 请帮忙 看一下,下面的代码会进入无限循环吗?当开了第二单以后再也获取不得B2了,B1也是第一单的开仓价。 CHONG@;
if TBUYHOLDINGEX(\'\',\'\',1)>0 and TBUYHOLDINGEX(\'\',\'\',1)>ss then begin
b1:=tenterprice;
while b1=0 do
b1:=tenterprice;
if b1>0 then
while not(ABS(b1-b2)>2 ) do begin
b1:=tenterprice;
if b1=b2 then
GOTO CHONG;
end
if b1>b2 then begin
b2:=b1;
ss:=ss+1;
end
end
DEBUGFILE(\'D:\\35.TXT\',\' b1:=%.2f\',b1);
DEBUGFILE(\'D:\\35.TXT\',\' b2:=%.2f\',b2);
DEBUGFILE(\'D:\\35.TXT\',\' f:=%.2f\',f);
DEBUGFILE(\'D:\\35.TXT\',\' ss:=%.2f\',ss); |
-- 作者:FireScript -- 发布时间:2020/3/9 13:26:52 -- 会的。 while not(ABS(b1-b2)>2 ) do begin b1:=tenterprice; if b1=b2 then GOTO CHONG; end 会一直跳转的。
|
-- 作者:wenarm -- 发布时间:2020/3/9 13:26:56 -- 你策略中根本没必要用while语句,除了增加复杂度,降低执行效率没有丁点好处。金字塔的策略本身就是会自动循环执行的。你的内循环没有任何意义。常规只要if语句判断就行。
not(ABS(b1-b2)>2 ) 当它成立时,你的策略一直在GOTO CHONG@; 再也不会出来。
|
-- 作者:marks -- 发布时间:2020/3/9 13:29:52 -- 我的目的是获取最新的开仓价,之前跑的过程中发现开仓价获取时间不固定,所以想这么写,就是如果没获取到最新的开仓价我就不执行下边的代码。 如果需要达到这个目的怎么写 |
-- 作者:wenarm -- 发布时间:2020/3/9 13:33:37 -- 我的目的是获取最新的开仓价,之前跑的过程中发现开仓价获取时间不固定???什么意思
TENTERPRICE函数不就直接取了。没成交时是委托价,成交后是成交价
[此贴子已经被作者于2020/3/9 13:34:37编辑过]
|
-- 作者:marks -- 发布时间:2020/3/9 21:32:45 -- 意思是获取不到TENTERPRICE,就比如上面的代码,如果能获取到TENTERPRCIE就不会无限循环了不是 |
-- 作者:wenarm -- 发布时间:2020/3/9 22:42:27 -- 这个函数本身没有问题,只有开过仓位,它都是一个有效值。如果你认为不对,你自己debugfile输出查看下。 |
-- 作者:marks -- 发布时间:2020/3/10 8:32:30 -- 我就是DEBUGFILE才发现这个问题的,所以才这么搞的,不然也不会这么写,直接TENTERPRICE。还可能会和什么有关,模拟服务器不支持? |
-- 作者:FireScript -- 发布时间:2020/3/10 9:21:54 -- 你用TENTERPRICE时候遇到什么问题了?没取到值吗?你这里的方式是不可取的,建议回到你最初的问题上来讨论。 这个函数取值和这里的记录直接关联。此外就是成交和未成交取值时候会有差异。未成交就是委托价,成交就是成交价。
|
-- 作者:marks -- 发布时间:2020/3/10 12:16:53 -- 就是TENTERPRICE取 不到值 |