金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 27|回复: 1

收盘时间问题

[复制链接]

34

主题

67

帖子

67

积分

Rank: 4

等级: 专业版

注册:
2024-11-13
曾用名:
发表于 2025-9-15 16:47 | 显示全部楼层 |阅读模式
INPUT:SS(1,1,10000,1),N1(0.005,0.001,1,0.001);
CYC:=TODAYBAR;
H30:REF(HHV(H,30),1);
L30:REF(LLV(L,30),1);
MID:(H30+L30)/2;//中轴

//由于时间进制不同,时间加减需要换算成秒处理后,再转换成时间
END_TIME:T0TOTIME(TIMETOT0(CLOSETIME(0))-5*60 );
T1:=TIME>OPENTIME(1) AND TIME <END_TIME;
T2:=TIME>=END_TIME;
手数:=SS;

//进场的条件
开多条件:= H>H30 AND (H30-MID)/MID<N1 AND CYC>=30 AND T1;
开空条件:= L<L30 AND (MID-L30)/MID<N1 AND CYC>=30 AND T1;

//系统
tSELL(T2 AND tbuyholding(1)>0,0,mkt) ;
tSELLSHORT(T2 AND tsellholding(1)>0,0,mkt) ;
tBUYSHORT(开空条件 AND tsellholding(1)=0,手数,mkt);
tBUY(开多条件 AND tbuyholding(1)=0, 手数,mkt);

老师帮我修改平仓时间问题,策略上是金字塔时间01:05平仓,帮我修改成金字塔时间18:50平仓。



补充内容 (2025-9-15 16:59):
{************************************************************************************************************************
* 类型:日内策略
* 版本:1.0
* 修订时间:2023.11.16
* 说明:默认适合1、3、5等30分钟因数周期,其他周期请根据实际周期,调整时间相关条件。
*
* 模型仅供投资者参考学习,依此入市,风险自负!
* 投资者应该结合自身经验进一步完善策略,并充分评估市场风险后再考虑是否使用。
************************************************************************************************************************}


//准备中间变量
INPUT:SS(1,1,10000,1),NMIN1(30,1,1000,1),NMIN2(10,1,100,1),N1(0,0,100,1);

N:=TODAYBAR;
//由于时间进制不同,时间加减需要换算成秒处理后,再转化成时间
BEGIN_TIME:T0TOTIME(TIMETOT0(OPENTIME(1))+NMIN1*60 );
END_TIME:T0TOTIME(TIMETOT0(CLOSETIME(0))-NMIN2*60 );

开盘30分钟最高价:=VALUEWHEN(TIME<=BEGIN_TIME,HHV(H,N));
开盘30分钟最低价:=VALUEWHEN(TIME<=BEGIN_TIME,LLV(L,N));
手数:=SS;
上轨:开盘30分钟最高价+N1*MINDIFF;
下轨:开盘30分钟最低价-N1*MINDIFF;
//条件
开多条件:=C>上轨;
开空条件:=C<下轨;
//交易系统
IF TIME>BEGIN_TIME AND TIME<END_TIME THEN BEGIN
        开多:TBUY(开多条件 AND tbuyholding(1)=0,手数,mkt);
        开空:TBUYSHORT(开空条件 AND tsellholding(1)=0,手数,mkt);
END

//多头止盈和止损
if c-TAVGENTERPRICEEX2('','',0)>=5*MINDIFF then tsell(1,0,mkt);
if TAVGENTERPRICEEX2('','',0)-c>=15*MINDIFF then tsell(1,0,mkt);

//空头止盈和止损
if c-TAVGENTERPRICEEX2('','',1)>=5*MINDIFF then TSELLSHORT(1,0,mkt);
if TAVGENTERPRICEEX2('','',1)-c>=15*MINDIFF then TSELLSHORT(1,0,mkt);


//平仓
IF TIME>=END_TIME or REMAININGTIME(CLOSETIME(0))<=600 THEN BEGIN
        收盘平多:TSELL(1,手数,mkt);
        收盘平空:TSELLSHORT(1,手数,mkt);
END

补充内容 (2025-9-15 17:01):
老师帮我修改平仓时间问题,把两个策略上是金字塔时间01:05平仓,帮我修改成金字塔时间18:50平仓。
回复

使用道具 举报

3

主题

889

帖子

930

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-10
曾用名:
发表于 2025-9-15 17:12 | 显示全部楼层
第一个的平仓时间是根据这个计算的。如果要提前10分钟平仓则直接10*60秒即可。
END_TIME:T0TOTIME(TIMETOT0(CLOSETIME(0))-10*60 );
第二个策略已经是提前10分钟平仓

这个代码中T2:=TIME>=END_TIME;的限制,01:05分钟的k是不会触发平仓条件的。
除非你的设置有问题,比如采用t+1模式执行的回测。


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-19 11:59 , Processed in 0.133819 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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