Rss & SiteMap

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

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

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

1楼
chywu 发表于:2019/2/20 12:38:10
请教一下

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

谢谢图片点击可在新窗口打开查看
2楼
FireScript 发表于:2019/2/20 13:12:04
 后台函数可以直接获取账号实际持仓。图表不行的。
请参考:
TBUYHOLDINGEX
TSELLHOLDINGEX

3楼
chywu 发表于:2019/2/21 8:18:30
可否给个用法啊
函数帮助是这样写的

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

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

感谢!!
4楼
FireScript 发表于:2019/2/21 8:39:37
 是这样写的没错。
5楼
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

6楼
FireScript 发表于:2019/2/25 9:47:00
你输出下你的开平仓条件看下。上面代码没看出来哪里有问题。你开平仓条件的定义不在上面代码里面.
7楼
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都是好的
8楼
FireScript 发表于:2019/3/15 11:11:01
 这2个函数返回的是可用持仓,你要是股票的话。那得是老仓,否则返回就是0哦。
9楼
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
如果改成后台交易到底应该怎么写
多谢,我已经昏了
10楼
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.
共17 条记录, 每页显示 10 条, 页签: [1] [2]


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