金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 464|回复: 10

请帮忙编写代码,谢谢!

[复制链接]

38

主题

87

帖子

87

积分

Rank: 2

等级: 标准版

注册:
2021-6-30
曾用名:
发表于 2024-9-12 15:28 | 显示全部楼层 |阅读模式
请帮忙编写中证500主力合约的代码
开仓条件:
当同时满足以下五个条件时开多1手:1、昨日收盘价大于MA30;2、昨日收盘价大于昨日开盘价;3、今日开盘价≥(昨日收盘价-10);4、今日开盘后30分钟内出现的最低值≥(今日开盘价-30);5、今日第30分钟价格>开盘价
当同时满足以下五个条件时开空1手:1、昨日收盘价小于等于MA30;2、昨日收盘价小于昨日开盘价;3、今日开盘价≤(昨日收盘价+10);4、今日开盘后30分钟内出现的最高值≤(今日开盘价+30);5、今日第30分钟价格<开盘价

平仓条件:
1、如果开多1手后,当满足以下任一个条件平仓。条件1、从最高点回落30点;条件2、时间来到14:58分47秒。
2、如果开空1手后,当满足以下任一个条件平仓。条件1、从最低点上涨30点;条件2、时间来到14:58分47秒。


回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2024-9-26 16:37 | 显示全部楼层
以多头为例:
[PEL] 复制代码
//1分钟周期上运行有效
last_dc:=callstock('',vtclose,6,-1);//昨日收盘价
last_do:=callstock('',vtopen,6,-1);//昨日开盘价
ma30:ma(c,30);


l1:=valuewhen(todaybar<=30,llv(l,todaybar));//开盘30分钟内的最低价
c1:=valuewhen(todaybar=30,c);//开盘第30分钟时候的收盘价
 

kd:last_dc>ref(ma30,todaybar) and last_dc>last_do and ref(o,todaybar)>=last_dc-10*mindiff and l1>=ref(o,todaybar)-30*mindiff and c1>ref(o,todaybar) and todaybar>30;

手数:=2;

//从开仓后的最高价回落30点平仓
if hhv(h,enterbars+1)>=c+30*mindiff then 回撤平仓:sell(1,holding,market);

tq:=13;//提前的秒数
abb:=remainingtime(time)<=tq or not(islastbar);//注意:6.23 以后版本,图表上使用islastbar函数,请勿勾选仅刷最后一根k
if abb and time=145900 then begin
收盘平仓:sell(1,holding,market);    
end


buy(kd and holding=0,手数,market);


空头可参考这个 自行尝试完善下。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

38

主题

87

帖子

87

积分

Rank: 2

等级: 标准版

注册:
2021-6-30
曾用名:
 楼主| 发表于 2024-9-27 10:11 | 显示全部楼层
请问开空和平空的代码直接用 if  then语句连接在上面最后一条语句之后么?或者中间是用什么其他语句连接呢?
回复

使用道具 举报

2

主题

585

帖子

626

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-10
曾用名:
发表于 2024-9-27 10:15 | 显示全部楼层
就直接放在后面就可以了
就像
buy();
sell();
sellshort();
buyshort();

代码就是叠起来,这样写就是从上到下按此执行,开多平多,开孔平空而已,语句和语句之间没什么关联
回复

使用道具 举报

38

主题

87

帖子

87

积分

Rank: 2

等级: 标准版

注册:
2021-6-30
曾用名:
 楼主| 发表于 2024-9-27 12:31 | 显示全部楼层
这个怎么控制每天只开仓一次呢?就是开盘30分钟后出现机会开仓一次,而不是一直循环开仓
回复

使用道具 举报

31

主题

7766

帖子

7776

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2024-9-27 13:04 | 显示全部楼层
buy(kd and holding=0,手数,market);

这里已经持仓=0才允许开仓,不会加仓的
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

38

主题

87

帖子

87

积分

Rank: 2

等级: 标准版

注册:
2021-6-30
曾用名:
 楼主| 发表于 2024-9-27 15:02 | 显示全部楼层
技术008 发表于 2024-9-27 13:04
buy(kd and holding=0,手数,market);

这里已经持仓=0才允许开仓,不会加仓的

我的意思是,当天开过一次仓又平仓后,不会再继续开仓,每天最多开仓1次。这个怎么实现呢?
回复

使用道具 举报

31

主题

7766

帖子

7776

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
发表于 2024-9-27 15:04 | 显示全部楼层
variable:n=0;
if todaybar=1 then n:=0;
if  kd and holding=0
then
begin
buy(1,手数,market);
n:=1;
end
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

38

主题

87

帖子

87

积分

Rank: 2

等级: 标准版

注册:
2021-6-30
曾用名:
 楼主| 发表于 2024-9-27 17:50 | 显示全部楼层
技术008 发表于 2024-9-27 15:04
variable:n=0;
if todaybar=1 then n:=0;
if  kd and holding=0

请问日内最高价和最低价如何表述?谢谢!
回复

使用道具 举报

38

主题

87

帖子

87

积分

Rank: 2

等级: 标准版

注册:
2021-6-30
曾用名:
 楼主| 发表于 2024-9-27 18:25 | 显示全部楼层
技术009 发表于 2024-9-26 16:37
以多头为例:
[mw_shl_code=pel,true]//1分钟周期上运行有效
last_dc:=callstock('',vtclose,6,-1);//昨 ...

请问这个策略回测的时候为什么没有执行收盘平仓呢?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 22:27 , Processed in 0.235690 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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