Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共8 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:关于全局变量的理解问题

1楼
gsqh_zyp 发表于:2015/6/25 10:59:47
教程上有个关于全局变量的例子:若当前K线是阳线,且之前加仓次数为0,则开仓。

若当前K线是阳线,且之前加仓次数为1,则加仓。

若当前K线是阳线,且之前加仓次数为2,则加仓,这次以后不再加仓。

若当前K线是阴线,则平仓。


Variable:flag=0;


If close>open and flag=0 then begin//若当前K线是阳线,且之前加仓次数为0,则开仓。

drawicon(1,low,4);

    Flag:=1;

End


If close>open and flag=1 then begin//若当前K线是阳线,且之前加仓次数为1,则加仓。

drawicon(1,low,4);

    Flag:=2;

End

If close>open and flag=2 then begin//若当前K线是阳线,且之前加仓次数为2,则开仓。

drawicon(1,low,4);

    Flag:=3;

End

If close<open and flag=3 then begin//若当前K线是阳线,且之前加仓次数为0,则开仓。

drawicon(1,low,5);

    Flag:=0; //重置flag到初始状态

End


若把上述代码编译后应用于图,会发现图上的信号与预想的不符,这个主要是由于代码自上而下运行,所以当第一次开仓后,flag值变为1,后面的条件也都满足。

请问,这样的编写顺序为什么不符,“主要是由于代码自上而下运行,所以当第一次开仓后,flag值变为1,后面的条件也都满足。”这个怎么理解,后面的条件怎么也满足?
2楼
jinzhe 发表于:2015/6/25 11:07:36

代码是从上往下计算的,能理解接受吗?

 

If close>open and flag=0 then begin//若当前K线是阳线,且之前加仓次数为0,则开仓。

drawicon(1,low,4);

    Flag:=1;

End

 

 

代码从上往下计算,那么close>open and flag=0 这个条件满足后,接着计算begin后面,flag变成了1

 

然后下面一句的 close>open and flag=1 这个条件也满足,接着计算begin后面,flag变成了2

。。。。。

后面的也就全部满足条件了

[此贴子已经被作者于2015/6/25 11:08:26编辑过]
3楼
gsqh_zyp 发表于:2015/6/25 11:24:24
代码从上往下计算,当close>open and flag=0 这个条件满足后,接着计算begin后面的,执行drawicon(1,low,4);这个时候标注了一个向上的箭头,然后flag变成1了,
接下来下面一句的 close>open and flag=1 这个条件也满足,接着计算begin后面的drawicon(1,low,4);这个时候如果是还是阳线应该有第二个向上的箭头,然后flag变成了2
。。。。依次类推,但是为什么应用到图上不是这样的,
要改成这样的编写顺序才行?
Variable:flag=0;
If close>open and flag=2 then begin//若当前K线是阳线,且之前加仓次数为2,则开仓。
drawicon(1,low,4);
    Flag:=3;
End
If close>open and flag=1 then begin//若当前K线是阳线,且之前加仓次数为1,则加仓。
drawicon(1,low,4);
    Flag:=2;
End
If close>open and flag=0 then begin//若当前K线是阳线,且之前加仓次数为0,则开仓。
drawicon(1,low,4);
    Flag:=1;
End
If close<open and flag=3 then begin//若当前K线是阳线,且之前加仓次数为0,则开仓。
drawicon(1,low,5);//这里的参数1表示恒成立,0表示平掉所有持仓。
    Flag:=0; //重置flag到初始状态
End

4楼
jinzhe 发表于:2015/6/25 11:28:18
那么图上的是什么样子的?
5楼
gsqh_zyp 发表于:2015/6/25 12:24:36
老师可以直接把上面的代码复制下应用到K线图上,
Variable:flag=0;
If close>open and flag=2 then begin//若当前K线是阳线,且之前加仓次数为2,则开仓。
drawicon(1,low,4);
    Flag:=3;
End
If close>open and flag=1 then begin//若当前K线是阳线,且之前加仓次数为1,则加仓。
drawicon(1,low,4);
    Flag:=2;
End
If close>open and flag=0 then begin//若当前K线是阳线,且之前加仓次数为0,则开仓。
drawicon(1,low,4);
    Flag:=1;
End
If close<open and flag=3 then begin//若当前K线是阳线,且之前加仓次数为0,则开仓。
drawicon(1,low,5);//这里的参数1表示恒成立,0表示平掉所有持仓。
    Flag:=0; //重置flag到初始状态
End
这种编写顺序才与策略一致,
然后就是搞不懂为什么这种编写方式才符合
6楼
jinzhe 发表于:2015/6/25 13:09:00
应用在图上错在哪里?
7楼
gsqh_zyp 发表于:2015/6/25 14:05:54
编写1:

Variable:flag=0;


If close>open and flag=0 then begin//若当前K线是阳线,且之前加仓次数为0,则开仓。

drawicon(1,low,4);

    Flag:=1;

End


If close>open and flag=1 then begin//若当前K线是阳线,且之前加仓次数为1,则加仓。

drawicon(1,low,4);

    Flag:=2;

End

If close>open and flag=2 then begin//若当前K线是阳线,且之前加仓次数为2,则开仓。

drawicon(1,low,4);

    Flag:=3;

End

If close<open and flag=3 then begin//若当前K线是阳线,且之前加仓次数为0,则开仓。

drawicon(1,low,5);

    Flag:=0; //重置flag到初始状态

End



此主题相关图片如下:1111.png
按此在新窗口浏览图片


编写2:

Variable:flag=0;
If close>open and flag=2 then begin//若当前K线是阳线,且之前加仓次数为2,则开仓。
drawicon(1,low,4);
    Flag:=3;
End
If close>open and flag=1 then begin//若当前K线是阳线,且之前加仓次数为1,则加仓。
drawicon(1,low,4);
    Flag:=2;
End
If close>open and flag=0 then begin//若当前K线是阳线,且之前加仓次数为0,则开仓。
drawicon(1,low,4);
    Flag:=1;
End
If close<open and flag=3 then begin//若当前K线是阳线,且之前加仓次数为0,则开仓。
drawicon(1,low,5);//这里的参数1表示恒成立,0表示平掉所有持仓。
    Flag:=0; //重置flag到初始状态
End

此主题相关图片如下:22222.png
按此在新窗口浏览图片

为什么要采用“编写2”这种编写顺序才正确
“编写1”那种编写顺序为什么如果连续三根都是阳线(就是连续满足连续加仓的条件),但只有第一根K线满足,第二第三根没满足?应用到图上就是第二根和第三根没有向上的箭头
老是麻烦你可以把这两种编写的方法应用到图上就知道有什么区别,




8楼
jinzhe 发表于:2015/6/25 14:09:14

第一个写法是在第一个k线上,就加仓3次,你要的是每根k线加仓一次,就不要用什么全局变量了,直接if c>o then buy....;就行

共8 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.01953 s, 3 queries.