金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
楼主: 105092

请大佬帮忙编写

[复制链接]

43

主题

162

帖子

172

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2023-2-8 09:35 | 显示全部楼层
程序一直启动着,连亏2笔没加仓,连亏4笔直接加仓到3手

补充内容 (2023-2-8 09:38):
我没有锁仓操作,THOLDING应该不会影响吧
截图202302080934398378.png
回复

使用道具 举报

43

主题

162

帖子

172

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2023-2-8 09:53 | 显示全部楼层
连亏2笔后,挂单2手未成交,撤单后仓位变成了3手;
盈利1笔后,没有递减,直接又变成了1手。
截图202302080951367118.png
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-2-8 10:14 | 显示全部楼层
这个逻辑暂时没考虑到  加仓(你上面这里看记录有加仓,连续2笔开仓)以及撤单情况。出现这2种情况,会怎样暂时是不可预知的。


而且估计也没法考虑到加仓和撤单的逻辑,这样的逻辑可能会过于复杂。 我暂时先不考虑这2个情况。

然后前面那个  1-3 这个我看了 是4次连亏后的情况和前面的逻辑产生交集了,这里没处理好,我重新了做了隔离 应该可以了。我看了一个品种的信号 暂时没看到那种1-3的情况了。 图表上确认没问题 我再调整后台的逻辑吧。另外我把4连亏以上的情况发生的位置做了笑脸的标记 作为调试用。

[PEL] 复制代码
INPUT:cw(1,1,100,1);
VARIABLE:kc:=0;//表示开仓百分比。所有开仓手数 请用kc% 替换,来实现开仓量的控制
VARIABLE:mark:=0;
if kc=0 then kc:=cw;
  
  
//这里不区分是平多的盈亏 还是平空的盈亏
//利用NUMPROFIT函数获取后台运行记录里的盈亏记录数据 来判断连亏或连赢的情况
2lk:NUMPROFIT(1)<0 and NUMPROFIT(2)<0;
2ly:NUMPROFIT(1)>0 and NUMPROFIT(2)>0;
3ly:NUMPROFIT(1)>0 and NUMPROFIT(2)>0 and NUMPROFIT(3)>0;
4lk:NUMPROFIT(1)<0 and NUMPROFIT(2)<0 and NUMPROFIT(3)<0 and NUMPROFIT(4)<0;
5lk:NUMPROFIT(1)<0 and NUMPROFIT(2)<0 and NUMPROFIT(3)<0 and NUMPROFIT(4)<0 and NUMPROFIT(5)<0 ;
  
  
// 暂以多头为例
  
//3-2-3
if 2lk and NUMPROFIT(3)>0  and holding=0  and kc=2*cw and mark=0 then
begin
kc:=3*cw; 
end
  
  
//1-2
if 2lk and holding=0 and kc=cw and mark=0 then
begin
kc:=2*cw; 
end
  
//2-3
if 4lk and holding=0 and kc=2*cw and mark=0 then
begin
kc:=3*cw;   
end
  
//2-1
if  NUMPROFIT(1)>0 and  NUMPROFIT(2)<0 and NUMPROFIT(3)<0 and holding=0  and kc=2*cw and mark=0 then
begin
kc:=cw;
end
  
  
//3-2
if NUMPROFIT(1)>0  and holding=0 and kc=3*cw and mark=0 then
begin
kc:=2*cw;   
end
  
//3-2-1
if 2ly  and holding=0 and kc=2*cw and mark=0 then
begin
kc:=cw; 
end
  
  

  
//4连亏之后
  
if 5lk then mark:=1;//5连亏后标记下
  
DRAWICON(mark and not(ref(mark,1)),h,1);
//3-2
if mark=1 and 2ly and kc=3*cw then
begin
kc:=2*cw;   
end
  
//3-2-1
if 3ly and kc=2*cw and mark then
begin
kc:=1*cw;   
mark:=0; 
end

//3-2-3
if 2lk and kc=2*cw and mark then
begin
kc:=3*cw;   
mark:=0;
end
 
  
  
  
kd:MOD(TODAYBAR,1)=0;
pd:MOD(TODAYBAR,7)=0;
  
buy(kd and holding=0,kc,MARKet);
sell(pd,0,MARKet);




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

使用道具 举报

43

主题

162

帖子

172

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2023-2-8 11:19 | 显示全部楼层
完全复制上面的代码,图表显示是完全符合预期的,但是,开平仓替换为我原本的开平条件,就还是会变成1-3的情况
以下是部分开平语句,可以帮我下是不是哪里有冲突呢?
IF SPPC1 OR SPPC2 OR  SPPC3 THEN BEGIN
收盘平多:SELL(1,0,MARKET);
收盘平空:SELLSHORT(1,0,MARKET);
END

IF (JXZY OR JXZY1) AND BUYCD<>1 THEN BEGIN
        SELL(1,0,MARKETR);
END
IF (JXZY2 OR JXZY3) AND SELLCD<>1 THEN BEGIN
        SELLSHORT(1,0,MARKETR);
END
IF DZS and avgenterprice<>0 AND HOLDING>0 AND BUYCD<>1 THEN BEGIN
SELL(1,0,LIMITR,C);
END

IF KZS and avgenterprice<>0  AND HOLDING<0 AND SELLCD<>1 THEN BEGIN
SELLSHORT(1,0,LIMITR,C);
END
IF (BUYCD )AND TYPEBAR(1,2)<>0 THEN BEGIN
        BUY(HOLDING=0,KC,LIMITR,O);
