以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  如何获取当前账户下的现有持仓  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=168316)

--  作者:chywu
--  发布时间:2019/2/20 12:38:10
--  如何获取当前账户下的现有持仓
请教一下

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

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

--  作者:FireScript
--  发布时间:2019/2/20 13:12:04
--  
 后台函数可以直接获取账号实际持仓。图表不行的。
请参考:
TBUYHOLDINGEX
TSELLHOLDINGEX


--  作者:chywu
--  发布时间:2019/2/21 8:18:30
--  
可否给个用法啊
函数帮助是这样写的

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

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

感谢!!

--  作者:FireScript
--  发布时间:2019/2/21 8:39:37
--  
 是这样写的没错。
--  作者:chywu
--  发布时间:2019/2/22 21:25:49
--  
再请教一下
我固定操作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


--  作者:FireScript
--  发布时间:2019/2/25 9:47:00
--  
你输出下你的开平仓条件看下。上面代码没看出来哪里有问题。你开平仓条件的定义不在上面代码里面.

--  作者:chywu
--  发布时间:2019/3/15 11:00:07
--  
登录了专业版,做后台程序化交易,是模拟账户
还是上面的代码,注释掉了当前代码所在的行

//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都是好的

--  作者:FireScript
--  发布时间:2019/3/15 11:11:01
--  
 这2个函数返回的是可用持仓,你要是股票的话。那得是老仓,否则返回就是0哦。
--  作者:chywu
--  发布时间:2019/3/15 14:05:38
--  
股票的话,过了夜就应该是可用持仓了吧?
按照卖出的逻辑:
先检查总持仓数量不为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
如果改成后台交易到底应该怎么写
多谢,我已经昏了

--  作者:FireScript
--  发布时间:2019/3/15 14:22:56
--  
IF TBUYHOLDINGEX(\'\',\'\',0)=TBUYHOLDINGEX(\'\',\'\',1) and TBUYHOLDINGEX(\'\',\'\',0)<>0 then Begin
    震卖:tSell(Shock_Sell,0,MKT);
    趋卖:tSell(Trend_Sell,0,MKT);
    止损:tSell(StopLoss_Sell,0,MKT);
end

可以这样。判断时候是这样判断的:当日可用=全部可用 且当日可用不等于0.