金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
楼主: 105092

请大佬帮忙编写

[复制链接]

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-2-2 09:47 | 显示全部楼层
先说你这个1和2,合并下来其实就是2个逻辑吧:
1.连亏2次 加仓1手
2.盈利一次 减仓一手

就遵循这2个逻辑 应该就完全覆盖了 你这里1和2了。当然有一个前提是连亏不超过4(含4)



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

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-2-2 10:12 | 显示全部楼层
3 总结下:
连亏大于4笔后
1.连赢2次 减仓一手 (此时手数为2)
2.连赢3次 再减仓一手 (此时手数为1)
3. 1或2 之后 连亏大于等于2笔 直接加仓到3手 转入到 前面“二”的逻辑里处理。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

43

主题

162

帖子

172

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2023-2-2 10:29 | 显示全部楼层
3. 1或2 之后 连亏大于等于2笔 直接加仓到3手 转入到 前面“二”的逻辑里处理。


这一点不对,只能在1之后加仓到3手,2之后的手数变成了1手,需要重头开始计算连亏了,相当于回到了“一”里面。
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-2-3 17:06 | 显示全部楼层
这里是一个测试范例,仅仅用来测试逻辑的,我本地运行了一天,暂时没看到太多问题。
你设置一个多秒,然后走完K下单的,单品种测试也看看。

[PEL] 复制代码
INPUT:cw(1,1,100,1);
GLOBALVARIABLE:kc:=0;//表示开仓百分比。所有开仓手数 请用kc% 替换,来实现开仓量的控制
GLOBALVARIABLE:mark:=0;
if kc=0 then kc:=cw;


//这里不区分是平多的盈亏 还是平空的盈亏
//利用TNUMPROFIT函数获取后台运行记录里的盈亏记录数据 来判断连亏或连赢的情况
2lk:TNUMPROFIT(1)<0 and TNUMPROFIT(2)<0;
2ly:TNUMPROFIT(1)>0 and TNUMPROFIT(2)>0;
3ly:TNUMPROFIT(1)>0 and TNUMPROFIT(2)>0 and TNUMPROFIT(3)>0;
4lk:TNUMPROFIT(1)<0 and TNUMPROFIT(2)<0 and TNUMPROFIT(3)<0 and TNUMPROFIT(4)<0;
5lk:TNUMPROFIT(1)<0 and TNUMPROFIT(2)<0 and TNUMPROFIT(3)<0 and TNUMPROFIT(4)<0 and TNUMPROFIT(5)<0 ;


// 暂以多头为例

//3-2-3
if 2lk and TNUMPROFIT(3)>0  and TBUYHOLDINGEX('','',2)=0  and kc=2*cw then 
begin
kc:=3*cw; 
end 


//1-2
if 2lk and TBUYHOLDINGEX('','',2)=0 and kc=cw then 
begin
kc:=2*cw; 
end 

//2-3
if 4lk and TBUYHOLDINGEX('','',2)=0 and kc=2*cw then 
begin 
kc:=3*cw;	
end 

//2-1
if  TNUMPROFIT(1)>0 and  TNUMPROFIT(2)<0 and TNUMPROFIT(3)<0 and TBUYHOLDINGEX('','',2)=0  and kc=2*cw then 
begin 
kc:=cw;
end 


//3-2
if TNUMPROFIT(1)>0  and TBUYHOLDINGEX('','',2)=0 and kc=3*cw then 
begin 
kc:=2*cw;	
end 

//3-2-1
if 2ly  and TBUYHOLDINGEX('','',2)=0 and kc=2*cw 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;	 
end 

//3-2-3
if 2lk and kc=2*cw and mark then 
begin
kc:=3*cw;	
mark:=0; 
end 

