以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  版主,这个指标应该怎么写?谢谢  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=153118)

--  作者:wxx212
--  发布时间:2017/5/17 11:09:12
--  版主,这个指标应该怎么写?谢谢

趋势:=ma(c,300);
操作:=ma(c,80);


KD:=c>=趋势 and 趋势>ref(趋势,1) and cross(c,操作);          //开多条件
PD:=cross(趋势,c);          //平多条件
KK:=c<=趋势 and 趋势<ref(趋势,1) and cross(操作,c);          //开空条件
PK:=cross(c,趋势);          //平空条件


平空:SELLSHORT(PK,1,MARKET);                  //平空信号
开多:BUY(KD AND HOLDING=0,1,MARKETE);          //开多信号
平多:SELL(PD,1,MARKET);                       //平多信号
开空:BUYSHORT(KK AND HOLDING=0,1,MARKET);     //开空信号
资金:asset;

{以下不会编写,以文字叙述}
{思路是先对单个品种交易的资金进行管理,然后对所有交易品种的资金进行管理}


{此处为单个品种资金管理部分}
tt:=150+(150根K线内没有持仓的K线数量)
s1:ma(hhv(资金,tt),tt);
X1:ma(llv(资金,tt),tt);

A,当 资金下穿X1 的时候 交易停止并且把已有头寸清空
B,当 资金上穿S1 的时候 交易重新开始 并且 接回 应该有的头寸(就是按照KD,KK信号持有的头寸)
D,,当 连续亏损3次 交易停止并且把已有头寸清空
E,当 资金回调2%时 交易停止并且把已有头寸清空
F,当 资金反弹3%并且资金>=x1 时 交易重新开始 接回 应该有的头寸(就是按照KD,KK信号持有的头寸)
执行1:if(HOLDING<>0,1,0);(就是满足ABDEF条件后持有头寸的时候为1,其余为0)



{此处为所有品种资金管理部分}
{整个程序将用在螺纹钢和HC  2个品种上,以下是将2个品种的资金相加后的控制}
总资金:=asset(螺纹钢)+asset(HC);
ztt:=150+(150根K线内没有持仓的K线数量)
zs1:ma(hhv(总资金,ztt),ztt);
zX1:ma(llv(总资金,ztt),ztt);

ZA,当 总资金下穿ZX1 的时候 交易停止并且把已有头寸清空
ZB,当 总资金上穿ZS1 的时候 交易重新开始 并且 接回 应该有的头寸(就是按照执行1信号持有的头寸)

ZE,当 总资金回调2%时 交易停止并且把已有头寸清空
ZF,当 总资金反弹3%并且总资金>=x1 时 交易重新开始 接回 应该有的头寸(就是按照执行1信号持有的头寸)



--  作者:wxx212
--  发布时间:2017/5/17 11:27:10
--  
在单个品种资金管理部分 我漏了二个

G,当单次亏损额度超过3次平均亏损额度时候 停止交易并且清空所有头寸
H,当 单次亏损额度小于3次平均亏损额度并且 资金>S1时候 重新开始 并且接回头寸

--  作者:wenarm
--  发布时间:2017/5/17 11:39:44
--  
{此处为所有品种资金管理部分}
{整个程序将用在螺纹钢和HC  2个品种上,以下是将2个品种的资金相加后的控制}
总资金:=asset(螺纹钢)+asset(HC);
ztt:=150+(150根K线内没有持仓的K线数量)
zs1:ma(hhv(总资金,ztt),ztt);
zX1:ma(llv(总资金,ztt),ztt);

ZA,当 总资金下穿ZX1 的时候 交易停止并且把已有头寸清空
ZB,当 总资金上穿ZS1 的时候 交易重新开始 并且 接回 应该有的头寸(就是按照执行1信号持有的头寸)

ZE,当 总资金回调2%时 交易停止并且把已有头寸清空
ZF,当 总资金反弹3%并且总资金>=x1 时 交易重新开始 接回 应该有的头寸(就是按照执行1信号持有的头寸)

 

这一部分在图表选中实现不了,图表中的各个品种是相互独立的


--  作者:wxx212
--  发布时间:2017/5/18 11:57:40
--  
那前面部分的可以编写吗?麻烦版主帮忙
--  作者:wenarm
--  发布时间:2017/5/18 14:26:17
--  

前面部分可以实现,需要确认下,

tt:=150+(150根K线内没有持仓的K线数量)//这个指其实就是空仓以来到现在的k线数量?
s1:ma(hhv(资金,tt),tt);//这个没有任何意义,因为没有持仓说明资金都是可用的并且灭有变化。
X1:ma(llv(资金,tt),tt);

--  作者:wxx212
--  发布时间:2017/5/19 11:16:04
--  
单个品种部分怎么写呢?
--  作者:wenarm
--  发布时间:2017/5/19 12:35:24
--  
请下确认解释5楼的问题
--  作者:wxx212
--  发布时间:2017/5/20 22:28:17
--  
回复5楼
 意思是 有持仓时候的150根K线,无持仓的时候不计算S1和X1。因为我不知道怎么把计算S1和X1的时候把不持仓部分去除在计算公式外,所以S1和X1直接用 150+(150根K线内没有持仓的K线数量)

说道底一句话,有持仓的时候计算S1和X1 如果开始建仓到现在K线的数值不足150,则向上一次持仓时候的数值一起计算。两次持仓中间的不持仓部分,不进入S1和X1的计算。

就是不持仓部分剔除掉,因为不持仓的时候资金是一条水平线,如果计算进去,S1和X1会失真。

--  作者:wenarm
--  发布时间:2017/5/22 9:27:28
--  
就是不持仓部分剔除掉,因为不持仓的时候资金是一条水平线,如果计算进去,S1和X1会失真。

 

这个没办法资金是序列变量,每根k都会参与计算。


--  作者:wxx212
--  发布时间:2017/5/23 8:55:41
--  
5楼已经回复