金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
楼主: 103905

有没有类似switch的跳转语句

[复制链接]

78

主题

232

帖子

232

积分

Rank: 4

等级: 专业版

注册:
2021-11-24
曾用名:
 楼主| 发表于 2023-7-6 10:14 | 显示全部楼层
if里运行ma这种好像没发现问题,只是他提示了怕他出错,这个问题还好
就是用if后一个模块程序后,他没有反回,这个就难了,如果先A再B,可反过来先B再A,这没想明白怎么转
帮写一个这种打转的
回复

使用道具 举报

37

主题

9994

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-7-6 10:27 | 显示全部楼层
没明白您表述的意思,能否在详细些
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

78

主题

232

帖子

232

积分

Rank: 4

等级: 专业版

注册:
2021-11-24
曾用名:
 楼主| 发表于 2023-7-6 10:57 | 显示全部楼层

帮我看一下怎么实现
有2段程序策略,不生效时2个策略平级,当一个策略生效时即定义为优先级运行完了再运行另一个策略,另一个策略需要等到这策略释放权限后才有运行权限
如:假如开始时运行A策略,那么运行完A策略后再运行B策略,如果A策略标志消失了,并让B策略抢到优先,那么程序就只能先运行B策略,再运行A策略     (这个的难点在于,这程序是流水式的,没有返回,要有返回就很容易,刚想到一个办法把策略打包成一个可以返回的程序块,这应可行)
策略如下

variable:多标志=1,空标志=0;
variable:                 空=0;


ma1:=ma(c,20);
//A策略-----做多-----
多:= C>MA1;  
均线最低20:=LLV(ma1,N20);
if C>均线最低20 then 多:=1;  
if ma5>ma6  then     多:=1;     
这里还有很多代码
if 多 then LL:=ma1*0.9;
if 多 then BEGIN 多标志:=多标志+1;空标志:=0;   //多方有3个标志可以代表A策略有效    ( 多>0 ;   多标志>0;  空标志<1)

//if 多 then GOTO 空方结束;  
//B策略---------做空----------
空:= 多<1;
均线最高20:=HHV(ma1,N20);
if C<均线最高20 then 空:=1;
if ma4<ma5  then     空:=1;        
这里有很多不同类别的处理程序
if 空 then LL:=MA1*1.1;
if 空 then BEGIN 空标志:=空标志+1;多标志:=0; END  //空方与多方一样也有3个标志可以用,(最好能用  空>0)

//空方结束@;
回复

使用道具 举报

37

主题

9994

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-7-6 11:18 | 显示全部楼层
你是想要两段代码之间产生互锁机制吧?pel没有程序块的概念,行不通的。

互锁机会的实现,需要产生闭环,你上面的描述没有闭环条件,需要你提供完善的过程。例如:什么时候解除A的优先级。是平仓后还是什么时候。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

78

主题

232

帖子

232

积分

Rank: 4

等级: 专业版

注册:
2021-11-24
曾用名:
 楼主| 发表于 2023-7-6 11:55 | 显示全部楼层
用GOTO调动程序顺序应可以吧,我用这个试了,老提示里面可能出错,
提供完善的过程这不行,这里面是打算做一个完整信号网路,会很大变化,程序量也会很多

是互锁机意思,多与空其实在运行完整个代码后是唯一个结果,要么1要么0,只是程序中间会不停的变动
回复

使用道具 举报

78

主题

232

帖子

232

积分

Rank: 4

等级: 专业版

注册:
2021-11-24
曾用名:
 楼主| 发表于 2023-7-6 11:59 | 显示全部楼层
解除A的优先级是B取得了优先级,这是独立的策略,所以关系只与A与B的0 与1,这0与1 的变化不用用理,A与B只有一个优先就可以,程序里面会定义级别,要是只是要锁定这个优先级
回复

使用道具 举报

78

主题

232

帖子

232

积分

Rank: 4

等级: 专业版

注册:
2021-11-24
曾用名:
 楼主| 发表于 2023-7-6 12:01 | 显示全部楼层
如果有CALL类的就可以这样,
当A等于1,那么先运行A,再运行B
当B等于1, 那么选动行B,再动行A
只是现在运行B后回来到A了

补充内容 (2023-7-6 12:01):
只是现在运行B后回不到A了
回复

使用道具 举报

37

主题

9994

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-7-6 13:17 | 显示全部楼层
抱歉,没有好的解决方法。即使是采用全局变量也不容易实现你这种既要又不要的特性。
使用goto语句也不现实,这种反复跳转存在不可控因素,以及序列变量计算不完整的情况。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

78

主题

232

帖子

232

积分

Rank: 4

等级: 专业版

注册:
2021-11-24
曾用名:
 楼主| 发表于 2023-7-6 13:36 | 显示全部楼层
不复杂,就是很普通的一个涵数调用而已
回复

使用道具 举报

78

主题

232

帖子

232

积分

Rank: 4

等级: 专业版

注册:
2021-11-24
曾用名:
 楼主| 发表于 2023-7-6 13:45 | 显示全部楼层
或者更简单
就是程序的写法是顺着写A,完了写B
执行一个if B等于1时先运行B,再运行A就可以
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 11:22 , Processed in 0.546753 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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