//暂时用固定手数便于理解,原始仓位1手,仓位总递增次数不超过2次。
//一:连续亏损2笔,仓位递增1次,此时2手,若盈利1次,仓位恢复至1手;
//二:若未有盈利,连续亏损4笔,仓位再次递增至3手,①若盈利第一笔,仓位递减一次至2手,②若连续盈利2笔仓位恢复至1手,③若递减一次后,再次出现连亏大于等于2笔,仓位再次递增至3手,则继续以①②处理,直至仓位恢复至1手;(若递减后出现盈亏交替,仓位维持当下)
//三:若连续亏损大于4笔(此情况也可能出现在第二点③中),仓位仍保持3手,①若连续盈利2笔仓位递减1次至2手,②若连续盈利3笔仓位恢复至1手,③若递减一次后,再次出现连亏大于等于2笔,仓位再次递增至3手,以第二点连亏4笔处理,直至仓位恢复至1手。(若递减后出现盈亏交替,仓位维持当下)




kd:MOD(TODAYBAR,1)=0;
pd:MOD(TODAYBAR,3)=0;

tbuy(kd and TBUYHOLDINGEX('','',2)=0,kc,mkt);
tsell(pd and TBUYHOLDINGEX('','',1)>0,0,mkt);
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

43

主题

162

帖子

172

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2023-2-6 10:44 | 显示全部楼层
谢谢版主!
我把里面的后台代码改成了图表代码,但是KC的输出都是1,是什么原因呢?
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-2-6 10:59 | 显示全部楼层


你要改成图表的话,相应的 TNUMPROFIT 函数也要改下。2个全局变量也要改的。

你先用后台挂着跑下。我本地也跑着在,尽量把大部分可能出现的情况都跑一遍。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

43

主题

162

帖子

172

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2023-2-7 16:50 | 显示全部楼层
后台在跑,暂时都正常;
我想换成图表拉长周期回测一下,看看效果,但是更改之后图表上没有递增递减这个过程,麻烦帮我看一下是什么原因?

VARIABLE:kc:=0;
VARIABLE:mark:=0;
if kc=0 then kc:=cw;
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 ;

//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=1 then
begin
kc:=1*cw;   
end

//3-2-3
if 2lk and kc=2*cw and mark=1 then
begin
kc:=3*cw;   
mark:=0;
end


//1-2
if 2lk and HOLDING=0 and kc=cw then
begin
kc:=2*cw;
end

//2-3
if 4lk and HOLDING=0 and kc=2*cw then
begin
kc:=3*cw;   
end
//3-2-3
if 2lk and NUMPROFIT(3)>0  and HOLDING=0  and kc=2*cw 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 then
begin
kc:=cw;
end


//3-2
if NUMPROFIT(1)>0  and HOLDING=0 and kc=3*cw then
begin
kc:=2*cw;   
end

//3-2-1
if 2ly  and HOLDING=0 and kc=2*cw then
begin
kc:=cw;
end
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-2-7 17:09 | 显示全部楼层
你这个代码 和我那个有变动的呀。

[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 then
begin
kc:=3*cw; 
end
 
 
//1-2
if 2lk and holding=0 and kc=cw then
begin
kc:=2*cw; 
end
 
//2-3
if 4lk and holding=0 and kc=2*cw 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 then
begin
kc:=cw;
end
 
 
//3-2
if NUMPROFIT(1)>0  and holding=0 and kc=3*cw then
begin
kc:=2*cw;   
end
 
//3-2-1
if 2ly  and holding=0 and kc=2*cw 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;    
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,3)=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 09:20 | 显示全部楼层
后台跑的那个直接复制代码的,把最后四句替换成自己的开平仓条件,TBUYHOLDINGEX('','',2)=0替换成了THOLDING=0,跑下来也是有问题的,也会出现没有递增的情况,1手连亏后直接加仓到3手;
直接复制的图表代码,没有任何替换,用的多秒周期,显示也是有一些问题。
截图202302080918462307.png
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-2-8 09:27 | 显示全部楼层
“TBUYHOLDINGEX('','',2)=0替换成了THOLDING=0”
这里会有一些判断差异问题的。THOLDING你可以理解成净持仓。多空锁仓时候它也是返回0的。


另外贴下你后台监控页面的记录。把涉及到“1手连亏后直接加仓到3手”的部分截图下来我看下。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-10 05:18 , Processed in 0.174073 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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