欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 关于全局变量的理解问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2644人关注过本帖树形打印复制链接

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

帅哥哟,离线,有人找我吗?
gsqh_zyp
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:168 积分:148 威望:0 精华:0 注册:2012/6/21 9:54:02
关于全局变量的理解问题  发帖心情 Post By:2015/6/25 10:59:47    Post IP:221.4.150.210[只看该作者]

教程上有个关于全局变量的例子:若当前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,后面的条件也都满足。”这个怎么理解,后面的条件怎么也满足?

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2015/6/25 11:07:36    Post IP:58.246.57.26[只看该作者]

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

 

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编辑过]


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
gsqh_zyp
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:168 积分:148 威望:0 精华:0 注册:2012/6/21 9:54:02
  发帖心情 Post By:2015/6/25 11:24:24    Post IP:221.4.150.210[只看该作者]

代码从上往下计算,当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


 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2015/6/25 11:28:18    Post IP:58.246.57.26[只看该作者]

那么图上的是什么样子的?


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
gsqh_zyp
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:168 积分:148 威望:0 精华:0 注册:2012/6/21 9:54:02
  发帖心情 Post By:2015/6/25 12:24:36    Post IP:221.4.150.210[只看该作者]

老师可以直接把上面的代码复制下应用到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
这种编写顺序才与策略一致,
然后就是搞不懂为什么这种编写方式才符合

 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2015/6/25 13:09:00    Post IP:58.246.57.26[只看该作者]

应用在图上错在哪里?


金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
gsqh_zyp
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:168 积分:148 威望:0 精华:0 注册:2012/6/21 9:54:02
  发帖心情 Post By:2015/6/25 14:05:54    Post IP:221.4.150.210[只看该作者]

编写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线满足,第二第三根没满足?应用到图上就是第二根和第三根没有向上的箭头
老是麻烦你可以把这两种编写的方法应用到图上就知道有什么区别,





 回到顶部
帅哥哟,离线,有人找我吗?
jinzhe
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:46311 积分:50819 威望:0 精华:2 注册:2011/3/23 8:50:25
  发帖心情 Post By:2015/6/25 14:09:14    Post IP:58.246.57.26[只看该作者]

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



金字塔—专业程序化交易量化投资平台

客户服务部

----------------------------------------------------------- 欢迎您参加我公司的技术培训,具体培训需求请发邮件到service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部