金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 2297|回复: 14

怎么让交易系统跑夜盘?

[复制链接]

1

主题

7

帖子

7

积分

Rank: 1

等级: 新手上路

注册:
2024-6-6
曾用名:
发表于 2024-6-6 09:27 | 显示全部楼层 |阅读模式
IF TIME>090000 AND TIME<145000 AND 交易次数<=N3  THEN BEGIN
这是目前交易系统里的时间条件,如何增加夜盘时间段?比如21点到23点

回复

使用道具 举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-6-6 09:31 | 显示全部楼层
建议你采用金字塔时区,否者在北京时间去要像下面进行分段处理。

IF ((TIME>090000 AND TIME<145000) OR (TIME>210000 AND TIME<230000)) AND 交易次数<=N3
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2024-6-6 09:32 | 显示全部楼层
看下金字塔时区:
https://www.weistock.com/docs/HE ... 4%E6%97%B6%E5%8C%BA

默认情况下,除中金所,股票市场外,其他国内期货都是默认金字塔时间的。所以写时间限制也要按照金字塔时间规则来写的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

1

主题

7

帖子

7

积分

Rank: 1

等级: 新手上路

注册:
2024-6-6
曾用名:
 楼主| 发表于 2024-6-6 10:04 | 显示全部楼层
我想把菲阿里四价稍微改变下,我们都知道对于很多期货品种夜盘才是一天的开盘。入场规则:当天夜盘开盘价大于昨天最高价,则入场做多。我自己试着修改了下但是我不知道为什么回测不开单

//准备中间变量
INPUT:N1(10,1,100,1),N2(10,1,100,1)N3(4,2,100,1),SS(1,1,10000,1);
VARIABLE:交易次数:=0;//为了便于统计 开平1次后 交易次数为2
昨高:=CALLSTOCK(STKLABEL,VTHIGH,6,-1);//昨高
昨低:=CALLSTOCK(STKLABEL,VTLOW,6,-1);//昨低
昨收:=CALLSTOCK(STKLABEL,VTCLOSE,6,-1);//昨收
上轨:昨高;
下轨:昨低;
手数:=SS;
//条件
开多条件:=OPEN>上轨;
开空条件:=OPEN<下轨;
多头止损条件:=C<ENTERPRICE-N1*MINDIFF;
空头止损条件:=C>ENTERPRICE+N2*MINDIFF;
//交易系统
IF ((TIME>090000 AND TIME<145000) OR (TIME>210000 AND TIME<230000)) AND 交易次数<=N3  THEN BEGIN
开多:BUY(开多条件 AND HOLDING=0,手数,MARKET);
开空:BUYSHORT(开空条件 AND HOLDING=0,手数,MARKET);
交易次数:=交易次数+1;
END
//止损
IF 多头止损条件 AND HOLDING>0 THEN BEGIN
多头止损:SELL(1,手数,MARKET);
交易次数:=交易次数+1;
END
IF 空头止损条件 AND HOLDING<0 THEN BEGIN
空头止损:SELL(1,手数,MARKET);
交易次数:=交易次数+1;
END
回复

使用道具 举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-6-6 10:08 | 显示全部楼层
检查下你自己用的是北京时区还是金字塔时区。设置见3楼的链接
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

1

主题

7

帖子

7

积分

Rank: 1

等级: 新手上路

注册:
2024-6-6
曾用名:
 楼主| 发表于 2024-6-6 10:30 | 显示全部楼层
时区调整到了金字塔时区了。能帮我重新写一个?入场规则:昨日收盘价大于昨日开盘价 且 今日夜盘开盘价大于昨日收盘价,则开盘就开仓做多1手;昨日收盘价小于昨日开盘价 且 今日夜盘开盘价小于昨日收盘价,则开盘就开仓做空1手;

补充内容 (2024-6-6 10:32):
平仓条件是有持仓的条件情况下当日14:50分平掉所有仓位
回复

使用道具 举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-6-6 11:26 | 显示全部楼层
本帖最后由 技术006 于 2024-6-6 11:27 编辑

示例默认认为K线存在184500这个时间点处理的

