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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 全局变量无法取得正确值

   

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


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

主题:全局变量无法取得正确值

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


加好友 发短信
等级:黑侠 帖子:649 积分:1359 威望:0 精华:0 注册:2009/10/24 1:57:01
全局变量无法取得正确值  发帖心情 Post By:2013/8/22 10:13:30    Post IP:119.86.185.24[只看该作者]

下面的公式,是金叉时开多单,死叉时开空单,希望开仓后用全局变量记住开仓的周期,若仓位自动平或手动平仓后全局变量置为0,用下面的公式全局变量始终显示为0,不知是什么原因

DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:=EMA(DIFF,9);
MACD:=2*(DIFF-DEA);
mszt:=macd>=ref(macd,1);
dezt:=diff>=dea;
jc:=cross(diff,dea);
sc:=cross(dea,diff);
aa:=tholding;
//多周期的开多与止损
kd:=aa=0  and jc;
if kd then BEGIN
tbuy(1,1,mkt);
extgbdataset('dcw',1); 
end
//平空与止损-若本级别仓位未被其它周期平掉则本周期仓位由本级别止损
dzs:=aa>0 and extgbdata('dcw')=1 and  dezt=0;
if dzs then begin
tsell(1,0,mkt);
extgbdataset('dcw',0); 
end

//开空部份
kk:=aa=0 and sjbm=0 and sc;
if kk then begin
tbuyshort(1,1,mkt);
extgbdataset('kcw',-1); 
end
//平空与止损
kzs:=aa<0 and extgbdata('kcw')=-1  and dezt;
if kzs then BEGIN
tsellshort(1,0,mkt);
extgbdataset('kcw',0); 
end
//本级别仓位无论手动自动平仓后均将本级别全局变量置为0
if aa=0 then begin
extgbdataset('dcw',0); 
extgbdataset('kcw',0); 
end

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


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

不要在所有公式前写aa:=tholding

直接把tholding判断写入后面所有的条件判断



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

客户服务部

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

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

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


加好友 发短信
等级:黑侠 帖子:649 积分:1359 威望:0 精华:0 注册:2009/10/24 1:57:01
  发帖心情 Post By:2013/8/22 10:53:48    Post IP:119.86.185.24[只看该作者]

按你的指导改为这样了,全局变量仍然一直为0,开仓后并不变化,拜托看下其它有没有问题
DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:=EMA(DIFF,9);
MACD:=2*(DIFF-DEA);
mszt:=macd>=ref(macd,1);
dezt:=diff>=dea;
jc:=cross(diff,dea);
sc:=cross(dea,diff);
//多周期的开多与止损
kd:=tholding=0  and jc;
if kd then BEGIN
tbuy(1,1,mkt);
extgbdataset('dcw',1); 
end
//平空与止损-若本级别仓位未被其它周期平掉则本周期仓位由本级别止损
dzs:=tholding>0 and extgbdata('dcw')=1 and  dezt=0;
if dzs then begin
tsell(1,0,mkt);
extgbdataset('dcw',0); 
end

//开空部份
kk:=tholding=0 and sjbm=0 and sc;
if kk then begin
tbuyshort(1,1,mkt);
extgbdataset('kcw',-1); 
end
//平空与止损
kzs:=tholding<0 and extgbdata('kcw')=-1  and dezt;
if kzs then BEGIN
tsellshort(1,0,mkt);
extgbdataset('kcw',0); 
end
//本级别仓位无论手动自动平仓后均将本级别全局变量置为0
if tholding=0 then begin
extgbdataset('dcw',0); 
extgbdataset('kcw',0); 
end


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


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

sjbm

这个是在哪里定义的?



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

客户服务部

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

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

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


加好友 发短信
等级:黑侠 帖子:649 积分:1359 威望:0 精华:0 注册:2009/10/24 1:57:01
  发帖心情 Post By:2013/8/22 11:15:11    Post IP:119.86.185.24[只看该作者]

sjb=0这个去掉吧,可能之前的没清除掉
现在用的这个:

DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:=EMA(DIFF,9);
MACD:=2*(DIFF-DEA);
mszt:=macd>=ref(macd,1);
dezt:=diff>=dea;
jc:=cross(diff,dea);
sc:=cross(dea,diff);
//多周期的开多与止损
kd:=tholding=0  and jc;
if kd then BEGIN
tbuy(1,1,mkt);
extgbdataset('dcw',1); 
end
//平空与止损-若本级别仓位未被其它周期平掉则本周期仓位由本级别止损
dzs:=tholding>0 and extgbdata('dcw')=1 and  dezt=0;
if dzs then begin
tsell(1,0,mkt);
extgbdataset('dcw',0); 
end

//开空部份
kk:=tholding=0  and sc;
if kk then begin
tbuyshort(1,1,mkt);
extgbdataset('kcw',-1); 
end
//平空与止损
kzs:=tholding<0 and extgbdata('kcw')=-1  and dezt;
if kzs then BEGIN
tsellshort(1,0,mkt);
extgbdataset('kcw',0); 
end
//本级别仓位无论手动自动平仓后均将本级别全局变量置为0
if tholding=0 then begin
extgbdataset('dcw',0); 
extgbdataset('kcw',0); 
end
[此贴子已经被作者于2013/8/22 11:15:35编辑过]

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


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

