金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 5043|回复: 9

求助:随机条件下单问题

[复制链接]

9

主题

52

帖子

52

积分

等级: 免费版

注册:
2022-5-19
曾用名:
发表于 2022-5-19 11:12 | 显示全部楼层 |阅读模式
三个条件:ABC,对应的下单手数为XYZ
想实现的是:
1. 达到三个条件中的任一条件,下对应的手数(先达到条件C,下Z手);
2. 达到剩余两个条件中的一个条件,下对应的手数(再达到条件A,下X手);
3. 达到剩余的最后一个条件,下对应的手数(最后满足条件B,先下Y手)

回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-5-19 13:07 | 显示全部楼层
你这个逻辑 需要完善。同时满足2或2个以上 怎么处理?你不能假设这些条件一定是顺序发生的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

9

主题

52

帖子

52

积分

等级: 免费版

注册:
2022-5-19
曾用名:
 楼主| 发表于 2022-5-19 13:24 | 显示全部楼层
技术009 发表于 2022-5-19 13:07
你这个逻辑 需要完善。同时满足2或2个以上 怎么处理?你不能假设这些条件一定是顺序发生的。

谢谢!
初次尝试,逻辑不清晰,请教下怎么完善?
麻烦用代码呈现,否则我自己肯定搞不出来!
感谢感谢!
回复

使用道具 举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-5-19 13:34 | 显示全部楼层
2楼的意思,是说你一楼的组合关系,存在其他的可能性,这个你要完善逻辑后,告知我们应该怎么处理。要么代码没法写。否者会有逻辑漏洞
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

9

主题

52

帖子

52

积分

等级: 免费版

注册:
2022-5-19
曾用名:
 楼主| 发表于 2022-5-19 14:28 | 显示全部楼层
技术006 发表于 2022-5-19 13:34
2楼的意思,是说你一楼的组合关系,存在其他的可能性,这个你要完善逻辑后,告知我们应该怎么处理。要么代 ...

三个条件:A、B和C,对应的下单手数为X、Y、Z
想实现的是:随机满足条件之一,先成交,类推
第一种情况:依次只满足一个条件
1.1达到三个条件中的任一条件,下对应的手数(先达到条件C,下Z手);
1.2 达到剩余两个条件中的一个条件,下对应的手数(再达到条件A,下X手);
1.3 达到剩余的最后一个条件,下对应的手数(最后满足条件B,先下Y手)

第二种情况:同时满足两个条件
2.1 先同时满足两个条件,再满足最后一个条件
2.1.1 先同时满足两个条件,下对应的手数(如先同时满足BC,下Y+Z手)
2.1.2 再满足最后一个条件,下对应的手数(再满足A,下X手)

2.2 先满足一个条件,后同时满足两个条件
2.2.1 先满足一个条件,下对应的手数(如先满足B,下Y手)
2.2.2 再同时满足其他两个条件,下对应的手数(再同时满足AC,下X+Z手)

第三种情况:同时满足三个条件,下X+Y+Z手
回复

使用道具 举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-5-19 14:43 | 显示全部楼层
第一种情况中提到的依次?必须按照这个顺序?如果是那么这个逻辑需要使用采用全局变量进行互锁处理,那么热后台2中情况就会干扰。
如果不要求三者之间达到某个顺序过程的话,只要做到是谁满足谁下对应的数量?
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-5-19 14:47 | 显示全部楼层


VARIABLE:mark[3]:=0;//长度为3的数组,记录三个数值表示3个条件是否开过仓
maxHd:x+y+z;//最大持仓数量

if a and holding<maxHd and mark[1]=0 then //条件a
begin
buy(1,x,market);
mark[1]:=1;        //记录某个条件是否开过仓了
end

if b and holding<maxHd and mark[2]=0 then //条件b
begin
buy(1,x,market);
mark[2]:=1;        
end

if cc and holding<maxHd and mark[3]=0 then //条件c
begin
buy(1,x,market);
mark[3]:=1;        
end


if holding=0 then
begin
mark[1]:=0;//平仓后 mark里的记录重置,这一步很重要必不可少
mark[2]:=0;
mark[3]:=0;
end
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

9

主题

52

帖子

52

积分

等级: 免费版

注册:
2022-5-19
曾用名:
 楼主| 发表于 2022-5-20 10:56 | 显示全部楼层
技术009 发表于 2022-5-19 14:47
VARIABLE:mark[3]:=0;//长度为3的数组,记录三个数值表示3个条件是否开过仓
maxHd:x+y+z;//最大持仓数 ...

图表上的持仓一直是最大的6手,没办法新开仓。请问怎么办?
代码如下:
ma5:ma(c,5);
ma10:ma(c,10);
ma20:ma(c,20);
aa:=cross(c,ma5);
bb:=cross(c,ma10);
cc:=cross(c,ma20);

VARIABLE:mark[3]:=0,x=1,y=2,z=3;//长度为3的数组,记录三个数值表示3个条件是否开过仓
maxHd:=x+y+z;//最大持仓数量

if aa and holding<maxHd and mark[1]=0 then //条件a
begin
buy(1,x,market);
mark[1]:=1;//记录某个条件是否开过仓了
end

if bb and holding<maxHd and mark[2]=0 then //条件b
begin
buy(1,y,market);
mark[2]:=1;
end

if cc and holding<maxHd and mark[3]=0 then //条件c
begin
buy(1,z,market);
mark[3]:=1;
end


if holding=0 then
begin
mark[1]:=0;//平仓后 mark里的记录重置,这一步很重要必不可少
mark[2]:=0;
mark[3]:=0;
end

持仓手数:holding,nodraw;
回复

使用道具 举报

9

主题

52

帖子

52

积分

等级: 免费版

注册:
2022-5-19
曾用名:
 楼主| 发表于 2022-5-20 11:06 | 显示全部楼层
图表呈现

本帖子中包含更多资源

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

x
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-5-20 11:07 | 显示全部楼层
你没有平常的逻辑怎么行。完整策略里面你应该完善下平仓的部分的。那个仓位6 是历史开的仓一直没平。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-14 14:07 , Processed in 0.091730 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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