以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请教  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=158876)

--  作者:anhaizhong
--  发布时间:2017/10/23 10:53:17
--  请教
一个模型,同时交易6个品种,如果当天没有别的品种开仓,第一个品种开仓时仓位20%,之后在开仓的品种10%,这个怎么写?


--  作者:FireScript
--  发布时间:2017/10/23 11:08:58
--  

有个方法可以试下,用一个全局变量。在工具-数据管理-全局变量下定义一个变量。  IsTrade,默认值设为0.

U:EXTGBDATA(\'IsTrade\');

if U  then
begin
buy(1,10%,MARKET),PERTRADER;
end
else then
begin
buy(1,20%,MARKET),PERTRADER;
EXTGBDATASET(\'IsTrade\',1);
end

 

 

需要注意的是这里设置的全局变量,在程序化交易结束后依然会保持之前所赋的值。所以开启一次交易后,下次开启交易要么手动把全局变量初始化为0,要么代码里想办法处理下。而且这段代码也只在某一次程序化运行中起作用。意思就是你之前手动开了仓,或者之前开启程序化交易过程产生的交易,这里都是无法判读的。 

 

 如果你是后台的话可以通过对品种的持仓判断来做限制。或者这个函数也行TTOTALDAYTRADE,这个函数返回当前交易次数。不过这个不分品种,如果只交易当前6个品种那倒是无所谓。

[此贴子已经被作者于2017/10/23 11:20:05编辑过]

--  作者:anhaizhong
--  发布时间:2017/10/23 16:50:22
--  
麻烦问下,这个全局变量返回的是不是常数?
--  作者:anhaizhong
--  发布时间:2017/10/23 16:50:49
--  
会不会出现 后面条件变化,持仓变化的问题
--  作者:FireScript
--  发布时间:2017/10/23 17:11:36
--  
以下是引用anhaizhong在2017/10/23 16:50:22的发言:
麻烦问下,这个全局变量返回的是不是常数?

是常数。


--  作者:anhaizhong
--  发布时间:2017/10/23 17:21:05
--  
如果是常数是不是就会出现,条件  IsTrade 变化了,持仓用变成由20%同步成为10%的问题
--  作者:wenarm
--  发布时间:2017/10/23 18:25:17
--  
EXTGBDATA函数没有历史值,只会记录最新值。如果在图表中使用,会造成你图表中的仓位数量发生变化。这个你要注意