END

IF (SELLCD)AND TYPEBAR(1,4)<>0 THEN BEGIN
        BUYSHORT(HOLDING=0,KC,LIMITR,O);
END

IF (BUYCD1 )AND TYPEBAR(1,2)<>0 THEN BEGIN
        BUY(HOLDING=0,KC,MARKET);
END

IF (SELLCD1)AND TYPEBAR(1,4)<>0 THEN BEGIN
        BUYSHORT(HOLDING=0,KC,MARKET);
END
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-2-8 11:23 | 显示全部楼层
你另外截图下你图表上信号 我再对照你这个代码看下。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

43

主题

162

帖子

172

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2023-2-8 11:25 | 显示全部楼层
如图:
截图202302081125102606.png
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-2-8 13:21 | 显示全部楼层
[PEL] 复制代码
INPUT:cw(1,1,100,1);
VARIABLE:kc:=0;//表示开仓百分比。所有开仓手数 请用kc% 替换,来实现开仓量的控制
VARIABLE:mark:=0;
if kc=0 then kc:=cw;


IF SPPC1 OR SPPC2 OR  SPPC3 THEN BEGIN
收盘平多:SELL(1,0,MARKET);
收盘平空:SELLSHORT(1,0,MARKET);
END

IF (JXZY OR JXZY1) AND BUYCD<>1 THEN BEGIN
        SELL(1,0,MARKETR);
END
IF (JXZY2 OR JXZY3) AND SELLCD<>1 THEN BEGIN
        SELLSHORT(1,0,MARKETR);
END
IF DZS and avgenterprice<>0 AND HOLDING>0 AND BUYCD<>1 THEN BEGIN
SELL(1,0,LIMITR,C);
END

IF KZS and avgenterprice<>0  AND HOLDING<0 AND SELLCD<>1 THEN BEGIN
SELLSHORT(1,0,LIMITR,C);
END




   
   
//这里不区分是平多的盈亏 还是平空的盈亏
//利用NUMPROFIT函数获取后台运行记录里的盈亏记录数据 来判断连亏或连赢的情况
2lk:NUMPROFIT(1)<0 and NUMPROFIT(2)<0;
2ly:NUMPROFIT(1)>0 and NUMPROFIT(2)>0;
3ly:NUMPROFIT(1)>0 and NUMPROFIT(2)>0 and NUMPROFIT(3)>0;
4lk:NUMPROFIT(1)<0 and NUMPROFIT(2)<0 and NUMPROFIT(3)<0 and NUMPROFIT(4)<0;
5lk:NUMPROFIT(1)<0 and NUMPROFIT(2)<0 and NUMPROFIT(3)<0 and NUMPROFIT(4)<0 and NUMPROFIT(5)<0 ;
   
   
// 暂以多头为例
   
//3-2-3
if 2lk and NUMPROFIT(3)>0  and holding=0  and kc=2*cw and mark=0 then
begin
kc:=3*cw; 
end
   
   
//1-2
if 2lk and holding=0 and kc=cw and mark=0 then
begin
kc:=2*cw; 
end
   
//2-3
if 4lk and holding=0 and kc=2*cw and mark=0 then
begin
kc:=3*cw;   
end
   
//2-1
if  NUMPROFIT(1)>0 and  NUMPROFIT(2)<0 and NUMPROFIT(3)<0 and holding=0  and kc=2*cw and mark=0 then
begin
kc:=cw;
end
   
   
//3-2
if NUMPROFIT(1)>0  and holding=0 and kc=3*cw and mark=0 then
begin
kc:=2*cw;   
end
   
//3-2-1
if 2ly  and holding=0 and kc=2*cw and mark=0 then
begin
kc:=cw; 
end
   
   
 
   
//4连亏之后
   
if 5lk then mark:=1;//5连亏后标记下
   
//3-2
if mark=1 and 2ly and kc=3*cw then
begin
kc:=2*cw;   
end
   
//3-2-1
if 3ly and kc=2*cw and mark then
begin
kc:=1*cw;   
mark:=0; 
end
 
//3-2-3
if 2lk and kc=2*cw and mark then
begin
kc:=3*cw;   
mark:=0;
end
  
   
   
   


IF (BUYCD )AND TYPEBAR(1,2)<>0 THEN BEGIN
        BUY(HOLDING=0,KC,LIMITR,O);
END

IF (SELLCD)AND TYPEBAR(1,4)<>0 THEN BEGIN
        BUYSHORT(HOLDING=0,KC,LIMITR,O);
END

IF (BUYCD1 )AND TYPEBAR(1,2)<>0 THEN BEGIN
        BUY(HOLDING=0,KC,MARKET);
END

IF (SELLCD1)AND TYPEBAR(1,4)<>0 THEN BEGIN
        BUYSHORT(HOLDING=0,KC,MARKET);
END


我考虑了下 你这里有可能出现因为代码顺序出错的可能性。 就是仓位调整代码在平仓语句之前,那么本根K平仓导致的仓位变化的效果 对后面相同K触发的开仓语句的执行是不奏效的。按照上面方式 把平仓语句全部放到仓位调整的语句前面去,开仓语句放到最后面。就是代码其实没变,但是调整了顺序。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

43

主题

162

帖子

172

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2023-2-8 13:38 | 显示全部楼层
顺序调整之后还是不行,没有变化。
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-2-8 13:45 | 显示全部楼层
那联系下我的工作q:1486123774

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 14:06 , Processed in 0.134735 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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