都加个ISLASTBAR试试,下面是添加之后的代码

 

 

WARNING_DISABLE:4;
DIFF:=EMA(CLOSE,12) - EMA(CLOSE,26);
DEA:=EMA(DIFF,9);
MACD:=2*(DIFF-DEA);
mszt:=macd>=ref(macd,1);
dezt:=diff>=dea;
jc:=cross(diff,dea);
sc:=cross(dea,diff);
//多周期的开多与止损

if tholding=0  and jc  and islastbar then BEGIN
tbuy(1,1,mkt);
extgbdataset('dcw',1);
end
//平空与止损-若本级别仓位未被其它周期平掉则本周期仓位由本级别止损
dzs:=tholding>0 and extgbdata('dcw')=1 and  dezt=0;
if dzs  and islastbar then begin
tsell(1,0,mkt);
extgbdataset('dcw',0);
end
//开空部份
kk:=tholding=0  and sc;
if kk and islastbar then begin
tbuyshort(1,1,mkt);
extgbdataset('kcw',-1);
end
//平空与止损
kzs:=tholding<0 and extgbdata('kcw')=-1  and dezt;
if kzs and islastbar  then BEGIN
tsellshort(1,0,mkt);
extgbdataset('kcw',0);
end
//本级别仓位无论手动自动平仓后均将本级别全局变量置为0

if tholding=0 and islastbar then begin
extgbdataset('dcw',0);
extgbdataset('kcw',0);
end

 


{
KD:=;          //开多条件
PD:=;          //平多条件
KK:=;          //开空条件
PK:=;          //平空条件


平空:SELLSHORT(PK,1,THISCLOSE);                  //平空信号
开多:BUY(KD AND HOLDING=0,1,THISCLOSE);          //开多信号
平多:SELL(PD,1,THISCLOSE);                       //平多信号
开空:BUYSHORT(KK AND HOLDING=0,1,THISCLOSE);     //开空信号

}
{
信号语句排列规则——先平后开
“费率设置”按钮——用于合理设置模型“费率”,以便在图形上正确输出如下帐户信息:

持仓:holding,linethick0;
资产:asset,noaxis;
可用现金:cash(0),linethick0;

您可以在查看菜单->交易系统模板 中设置自己需要的模板
}



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

客户服务部

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

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

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


加好友 发短信
等级:黑侠 帖子:649 积分:1359 威望:0 精华:0 注册:2009/10/24 1:57:01
  发帖心情 Post By:2013/8/22 14:43:55    Post IP:119.86.185.24[只看该作者]

加了islastbar仍然是0,

图片点击可在新窗口打开查看此主题相关图片如下:00.jpg
图片点击可在新窗口打开查看


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


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

if tholding=0 and islastbar then begin
extgbdataset('dcw',0);
extgbdataset('kcw',0);
end

 

 

删了这段就能赋值,具体如何处理明天开盘后我试试



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

客户服务部

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

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

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


加好友 发短信
等级:管理员 帖子:5082 积分:17642 威望:0 精华:6 注册:2010/7/15 9:05:58
  发帖心情 Post By:2013/8/22 15:27:45    Post IP:58.246.57.26[只看该作者]

请运行在序列模式下



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

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到

service@weistock.com

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

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


加好友 发短信
等级:管理员 帖子:5082 积分:17642 威望:0 精华:6 注册:2010/7/15 9:05:58
  发帖心情 Post By:2013/8/22 15:37:31    Post IP:58.246.57.26[只看该作者]

以下是个范例,比你的还复杂呢,已验证,正常使用,推荐给您看看

 

 

用BARPOS和全局变量结合起来,控制是否开仓。

//序列模式运行

//t1_flag 0表示没有仓位,1表示持有多头,-1表示持有空头

//bar控制一根K线只能有一次开平仓

 

runmode:1;

ss:=1; //手数

maa:ema(c,5);

buycond:=h>maa;

sellcond:=l<maa;


//平多

if extgbdata('t1_flag')>0 and sellcond  and barpos>extgbdata('bar')  then

  begin

  tsell(1,ss,mkt);

  extgbdataset('t1_flag',0);

  end


//平空

if extgbdata('t1_flag')<0 and buycond and barpos>extgbdata('bar')  then

  begin

  tsellshort(1,ss,mkt);

  extgbdataset('t1_flag',0);

  end 


//开多

if extgbdata('t1_flag')=0 and buycond then

  begin

  tbuy(1,ss,mkt);

  extgbdataset('t1_flag',1);

  extgbdataset('bar',barpos);

  end


//开空

if extgbdata('t1_flag')=0 and sellcond then

    begin

    tbuyshort(1,ss,mkt);

    extgbdataset('t1_flag',-1);

    extgbdataset('bar',barpos);

    end

全局变量使用注意事项:

策略运行过程中,手动平仓进行干预,请到"工具--数据--全局变量"里,将对应的全局变量清0,否则会引起开平仓混乱

论坛帖子http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=48919



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

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到

service@weistock.com

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

 回到顶部
总数 26 1 2 3 下一页