金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 134|回复: 7

尾盘平仓

[复制链接]

35

主题

134

帖子

134

积分

Rank: 4

等级: 专业版

注册:
2025-4-7
曾用名:
发表于 2025-4-8 21:36 | 显示全部楼层 |阅读模式
这是我写的尾盘平仓代码,不持仓过夜
1.到指定时间时,先撤单,再市价平仓。

2.因为,是多空挂单,所以函数tcancelex的第2个参数填0。

[PEL] 复制代码
//尾盘平仓
close_mkt1:=remainingtime(closetime(1))=nmin3*60;
close_mkt2:=remainingtime(closetime(4))=nmin3*60;
if close_mkt1 or close_mkt2 then begin
	tcancelex(1,0,'','');
	tsell(1,tbuyholdingex('','',1),mkt);
	tsellshort(1,tsellholdingex('','',1),mkt);
end

老师请看下我的代码,逻辑是否正确?或有更加好的写法?

回复

使用道具 举报

2

主题

4903

帖子

4903

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-4-9 08:49 | 显示全部楼层
时间判断的逻辑,最好要留一点容错。品种不活跃或者本地时间不准确 或者运算卡顿等 可能会造成偏差的。

建议采用判断距离收盘K在一个多少秒的范围内 这种逻辑,提高容错。

其他地方没什么问题。


回复

使用道具 举报

35

主题

134

帖子

134

积分

Rank: 4

等级: 专业版

注册:
2025-4-7
曾用名:
 楼主| 发表于 2025-4-9 09:06 | 显示全部楼层
资深技术05 发表于 2025-4-9 08:49
时间判断的逻辑,最好要留一点容错。品种不活跃或者本地时间不准确 或者运算卡顿等 可能会造成偏差的。

...

我明白了,是改成<=对吗?
[PEL] 复制代码
remainingtime(closetime(1))<=nmin3*60;
remainingtime(closetime(4))<=nmin3*60;



补充内容 (2025-4-9 09:20):
刚刚试了一下。

图表代码中,改成<=,无问题。

后台代码中,改成<=,有问题。
精细化回测不显示结果,全部数据为0。很奇怪,不懂哪里出了问题?(原代码无问题)
回复

使用道具 举报

2

主题

4903

帖子

4903

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-4-9 09:11 | 显示全部楼层
是的。
回复

使用道具 举报

35

主题

134

帖子

134

积分

Rank: 4

等级: 专业版

注册:
2025-4-7
曾用名:
 楼主| 发表于 2025-4-9 09:21 | 显示全部楼层

不行啊,老师。后台代码改了有问题呢。
回复

使用道具 举报

35

主题

134

帖子

134

积分

Rank: 4

等级: 专业版

注册:
2025-4-7
曾用名:
 楼主| 发表于 2025-4-9 09:39 | 显示全部楼层
又试了几次,还是不行。

1.图表也不行了,刷新之后就不行了(刚刚忘记刷新)
图表中显示,我每开一笔仓,结果都会在k线收盘时,直接平掉。

2.后台更是一点数据都没有,全部000。

我也只是仅仅把=改成<=。
[PEL] 复制代码
//尾盘平仓
close_mkt1:=remainingtime(closetime(1))<=nmin3*60;
close_mkt2:=remainingtime(closetime(4))<=nmin3*60;
if close_mkt1 or close_mkt2 then begin
	tcancelex(1,0,'','');
	tsell(1,tbuyholdingex('','',1),mkt);
	tsellshort(1,tsellholdingex('','',1),mkt);
end
回复

使用道具 举报

2

主题

4903

帖子

4903

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-24
曾用名:
发表于 2025-4-9 09:55 | 显示全部楼层
忘记了,要加一个额外判断的:

remainingtime(closetime(1))>0

返回值要大于0的前提下 做判断


回复

使用道具 举报

35

主题

134

帖子

134

积分

Rank: 4

等级: 专业版

注册:
2025-4-7
曾用名:
 楼主| 发表于 2025-4-9 10:20 | 显示全部楼层
资深技术05 发表于 2025-4-9 09:55
忘记了,要加一个额外判断的:

remainingtime(closetime(1))>0

closetime(1)到13:00:01(09:00)时候确实直接变成负数了。

可以只写一个,也可以两者都写上
[PEL] 复制代码
sell_mkt1:remainingtime(closetime(1))<=nmin3*60 and remainingtime(closetime(1))>0;
sell_mkt2:remainingtime(closetime(4))<=nmin3*60 and remainingtime(closetime(1))>0;

sell_mkt1:remainingtime(closetime(1))<=nmin3*60 and remainingtime(closetime(1))>0;
sell_mkt2:remainingtime(closetime(4))<=nmin3*60;
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-1 22:52 , Processed in 0.148751 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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