金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
楼主: 105086

请教老师

[复制链接]

2

主题

5130

帖子

5130

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-7-3 10:41 | 显示全部楼层
[PEL] 复制代码
input:x(3,1,100,1);
variable:re:=0;//利用全局变量来记录上一个k统计的结果,这样可以在开仓语句中使用

平1:sell(平仓1,if(re<x,1,2),market);
kx:=valid(平1);

//平仓1触发的开仓次数 赋值给全局变量re
re:=count(kx,0);
回复

使用道具 举报

108

主题

880

帖子

890

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2025-7-3 12:53 | 显示全部楼层
bars:=barslast(holding>0);

variable:flag1=0;       

ss:=(5,1,10);

IF 平仓条件1  and flag1=0 then begin
       
        平仓1:sell(1 and holding>0 ,ss-4,thisclose);

and flag1:=1;

end;
…………
…………

IF 平仓条件2  and flag1>3 then begin
       
        平仓1:sell(1 and holding>0 ,ss-3,thisclose);

and flag1:=4;

end;

如果是用的这个写法呢? 老师帮忙修改一下
回复

使用道具 举报

108

主题

880

帖子

890

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2025-7-3 13:50 | 显示全部楼层
你好老师上面的代码帮忙审核修改一下呢
回复

使用道具 举报

108

主题

880

帖子

890

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2025-7-3 14:08 | 显示全部楼层
???
回复

使用道具 举报

2

主题

5130

帖子

5130

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-7-3 14:16 | 显示全部楼层
全局变量的写法这样就行了:
你提供的那个代码我没能理解,我直接按照全局变量思路处理如下:
[PEL] 复制代码
bars:=barslast(holding>0);

variable:flag1=0;     

if 平仓条件1 and holding>0  then 
begin
realss:=if(flag1<3,1,2);//根据flag1 调整手数        
平仓1:=sell(1,realss,thisclose);
flag1:=flag1+1;
end  

回复

使用道具 举报

108

主题

880

帖子

890

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2025-7-3 16:02 | 显示全部楼层
bars:=barslast(holding>0);

variable:flag1=0;   

if 平仓条件1 and holding>0  then
begin
realss:=if(flag1<3,1,2);//根据flag1 调整手数      
平仓1:=sell(1,1,thisclose);
flag1:=flag1+1;
end  // 这里平仓手数会出错  



改成这样,是否正确?
if 平仓条件1 and flag1=1 and holding>0  then
begin
     
平仓2:=sell(1,1,thisclose);
flag1:=flag1+1;
end

............
...........


if 平仓条件1 and flag1>=4 and holding>0  then
begin
     
平仓n:=sell(1,2,thisclose);
flag1:=flag1+1;
end

这么写法可以?
回复

使用道具 举报

108

主题

880

帖子

890

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2025-7-3 16:12 | 显示全部楼层
realss:=if(flag1<3,1,2);//根据flag1 调整手数      
平仓1:=sell(1,realss,thisclose);  这里用realss会有手数出错,所以放弃这个写法
回复

使用道具 举报

2

主题

5130

帖子

5130

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-7-3 16:20 | 显示全部楼层
如果没理解错,你是挨个判断 写了好几组 这样的if语句?你那个写法,应该会一次出多个平仓信号了吧。你这个最好自己加载看下验证下,我看到的都是残缺不完整的代码,不太好直接判的。


我前面提供的方案应该是没有问题的:
补上开仓语句你自己看下吧
[PEL] 复制代码

buy(barpos=1,100,market);
平仓条件1:todaybar=1;
variable:flag1=0;     
 
if 平仓条件1 and holding>0  then
begin
realss:=if(flag1<3,1,2);//根据flag1 调整手数        
平仓1:=sell(1,realss,thisclose);
flag1:=flag1+1;
end 



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号? 微信登录

x
回复

使用道具 举报

108

主题

880

帖子

890

积分

Rank: 4

等级: 专业版

注册:
2022-8-5
曾用名:
 楼主| 发表于 2025-7-3 16:34 | 显示全部楼层
不行,得改成我的写法。这里通不过用不上。改成这样,是否正确?


if 平仓条件1 and flag1=1 and holding>0  then
begin
     
平仓2:=sell(1,1,thisclose);
flag1:=flag1+1;
end

............
...........


if 平仓条件1 and flag1>=4 and holding>0  then
begin
     
平仓n:=sell(1,2,thisclose);
flag1:=flag1+1;
end

这里末尾需要重置回 flag1=?吗?要的化如何写
回复

使用道具 举报

2

主题

5130

帖子

5130

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-7-3 16:45 | 显示全部楼层
本帖最后由 资深技术05 于 2025-7-3 16:47 编辑

1.如果平仓条件1 满足。按你这个代码顺序。你这里一根K上 你会平好几次的。你这几个平仓都是平仓条件1控制的。第一个平完,flag1 就是2了,然后直接进入第二个判断 flag1=2 ,以此类推。


你要把 包含flag1>=4 这个放到前面。flag1=1 的放到后面。从大到小去判断


2.是否需要重置,看你需求的。你目前逻辑历史信号上很容易就已经累计足够多的平仓1触发的次数,导致后续会一直按照最大手数进行平仓了。所以要不要重置,怎么重置看你的策略思路了。

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-10 20:47 , Processed in 0.152270 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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