【常见问题】:全局变量的作用和功能 (文华财经)

投资者咨询:【常见问题】:全局变量的作用和功能 (文华财经)
来源:文华财经  日期:2016-3-2 16:00
 定义全局变量
VARIABLE:VAR1:=X,VAR2:=Y;
IF 条件1 THEN
VAR1:=VAR1+1;
IF 条件2 THEN
VAR2:=VAR2+1;
VARIABLE 表示声明后面的变量名为全局变量
VAR1 VAR2全局变量的名字
X Y 为全局变量的初始值
VAR1:=VAR1+1;表示给VARI赋值
如果当前K线条件满足条件1,则给VARI赋值为VAR1+1,否则仍旧取值为之前的VAR1的值

请问一下,全局变量的作用是什么?能不能给举个例子。是为了实现什么功能。或者有没有除此以外的详细介绍,就这么点,我根本看不懂。。
 
技术人员回复
日期:2016-3-2 16:06

全局变量:是在历史第一根K线上定义变量初始值,后续K线上关于该变量的计算始终调用上一根K线上该变量的返回值。

 

普通变量:在每一根K线上普通变量的初始值都是NULL,通过模型的计算,得到一个最后返回值。

 

 

全局变量的使用目的在于实现一些过去不容易实现,或者不能实现的思路,编写时配合IF THEN BEGIN语句可以使整个编写逻辑更加清晰明了



投资者咨询:【常见问题】:全局变量的作用和功能 (文华财经)
来源:文华财经  日期:2016-3-2 16:00
 IF THEN BEGIN语句
主要实现的功能是什么?类似C语言的FOR循环语句吗?
这个语句有无帮助或者实例,我要好好研究研究。
技术人员回复
日期:2016-3-2 16:54

 请参考2楼,在文华编写复杂思路时,如果配合IF THEN BEGIN语句可以简化编写逻辑

 

 不仅可以循环定义变量,同时也能兼容其他程序化软件的编写语言

 

 

 比如我们经常用到根据前一笔交易情况来控制当前开仓手数,这种思路使用全局变量来写就更简便了

 

 举个例子吧:

 

初始下单手数为1,上一次交易如果盈利,下单手数在之前的下单手数上加2

 

上一次没有盈利,继续使用上一次的下单手数。

 

——————

未加入全局变量:

 

SSS:=1;//定义初始手数

HH:=HV(H,10);//10个周期最高价

LL:=LV(L,10);//10个周期最低价

CROSS(C,HH)&&COUNT(BARSBK=1,BARPOS)<1,BK(SSS);

//历史第一次出现满足条件发出BK信号时,以手数SSS进行委托

SS:=IF(TRADE_REF(1)=1,REF(SS,BARSSP+1)+2,REF(BKVOL,BARSSP+1));

//定义手数SS 判断上一次交易是否盈利,如果盈利则在原有手数基础上+2,如果没有盈利 则取上一次开仓手数

CROSS(C,HH),BK(SS);

CROSS(LL,C),SP(BKVOL);

 

 

加入全局变量:

 

VARIABLE:SS:1;//定义全局变量SS

IF TRADE_REF(1)=1 THEN//如果上一笔交易盈利

   BEGIN

  SS:=REF(SS,BARSSP+1)+2;//SS取上一笔委托手数+2 否则沿用之前的委托手数

END

HH:=HV(H,10);

LL:=LV(L,10);

CROSS(C,HH),BK(SS);

CROSS(LL,C),SP(BKVOL);

 

 

 

类似的思路,您可以在论坛搜:全局,来查看研究一下

 
投资者咨询:【常见问题】:全局变量的作用和功能 (文华财经)
来源:文华财经  日期:2016-3-2 16:00
 老师,你真好。讲的的真详细,这个例子我收藏了。
 
是天使。 
 
文华的老师确实厉害,是我们的天使
投资者咨询:【常见问题】:全局变量的作用和功能 (文华财经)
来源:文华财经  日期:2016-3-2 16:00
 老师:四楼例子为什么回测结果不一样?
技术人员回复
日期:2018-1-3 8:07
上面的示例只是给您一个思路上的参考,一个小案例。不能用于直接对比的

如果是具体测试的话,可以对未加入全局变量的模型做下加仓情形的限制,这样回测效果就是一致的了,请参考:

SSS:1;//定义初始手数
HH:=HV(H,10);//10个周期最高价
LL:=LV(L,10);//10个周期最低价
CROSS(C,HH)&&COUNT(BARSBK=1,BARPOS)<1,BK(SSS);
//历史第一次出现满足条件发出BK信号时,以手数SSS进行委托
SS:IF(TRADE_REF(1)=1,REFSIG_VOL(BK,1)+2,REFSIG_VOL(BK,1));
//定义手数SS 判断上一次交易是否盈利,如果盈利则在原有手数基础上+2,如果没有盈利 则取上一次开仓手数
CROSS(C,HH)&&BKVOL=0,BK(SS);
CROSS(LL,C),SP(BKVOL);


图片点击可在新窗口打开查看
图片点击可在新窗口打开查看 文件名:1.jpg

 
 
投资者咨询:【常见问题】:全局变量的作用和功能 (文华财经)
来源:文华财经  日期:2016-3-2 16:00
 老师你好,请问begin 和end 的作用是什么?
当两个条件对同一个变量分别赋值时,应该怎么写?
技术人员回复
日期:2019-7-30 19:08
 begin 和end 就是IF THEN 语句的开始和结束,没有更多含义

分别赋值如下

VARIABLE:A:=0;
IF ISUP THEN
BEGIN
A:=L;
END
IF ISDOWN THEN
BEGIN
A:=H;
END
投资者咨询:【常见问题】:全局变量的作用和功能 (文华财经)
来源:文华财经  日期:2016-3-2 16:00
请老师多举几个不同的例子,以便理解。