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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 如何获取当前账户下的现有持仓

   

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


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

主题:如何获取当前账户下的现有持仓

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


加好友 发短信
等级:新手上路 帖子:18 积分:0 威望:0 精华:0 注册:2016/9/5 17:29:49
如何获取当前账户下的现有持仓  发帖心情 Post By:2019/2/20 12:38:10    Post IP:121.237.168.163[显示全部帖子]

请教一下

5.0.2版中,使用PEL编写的交易策略
如何获取当前实际账户下的持仓品种和数量
返回函数是什么格式
可否查询某个品种是否已经有持仓,若有,它的持仓数量是多少
图表交易中能实现最好,如果不能,后台交易也行

谢谢图片点击可在新窗口打开查看

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


加好友 发短信
等级:新手上路 帖子:18 积分:0 威望:0 精华:0 注册:2016/9/5 17:29:49
  发帖心情 Post By:2019/2/21 8:18:30    Post IP:121.237.168.163[显示全部帖子]

可否给个用法啊
函数帮助是这样写的

取指定帐户品种的买入持仓量(多头持仓),
用法:TBUYHOLDINGEX(AC,STOCK,N),AC为指定的帐户名,若为空表示取当前默认帐户
STOCK为指定的品种,若空表示当前品种。
N表示类型,0表示取当日可用买持(股票为可用持仓),1表示取全部可用买持(不包含未成交平多单),2表示取全部买持(包含未成交平多单),3表示取未成交单平多单.
该函数返回常数。

具体到某只股票,获取当前账户某只股票的全部持仓数量,是不是这样写:
tBuyHoldingEX('','000423',2)

感谢!!

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


加好友 发短信
等级:新手上路 帖子:18 积分:0 威望:0 精华:0 注册:2016/9/5 17:29:49
  发帖心情 Post By:2019/2/22 21:25:49    Post IP:117.89.212.213[显示全部帖子]

再请教一下
我固定操作6个品种,对应6个公式
品种和公式一一对应
希望6个品种对应的持仓比例基本不变,满仓的话,总持仓不超过90%。

下单模块这样写,逐K线模式,用标准版作价格预警,没有显示预警信号,有什么问题吗?
如果用专业版作后台交易,能不能正确运行?

//下单数量:每根K线查询一次实际持仓
Denominator := 19;
Numerator := 4;

IF tBuyHoldingEX('','510500',2) > 999 then Denominator := Denominator - 4;  //500ETF
IF tBuyHoldingEX('','159901',2) > 999 then Denominator := Denominator - 4;  //深100ETF
IF tBuyHoldingEX('','159915',2) > 999 then Denominator := Denominator - 4;  //创业板
IF tBuyHoldingEX('','150131',2) > 999 then Denominator := Denominator - 3;  //医药B
IF tBuyHoldingEX('','159902',2) > 999 then Denominator := Denominator - 2;  //中小板
IF tBuyHoldingEX('','150019',2) > 999 then Denominator := Denominator - 2;  //银华锐进

Pecentage := 0.9 * Numerator / Denominator ;
Fund := tCash * Pecentage;

//下单:先卖后买
IF tHolding > 0 and TodayHolding = 0 then Begin
震卖:TSell(Shock_Sell,0,MKT);
趋卖:TSell(Trend_Sell,0,MKT);
止损:TSell(StopLoss_Sell,0,MKT);
end

IF tHolding = 0 then Begin
震买:TBuy(Shock_Buy,Fund/close,MKT);
趋买:TBuy(Trend_Buy,Fund/close,MKT);
end


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


加好友 发短信
等级:新手上路 帖子:18 积分:0 威望:0 精华:0 注册:2016/9/5 17:29:49
  发帖心情 Post By:2019/3/15 11:00:07    Post IP:117.89.70.167[显示全部帖子]

登录了专业版,做后台程序化交易,是模拟账户
还是上面的代码,注释掉了当前代码所在的行

//IF tBuyHoldingEX('','510500',2) > 999 then Denominator := Denominator - 4;  //500ETF
IF tBuyHoldingEX('','159901',2) > 999 then Denominator := Denominator - 4;  //深100ETF
IF tBuyHoldingEX('','159915',2) > 999 then Denominator := Denominator - 4;  //创业板
IF tBuyHoldingEX('','150131',2) > 999 then Denominator := Denominator - 3;  //医药B
IF tBuyHoldingEX('','159902',2) > 999 then Denominator := Denominator - 2;  //中小板
IF tBuyHoldingEX('','150019',2) > 999 then Denominator := Denominator - 2;  //银华锐进

这样买入条件可以运行,并且是准确的,但是debugfile出来的tholding和todayholding一直是0,所以按上面的逻辑,不会触发卖出条件
看成交回报是成交了的,持仓、log都是好的

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


加好友 发短信
等级:新手上路 帖子:18 积分:0 威望:0 精华:0 注册:2016/9/5 17:29:49
  发帖心情 Post By:2019/3/15 14:05:38    Post IP:117.89.70.167[显示全部帖子]

