以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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楼已经回复 |