以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  关于调取其它模型状态的问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=159649)

--  作者:xdzgjzt
--  发布时间:2017/11/19 20:53:18
--  关于调取其它模型状态的问题
老师:我有A模型和B模型,我希望A模型在理论开多仓状态时,B模型若满足条件才开多仓。就是要求系统能够判断A模型是否理论持仓,并且调用这个数据,请问金字塔能够做到吗?


--  作者:FireScript
--  发布时间:2017/11/20 8:51:46
--  

可以做到,使用STKINDI函数即可。

比如引用A模型日线周期下开仓条件:

STKINDI(\'\',\'A.开仓\',0,6,0);

 

每个参数都有自己的含义,可以指定品种,周期,指标等。


--  作者:xdzgjzt
--  发布时间:2017/11/20 23:11:51
--  

 老师:我干脆把思路完整说一下.我有两个模型,A模型和B模型,这两个模型都是开多仓模型,而且A模型和B模型的使用周期不同,A模型是小周期(假定15分钟模型),B模型是大周期(假定周K线模型)。我的设计思路是:

当B模型处于于理论多仓状态时,开多仓,同时运行A模型,满足A平仓条件,则平仓,满足A模型多仓条件不重复开仓(和B模型的开多仓过滤),当满足B模型平仓条件时,则全部平仓。A模型在B模型处于非持仓状态,不开仓。

我之前咨询过,上述思路的实现要涉及到调用B模型持仓状态的问题,有老师说用到算法模型,我看了,还是不明白,能否请老师举例演示一下?

为了方便说明问题,我就举例:

A模型:


收盘价上穿20日均线,开仓;

收盘价下穿20日均线,平仓;


B模型:

收盘价上穿30日均线,开仓;

收盘价下穿30日均线,平仓;

特别说明:

1.只有当B模型处于多仓持仓状态且满足A模型多仓持仓状态时,开多仓。所谓的多仓持仓状态就是开多仓后,未发出平仓信号,而不是简单地理解为触发开多仓条件,模型要对A模型和B模型的持仓状态都做判断并且调用;

2.当B模型处于多仓状态,A模型出平仓信号,则执行平仓;当B模型于空仓状态,即使A模型出多仓信号,也不开仓;

3.B模型出平仓信号,一律全部平仓。

请老师把模型完整写一下,谢谢!




--  作者:wenarm
--  发布时间:2017/11/21 8:29:03
--  

你的特别说明中的1和2形成了互锁机制。不会形成开仓信号


--  作者:FireScript
--  发布时间:2017/11/21 9:09:11
--  

按照你的说明,你这是要在一个指标(假设C指标)C,里面同时引用A和B的状态了。

 

模型a:
ma20:ma(c,20);
buycond:cross(c,ma20);
sellcond:cross(ma20,c);
if buycond then buy(holding=0,1,market);
if sellcond then sell(holding>0,holding,MARKET);
aholding:holding;

 


模型b:
ma30:ma(c,30);
buycond:cross(c,ma30);
sellcond:cross(ma30,c);
if buycond then buy(holding=0,1,market);
if sellcond then sell(holding>0,holding,MARKET);
bholding:holding;


模型c:
bholding:STKINDI(\'\',\'b.bholding\',0,7,0);//  引用a,b的变量
aholding:STKINDI(\'\',\'a.holding\',0,3,0);

asellcond:STKINDI(\'\',\'a.sellcond\',0,3,0);
bsellcond:STKINDI(\'\',\'b.sellcond\',0,7,0);

abuycond:STKINDI(\'\',\'a.buycond\',0,3,0);
bbuycond:STKINDI(\'\',\'b.buycond\',0,7,0);


if bholding>0 and aholding>0 and not(asellcond or bsellcond) then buy(holding=0,1,MARKET);//开仓
if (bholding>0 and asellcond) or bsellcond  then sell(holding>0,holding,MARKET);//平仓

 

 

 

 


--  作者:xdzgjzt
--  发布时间:2017/11/22 19:58:56
--  
因为A模型和B模型是加载在不同周期的,请问老师我该如何回测?
--  作者:wenarm
--  发布时间:2017/11/23 8:13:47
--  

分开分别回测。两个策略不能同时回测。


--  作者:xdzgjzt
--  发布时间:2017/11/23 18:42:59
--  
因为A模型和B模型是加载在不同周期的,请问老师我该如何回测?
--  作者:wenarm
--  发布时间:2017/11/23 22:05:10
--  
只能逐个进行测试。
单策略回测
http://www.weistock.com/WeisoftHelp/chengshihuajiaoyipingce.htm
多策略组合回测
http://www.weistock.com/WeisoftHelp/duocelchengshihuajiaoyipingce.htm

--  作者:xdzgjzt
--  发布时间:2017/11/24 7:04:29
--  
同样的问题我在文华也咨询过,文华回复我的上述思路要用到算法模型,只能实盘或模拟盘运行,无法回测。请问金字塔能否回测上述模型?如果可以,该如何回测?因为我的两个模型涉及不同周期,该如何操作回测?