金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 2558|回复: 7

止盈平仓里“多单1级止盈”为什么不会触发?我检查了没看到什么问题啊,请老师指引...

[复制链接]

75

主题

191

帖子

191

积分

等级: 免费版

注册:
2023-4-11
曾用名:
发表于 2023-5-9 10:11 | 显示全部楼层 |阅读模式
[PEL] 复制代码
//开多单

  if DK and  多可用=0 then begin 
  	
     多开:tbuy(1,1,lmt,c-1*MINDIFF);
     
  end

//多单 1 级止盈
 
IF (maxpro1-dyk)/maxpro1>=1 and EXTGBDATA(str1 )>0 and MAXPRO1>=5*mindiff THEN BEGIN
	
TSELL(1,1,MKT );

EXTGBDATASET( str1,0);drawicon(1,low,1);

END  
 
//多单 2 级止盈
 
IF (maxpro1-dyk)/maxpro1>=0.8 and EXTGBDATA(str1 )>0 and MAXPRO1>=10*mindiff THEN BEGIN
	
TSELL(1,1,MKT );

EXTGBDATASET( str1,0);drawicon(1,low,2);

END
 
//多单 3 级止盈
 
IF (maxpro1-dyk)/maxpro1>=0.6 and EXTGBDATA(str1 )>0 and MAXPRO1>=15*mindiff THEN BEGIN
	
TSELL(1,1,MKT );

EXTGBDATASET( str1,0);drawicon(1,low,3);

END 
 
//多单 4 级止盈
 
IF (maxpro1-dyk)/maxpro1>=0.4 and EXTGBDATA(str1 )>0 and MAXPRO1>=20*mindiff THEN BEGIN
	
TSELL(1,1,MKT );

EXTGBDATASET( str1,0);drawicon(1,low,4);

END 
 
//多单 5 级止盈
 
IF (maxpro1-dyk)/maxpro1>=0.2 and EXTGBDATA(str1 )>0 and MAXPRO1>=25*mindiff THEN BEGIN
	
TSELL(1,1,MKT );

EXTGBDATASET( str1,0);drawicon(1,low,5);

END  



老师你好!这个止盈平仓里“多单1级止盈”为什么不会触发?我检查了没看到什么问题啊,请老师指引一下。
回复

使用道具 举报

37

主题

9981

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-5-9 10:28 | 显示全部楼层
这段代码首先逻辑上存在漏洞(保证策略的稳定性,让策略不会因为后期维护调整代码顺序等因素影响执行结果)。但是由于是幅度从大到小,理论上应该是可以正常执行的。所以建议您在代码中增加debugfile输出这类maxpro1、dyk变量的结果,用于验证。

其次代码中,关于分级执行,其范围应该两头堵的原则。否者大值涵盖小值。和生活中把排队的100人等分成5队一样。0--20,21--40.所以:

fudu:(maxpro1-dyk)/maxpro1
//分级1,大于1的
IF fudu>=1    ....
//在1和0.8之间范围,其他依次类推
IF fudu<1   and  and >=0.8  ......
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

75

主题

191

帖子

191

积分

等级: 免费版

注册:
2023-4-11
曾用名:
 楼主| 发表于 2023-5-9 11:02 | 显示全部楼层
技术006 发表于 2023-5-9 10:28
这段代码首先逻辑上存在漏洞(保证策略的稳定性,让策略不会因为后期维护调整代码顺序等因素影响执行结果) ...

赋值和直接判断有什么区别吗?我的理解
IF (maxpro1-dyk)/maxpro1>=1,1,0) 和IF (fudu>=1,1,0),是一个意思啊
回复

使用道具 举报

37

主题

9981

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-5-9 11:20 | 显示全部楼层
本帖最后由 技术006 于 2023-5-9 12:50 编辑

没有区别。但是后者相对来说可以提高效率。算一次后用,和每次用都要算的区别。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

75

主题

191

帖子

191

积分

等级: 免费版

注册:
2023-4-11
曾用名:
 楼主| 发表于 2023-5-9 11:37 | 显示全部楼层
技术006 发表于 2023-5-9 11:20
没有区别。但是相对来说可以提高效率。算一次后用,和每次用都要算的区别。

老师你可能没有理解我的意思,我想表达的是:
1、当最大盈利>=5*mindiff ,利润回吐100%,平仓
2、当最大盈利>=10*mindiff ,利润回吐80%,平仓,第1个平仓策略自然失效
3、当最大盈利>=15*mindiff ,利润回吐60%,平仓,第1、2个平仓策略自然失效
。。。。。类似网格平仓
回复

使用道具 举报

37

主题

9981

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-5-9 13:06 | 显示全部楼层
本帖最后由 技术006 于 2023-5-9 13:09 编辑

首先问题1:不触发的原因,需要通过debugfile输出结果查看每次执行是的条件。1楼的代码我没有看出逻辑上有什么错误。(除了条件过于苛刻。如果dyk始终是正数,那么(任意值-n)/任意值>=1的可能,应该横不成立。具体要看dyk的范围)
其次问题2:本质上需求是条件分段。那么条件和条件之间不应该存在重叠可能性。假设:

maxpro1=100,  dyk=5, mindiff=1,那么当第二个条件成立时,条件3同样成立。
即(maxpro1-dyk)/maxpro= (100-dyk)/100=0.95,(大于0.8时,同样也大于0.6)变动价位的条件同理。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

75

主题

191

帖子

191

积分

等级: 免费版

注册:
2023-4-11
曾用名:
 楼主| 发表于 2023-5-9 13:10 | 显示全部楼层
技术006 发表于 2023-5-9 13:06
首先问题1:不触发的原因,需要通过debugfile输出结果查看每次执行是的条件。1楼的代码我没有看出有不触发 ...

IF (maxpro1-dyk)/maxpro1>=1 and EXTGBDATA(str1 )>0 and MAXPRO1>=5*mindiff THEN BEGIN

这里有一个限定条件:MAXPRO1>=5*mindiff ,理论上不应该会有同时触发的可能。
老师这个问题我调试很久了,可能还是代码编写问题,能帮我直接修改下吗?
回复

使用道具 举报

37

主题

9981

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-5-9 13:15 | 显示全部楼层
本帖最后由 技术006 于 2023-5-9 13:17 编辑

你弄几个特殊值带进去就知道了。这种分段处理,必须两头掐。保证条件之间不存在重叠。

方式方法在2楼中已经提供给您了,您可以试着调整自己的代码。 一个值指定其最大值最小值范围。结构如下:
当0<=n<10时,
当10<=n<20时
注:关于条件1不成立的原因,推断是条件过于苛刻。需要你判断下dyk的有效值范围。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-12 14:32 , Processed in 0.099005 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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