金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 3539|回复: 3

请教个问题—关于交易次数

[复制链接]

3

主题

16

帖子

16

积分

Rank: 1

等级: 新手上路

注册:
2022-6-17
曾用名:
发表于 2022-6-29 22:34 | 显示全部楼层 |阅读模式
KD:HIGH>ma1 AND REF(JX1,1)>REF(JX1,2) ;
KK:LOW<ma2 AND REF(JX2,1)<REF(JX2,2) ;

IF win>0 THEN
SELL(1,1,THISCLOSE);

IF win1<0 THEN
SELL(win1<-2,1,thisCLOSE);

IF win<0 THEN
SELLSHORT(1,1,THISCLOSE);

IF win1>0 THEN
SELLSHORT(win1>2,1,thisCLOSE);          //平空信号

开多:BUY( KD AND REF(HOLDING,1)=0 AND HOLDING=0,1,LIMITR,ma1);          //开多信号

开空:BUYSHORT( KK AND REF(HOLDING,1)=0 AND HOLDING=0,1,LIMITR,ma2);     //开空信号
请教个问题,我以上的开仓、平仓条件下,不做日内交易,在日K中做图表交易时:
1、单独空头测试时,会出现当日按照收盘价平仓,同时当日又开空仓,怎么避免当日有仓位时,且在收盘时才以收盘价平仓的情况下,当日不新开仓;
2、双向测试时,会出现当日按照收盘价平仓,同时当日先后出现开空、开多信号,怎么避免当日有仓位时,且在收盘时才以收盘价平仓的情况下,当日不新开仓。(这个在图表系统估计实现不了,是吗);

回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-6-30 08:31 | 显示全部楼层
本帖最后由 技术009 于 2022-6-30 08:33 编辑

1.“REF(HOLDING,1)”我看你这里不是做了这个限制的嘛。除非 你前面还有开仓语句,否则这个限制应该是有效的。
相当于昨日仓位,平仓语句又在开仓语句前面,理论上 不会出现平仓后又开仓情况,因为前面根本没有仓位可平才对。  
如果的确是有多个开仓语句,EXITBARS TYPE  可以用这2个函数限制下。先判断最近一次信号是平空,再判断这个信号是不是当前K的。
2.“同时当日先后出现开空、开多信号” 这个不会吧。从你上面这个语句看,除非开多后平多,否则不会开反向空仓的,图表内不能锁仓的,而你这里2个平仓都在开仓语句前。不可能同时出现开多和开空信号的。  限制信号用前面1的2个函数,应该就差不多了。


金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

3

主题

16

帖子

16

积分

Rank: 1

等级: 新手上路

注册:
2022-6-17
曾用名:
 楼主| 发表于 2022-6-30 09:37 | 显示全部楼层


result1:=MA(HIGH,6)-MA(OPEN,6);


result2:=MA(OPEN,6)-MA(LOW,6);

JX1:=MA(CLOSE,22);
JX2:=MA(CLOSE,20);

ma1: O+REF(result1,1)*1.2;
ma2: O-REF(result2,1)*1.2;
ma3: O-REF(result1,1)*2.25;
ma4: O+REF(result2,1)*2.25;

win:(c-enterprice)/enterprice*100;
win1:(LOW-enterprice)/enterprice*100;

KD:HIGH>ma1 AND REF(JX1,1)>REF(JX1,2) ;
KK:LOW<ma2 AND REF(JX2,1)<REF(JX2,2) ;

IF win>0 THEN
平多1:SELL(1,1,THISCLOSE);

IF win1<0 THEN
平多2:SELL(win1<-2,1,thisCLOSE);

IF win<0 THEN
平空1:SELLSHORT(1,1,THISCLOSE);

IF win1>0 THEN
平空2:SELLSHORT(win1>2,1,thisCLOSE);          //平空信号

开多:BUY( KD AND REF(HOLDING,1)=0 AND HOLDING=0,1,LIMITR,ma1);          //开多信号

开空:BUYSHORT( KK AND REF(HOLDING,1)=0 AND HOLDING=0,1,LIMITR,ma2);     //开空信号


上面是我的交易系统
上传的截图是测试结果,出现了当日平仓又开仓的情况:是哪里出了问题,麻烦帮忙看下。


截图202206300935308789.png
截图202206300936354243.png
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-6-30 09:44 | 显示全部楼层
做个微调,问题出在ref身上。ref取值其实是一种切片方式,就是你在第10行ref时候,它取值同样是前面K在第十行时候该变量的值。所以你这里ref时候 因为位置是和开仓语句在一个位置,这时候开仓没完成,你获取的holding其实还是0. 现在改成全局变量记录方式,全局变量始终记录最近一次赋值的结果。


[PEL] 复制代码
VARIABLE:HD:=0;

result1:=MA(HIGH,6)-MA(OPEN,6);
result2:=MA(OPEN,6)-MA(LOW,6);

JX1:=MA(CLOSE,22);
JX2:=MA(CLOSE,20);

ma1: O+REF(result1,1)*1.2;
ma2: O-REF(result2,1)*1.2;
ma3: O-REF(result1,1)*2.25;
ma4: O+REF(result2,1)*2.25;

win:(c-enterprice)/enterprice*100;
win1:(LOW-enterprice)/enterprice*100;

KD:HIGH>ma1 AND REF(JX1,1)>REF(JX1,2) ;
KK:LOW<ma2 AND REF(JX2,1)<REF(JX2,2) ;

IF win>0 THEN
平多1:SELL(1,1,THISCLOSE);

IF win1<0 THEN
平多2:SELL(win1<-2,1,thisCLOSE);

IF win<0 THEN
平空1:SELLSHORT(1,1,THISCLOSE);

IF win1>0 THEN
平空2:SELLSHORT(win1>2,1,thisCLOSE);          //平空信号

开多:BUY( KD AND HD=0 AND HOLDING=0,1,LIMITR,ma1);          //开多信号
开空:BUYSHORT( KK AND HD=0 AND HOLDING=0,1,LIMITR,ma2);     //开空信号
HD:=HOLDING;
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2025-6-1 21:31 , Processed in 0.091010 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表