金字塔决策交易系统

标题: 请老师帮忙编写一个简单的策略 [打印本页]

作者: 顺势而为    时间: 2021-10-27 12:40
标题: 请老师帮忙编写一个简单的策略
可以请老师帮忙编写一个股票交易策略程序吗?

量比指标:T日成交量/过去80天的平均成交量
买入规则:如果同时满足下面五个条件  
(1)T 日的   量比指标  在1.5-4之间,
(2)T日的涨幅大于等于8%,
(3)T+1日 量比指标  在2.5-6之间,
(4)T+1日的涨幅大于等于6%,
(5)T+2至T+6的某一天价位回调到T日的收盘价时买入

卖出规则:在买入之后,如果亏损5%就止损,如果盈利了就在盈利回撤3%后止盈。
作者: 技术009    时间: 2021-10-27 13:29
这个策略代码至少需要专业版以及以上才能实现。请先核实下是否具有后台程序化的使用权限,否则写了你也没办法运行使用的。
作者: 顺势而为    时间: 2021-10-27 14:23
那写出来后免费版的可以做回测吗,如果回测收益率还可以的话,可以购买专业版
作者: 技术009    时间: 2021-10-27 14:27
本帖最后由 技术009 于 2021-10-27 14:29 编辑

后台回测需要在后台程序化功能中使用。免费版也无法回测,不过你可以自行申请一段时间的试用。另外就是你这个策略应该是一个先选股再交易的模式吧?金字塔的回测大体上是 一个策略应用于一个品种,回测在这个品种上从历史到现在的交易过程。
作者: 顺势而为    时间: 2021-10-27 15:29
是的,需要先挑选一些股票放到股票池里面,然后再运行这个程序,有交易信号就交易,没有信号就空仓。
我已经申请到专业版软件的试用了。您可以帮忙编写一下吗
作者: 技术009    时间: 2021-10-27 15:32
本帖最后由 技术009 于 2021-10-27 15:33 编辑

“先挑选一些股票放到股票池里面”这个过程是无法在回测里体现出来的。
只能你自己先使用一些选股功能,选定好品种。然后对这些固定品种进行回测。但是选股这个流程在回测里是无法体现的。

后台的教程吧:https://www.weistock.com/docs/HE ... BA%8F%E5%8C%96.html
可以先熟悉下软件基本操作。


作者: 顺势而为    时间: 2021-10-27 15:59
自己选定好品种,这个可以是手动的,不需要程序自动选股。 程序要做的就是监控股票池里面的股票,达到条件了,就提示开仓。
作者: 技术009    时间: 2021-10-27 16:49
[PEL] 复制代码
LB:VOL/(REF(MA(VOL,80),1));
ZDF:100*(C/REF(C,1)-1);

CD1:RANGE(REF(LB,1),1.5,4) AND RANGE(LB,2.5,6) AND REF(ZDF>=8,1) AND ZDF>=6;//这个是判断是否存在一个符合条件的T+1日

DRAWTEXT(CD1,H,'T+1',COLORYELLOW,0);
P1:=VALUEWHEN(CD1,C);
LEN:=BARSLAST(CD1);

KD:LEN>=1 AND LEN<=5 AND C<=P1;
DRAWICON(KD,H,1);

这不是交易代码,只是处理了下指标的逻辑。用来校验逻辑的。
先加载K线图上核对下。笑脸是下单,T+1位置也输出了。笑脸可能是连续的。这个不用管。下单时候只会按照第一个触发。

作者: 技术009    时间: 2021-10-28 11:08
[PEL] 复制代码
INPUT:SS(1000,100,100000,1);
LB:VOL/(REF(MA(VOL,80),1));
ZDF:100*(C/REF(C,1)-1);

CD1:RANGE(REF(LB,1),1.5,4) AND RANGE(LB,2.5,6) AND REF(ZDF>=8,1) AND ZDF>=6;//这个是判断是否存在一个符合条件的T+1日

DRAWTEXT(CD1,H,'T+1',COLORYELLOW,0);
P1:=VALUEWHEN(CD1,C);
LEN:=BARSLAST(CD1);

KD:LEN>=1 AND LEN<=5 AND C<=P1;
DRAWICON(KD,H,1);

TBUY(KD AND TBUYHOLDINGEX('','',1)=0,SS,MKT);
//固定止损止盈模块部分*******************************
//固定止损条件判断
ZSCOND:TAVGENTERPRICEEX2('' ,'' ,0)/DYNAINFO(  7)>1.05;
TSELL(ZSCOND,TBUYHOLDINGEX( '','' ,0 ),MKT,0);


//移动止损模块部分*******************************
strH:=STRCAT(STRCAT(STKLABEL,'_'),'H');

IF TBUYHOLDINGEX('','',2)=0 THEN BEGIN //没有持仓的时候,最高价的记录自动重置为0
EXTGBDATASET(strH,0);
END

if TBUYHOLDINGEX('','',1)<>0 and  c>EXTGBDATA(strH)  then
begin
EXTGBDATASET(strH,c);        //重新记录最高价
end

//最新价已经从最高价回撤3% 则平仓
IF  EXTGBDATA(strH)>TAVGENTERPRICEEX2('' ,'' ,0) AND (EXTGBDATA(strH)-c)/EXTGBDATA(strH)>=3/100 and TBUYHOLDINGEX('','',1)>0   THEN BEGIN
tsell(1,0,mkt);       
END


这样试下。ss是下跌股数,默认是1000股 10手。
作者: 顺势而为    时间: 2021-10-28 14:52
谢谢老师,我刚刚测试了一下,完全没有交易记录,但是我选择的品种都是有交易信号的。

编译公式的时候系统提示:
第 25 行,使用 EXTGBDATASET 函数应该注意可能会带来冲突的问题。
第 28 行,使用 EXTGBDATA 函数应该注意可能会带来冲突的问题。
第 30 行,使用 EXTGBDATASET 函数应该注意可能会带来冲突的问题。
第 34 行,使用 EXTGBDATA 函数应该注意可能会带来冲突的问题。
第 34 行,使用 EXTGBDATA 函数应该注意可能会带来冲突的问题。
第 34 行,使用 EXTGBDATA 函数应该注意可能会带来冲突的问题。

请参阅帮助公式部分的解决方案。
http://www.weistock.com/bbs/dispbbs.asp?boardid=10&Id=48570

补充内容 (2021-10-28 14:54):
CD1:RANGE(REF(LB,1),1.5,4) AND RANGE(LB,2.5,6)
我把第五行的代码 改为了 CD1:RANGE(REF(LB,1),1,4) AND RANGE(LB,2,6),范围扩大,还是没有交易记录
作者: 技术009    时间: 2021-10-28 14:53
1.编译提示忽略掉不用管。
2.你是回测还是实际模拟交易了?
作者: 顺势而为    时间: 2021-10-28 15:23
我是回测,策略回测,没有模拟交易
作者: 技术009    时间: 2021-10-28 15:25
这是图表回测。和后台程序化没有关联的。
后台回测只能用这个:

[attach]3599[/attach]




欢迎光临 金字塔决策交易系统 (https://www.weistock.com/bbs/) Powered by Discuz! X3.4