全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
已解决
请老师指点,遇见公式不完全执行
2022-12-20 11:23

实盘中,小时线,以下语句,条件成立了,平空仓了,但并不在图表上显示“k_run”,

  为观察全局变量1的值,让最下语句执行显示全局变量1,结果显示“3“,问题是应该为”-1“了。

IF(A_SELLPOSITION<>0)
 { 
  A_SendOrder(Enum_buy, Enum_exit, 1, close+10);
  SetGlobalVar(1,-1);
  SetGlobalVar(0,0);
  setglobalvar(7,0);
  setglobalvar(8,0);
  SetGlobalVar(9,0);
  plotstring("s1","K_Run",high+10,yellow);
  }
  ELSE   plotstring("s5","K_2k_Run_NO",high+50,yellow);

 plotstring("s2",text(getglobalvar(1));
 

kyover

全局变量变成3,意味着你代码里一定有操作能让全局变量变成3,你现在只是没想明白为什么会执行全局变量赋值为3的操作。

但是计算机是死的,永远是依照执行规则去运行你的代码,运行结果是什么样,代码逻辑就是什么样。

所以如果运行结果不对,多半是你对运行机制,数据结构的特点没有完全掌握清楚

这里只能简单提几点,因为你给的线索并不多,比如会全局变量变成3的代码,你并没有发。变量是不会自己平白无故跳出来一个毫无关系的值。

第一 实盘中每一tick都会驱动当前bar进行onbar内代码的完整运行,A_SELLPOSITION第一次运行满足 执行分支内语句,第二次由于已经平掉就不运行了。

第二 全局变量是永远不会自动重置的容器,局部变量在域运行完就自动重置,序列变量在域运行完重置成上一根bar的终值

如果还是听不明白,那基础需要加强了

2022-12-20 14:37
haqh100180102

谢老师回复,全局变量1若被赋值为3,在我的公式设计里只会是开空仓成功了才变为3,平空仓后应紧随其后变为-1,便于后续条件成立继续开仓,现在实盘中平仓了,全局变量居然不依语句变-1,也不在k线上显示字符出来导致既没有空单在手,也不会再发生出入交易了,我尝试着把几个全局变量赋值语句放在if语句外面再观察试试,另外用print函数看能否在控制台上记录下。

2022-12-20 19:54
您未登录,请先 登录注册 后发表评论
顶部