//昨日收盘价大于昨日开盘价 且 今日夜盘开盘价大于昨日收盘价,则开盘就开仓做多1手;
//昨日收盘价小于昨日开盘价 且 今日夜盘开盘价小于昨日收盘价,则开盘就开仓做空1手;

INPUT:N1(10,1,100,1),N2(10,1,100,1)N3(4,2,100,1),SS(1,1,10000,1);
VARIABLE:交易次数:=0;//为了便于统计 开平1次后 交易次数为2
昨高:=CALLSTOCK(STKLABEL,VTHIGH,6,-1);//昨高
昨低:=CALLSTOCK(STKLABEL,VTLOW,6,-1);//昨低
昨收:=CALLSTOCK(STKLABEL,VTCLOSE,6,-1);//昨收
昨开:=CALLSTOCK(STKLABEL,VTopen,6,-1);//昨收

今开:=VALUEWHEN(TODAYBAR=1,open);

if  昨收>昨开 and 今开>昨收 and time<184500 THEN BEGIN
        SELLSHORT(HOLDING<0,1,MARKET);
        buy(HOLDING=0,1,market);
END

if  昨收<昨开 and 今开<昨收 and time<184500 THEN BEGIN
        SELL(HOLDING>0,1,MARKET);
        buySHORT(HOLDING=0,1,market);
END


if time>=184500 then BEGIN
        SELL(HOLDING>0,1,MARKET);
        SELLSHORT(HOLDING<0,1,MARKET);
END

金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

1

主题

7

帖子

7

积分

Rank: 1

等级: 新手上路

注册:
2024-6-6
曾用名:
 楼主| 发表于 2024-6-6 14:00 | 显示全部楼层
怎么在其中再添加一个止损条件:当价格小于今日开盘价则平多,当价格大于今日开盘价则平空;
回复

使用道具 举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-6-6 14:20 | 显示全部楼层
小灰狼 发表于 2024-6-6 14:00
怎么在其中再添加一个止损条件:当价格小于今日开盘价则平多,当价格大于今日开盘价则平空;

多头部分的处理逻辑如下,空头部分你可以参照学习后,尝试自行实现看看。
if  今开>close THEN BEGIN
        SELL(HOLDING>0,1,MARKET);
END
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

1

主题

7

帖子

7

积分

Rank: 1

等级: 新手上路

注册:
2024-6-6
曾用名:
 楼主| 发表于 2024-6-6 15:39 | 显示全部楼层
为什么回测不开仓啊?

INPUT:N1(10,1,100,1),N2(10,1,100,1)N3(4,2,100,1),SS(1,1,10000,1);
VARIABLE:交易次数:=0;//为了便于统计 开平1次后 交易次数为2
昨高:=CALLSTOCK(STKLABEL,VTHIGH,6,-1);//昨高
昨低:=CALLSTOCK(STKLABEL,VTLOW,6,-1);//昨低
昨收:=CALLSTOCK(STKLABEL,VTCLOSE,6,-1);//昨收
昨开:=CALLSTOCK(STKLABEL,VTopen,6,-1);//昨收

今开:=VALUEWHEN(TODAYBAR=1,open);

if  昨收>昨开 and 今开>昨收 and time<184500 AND 交易次数<=N3 THEN BEGIN
        SELLSHORT(HOLDING<0,1,MARKET);
        buy(HOLDING=0,1,market);
        交易次数:=交易次数+1;
END

if  昨收<昨开 and 今开<昨收 and time<184500 AND 交易次数<=N3 THEN BEGIN
        SELL(HOLDING>0,1,MARKET);
        buySHORT(HOLDING=0,1,market);
        交易次数:=交易次数+1;
END

if  昨收>close and time<184500 THEN BEGIN
        SELL(HOLDING>0,1,MARKET);
        交易次数:=交易次数+1;
END

if  昨收<close and time<184500 THEN BEGIN
        SELLSHORT(HOLDING<0,1,MARKET);
        交易次数:=交易次数+1;
END

if time>=184500 then BEGIN
        SELL(HOLDING>0,1,MARKET);
        SELLSHORT(HOLDING<0,1,MARKET);
END
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-27 20:20 , Processed in 0.103802 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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