股票的话,过了夜就应该是可用持仓了吧?
按照卖出的逻辑:
先检查总持仓数量不为0,再检查今日持仓为0,符合这两个条件就卖出,应该怎么写
图表交易这样写的,并且运行良好:
IF Holding > 0 and dayHolding = 0 then Begin
震卖:Sell(Shock_Sell,0,MarketR);
趋卖:Sell(Trend_Sell,0,MarketR);
止损:Sell(StopLoss_Sell,0,MarketR);
end
如果改成后台交易到底应该怎么写
多谢,我已经昏了

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


加好友 发短信
等级:新手上路 帖子:18 积分:0 威望:0 精华:0 注册:2016/9/5 17:29:49
  发帖心情 Post By:2019/3/18 10:12:35    Post IP:117.89.71.107[显示全部帖子]

谢谢,可是还是不行
同样的策略,用一个标准版帐号做了图表实盘交易,用一个专业版帐号做了后台模拟交易

买入卖出的代码都是一样的,有区别的就是买入卖出这里。逻辑也都是一样的。

图表实盘交易中,周五买入。这时后台模拟交易也买入了相应的数量。
今天周一上午,图表实盘交易卖出。可是这时候后台模拟交易没有卖出,debugout文件中全部可用和当日可用还是为零。

这个和模拟交易服务器有没有关系,模拟交易服务器传不传这个数据?

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


加好友 发短信
等级:新手上路 帖子:18 积分:0 威望:0 精华:0 注册:2016/9/5 17:29:49
  发帖心情 Post By:2019/3/18 21:12:29    Post IP:117.89.211.124[显示全部帖子]

下单及debug语句改写为这样:
//下单:先卖后买
IF tBuyHoldingEX('','',0) <> 0 and tBuyHoldingEX('','',0) = tBuyHoldingEX('','',1) then Begin
        震卖:tSell(Shock_Sell,0,MKT);
        趋卖:tSell(Trend_Sell,0,MKT);
        止损:tSell(StopLoss_Sell,0,MKT);
end

IF tBuyHoldingEX('','510500',2) = 0 then Begin
震买:TBuy(Shock_Buy,Fund/close,MKT);
趋买:TBuy(Trend_Buy,Fund/close,MKT);
end

debugfile('D:\DebugOut\debug_510500.txt','Date=%.0f',date+19000000);
debugfile('D:\DebugOut\debug_510500.txt','    Time=%.0f',time);
debugfile('D:\DebugOut\debug_510500.txt','    tHolding=%.0f',tHolding);
debugfile('D:\DebugOut\debug_510500.txt','    Today_Holding=%.0f',TodayHolding);
debugfile('D:\DebugOut\debug_510500.txt','    tBuyHoldingEX0=%.0f',tBuyHoldingEX('','510500',0));
debugfile('D:\DebugOut\debug_510500.txt','    tBuyHoldingEX1=%.0f',tBuyHoldingEX('','510500',1));
debugfile('D:\DebugOut\debug_510500.txt','    tBuyHoldingEX2=%.0f',tBuyHoldingEX('','510500',2));
debugfile('D:\DebugOut\debug_510500.txt','    tBuyHolding0=%.0f',tBuyHolding(0));
debugfile('D:\DebugOut\debug_510500.txt','    tBuyHolding1=%.0f',tBuyHolding(1));

输出这样:
2019-03-18 21:08:08.966    Date=20190318
2019-03-18 21:08:08.972        Time=150000
2019-03-18 21:08:08.978        tHolding=35300
2019-03-18 21:08:08.982        Today_Holding=35300
2019-03-18 21:08:08.986        tBuyHoldingEX0=35300
2019-03-18 21:08:10.946        tBuyHoldingEX1=35300
2019-03-18 21:08:10.959        tBuyHoldingEX2=35300
2019-03-18 21:08:10.968        tBuyHolding0=35300
2019-03-18 21:08:10.975        tBuyHolding1=35300

实际模拟账户中的持仓,对于510500这个品种,可用和总持都是35300。

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


加好友 发短信
等级:新手上路 帖子:18 积分:0 威望:0 精华:0 注册:2016/9/5 17:29:49
  发帖心情 Post By:2019/3/18 21:14:30    Post IP:117.89.211.124[显示全部帖子]

图片点击可在新窗口打开查看

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


加好友 发短信
等级:新手上路 帖子:18 积分:0 威望:0 精华:0 注册:2016/9/5 17:29:49
  发帖心情 Post By:2019/3/22 10:20:10    Post IP:121.237.168.252[显示全部帖子]

这两天模拟交易服务器又出问题了么
昨天买入的ETF品种,T+1的,今天又出现状况了
tBuyHoldingEX('','',0) 和 tBuyHoldingEX('','',1) 现在都为0
tBuyHoldingEX('','',2)是有数值的

 回到顶部