欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 如何将最后交易时间往后延一天,

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有8172人关注过本帖树形打印复制链接

主题:如何将最后交易时间往后延一天,

帅哥哟,离线,有人找我吗?
FireScript
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/9/14 13:18:22    Post IP:180.169.30.6[显示全部帖子]

 有个思路,平仓时加一个这个判断条件:
cd:ENTERBARS>TODAYBAR;

开仓历时比当日K数量大,也就是意味着是昨日开仓的。因此今天可以触发平仓。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/9/14 16:45:50    Post IP:180.169.30.6[显示全部帖子]

 以下是一个简单的范例,可供参考。
A:=20;
B:=10;
SS:=1;
MA1:=MA(CLOSE,A);
MA2:=MA(CLOSE,B);

手数:=ss;

开多条件:=CROSS(MA1,MA2);//开多平空条件

开多:BUY(开多条件 and holding=0,手数,MARKET);

IF TIME=CLOSETIME(0) and ENTERBARS>TODAYBAR then
begin
sell(holding>0,holding,market);
end


hd:holding;


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/9/17 9:49:00    Post IP:180.169.30.6[显示全部帖子]

 一般这样处理,涉及到不能在if控制语句下使用的函数可以这样做。

z:TODAYBAR;//定义一个变量存储这个函数返回值

if ..then //在if判断条件下调用z而不是TODAYBAR
begin
...z;//如果是在这里,同样调用z而不是直接使用TODAYBAR
end


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/9/17 15:48:19    Post IP:180.169.30.6[显示全部帖子]

 可提供下你的代码,我检查下。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/9/17 16:03:12    Post IP:180.169.30.6[显示全部帖子]

这句 TIME>=234200   这个你是想表达的是在北京时间234200之后平仓?  如果你本地是金字塔时区,这样表达有问题的。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/9/17 16:28:40    Post IP:180.169.30.6[显示全部帖子]

 
1.time的判断有误的。金字塔时区最多到190000对应北京时间15:00。 因此第二段代码肯定有问题,无法触发这个平仓的。关于这个时区问题如果不了解的话:http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=87464&page=1&star=1      我前面代码处理的收盘都是按照白盘收盘去实现的,不知道你理解的是否是白盘收盘。

2.
T:=ENTERBARS>TODAYBAR;

IF  T  AND   TIME=CLOSETIME(0)  then 
begin
sell(holding>0,HQTYa1,market); 
end

这个代码是正常的,因此建议进一步说明下你的情况。我这个处理思路是按照平仓推迟到第二天收盘时平仓,不知是否符合你的需求思路。



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/9/17 17:08:38    Post IP:180.169.30.6[显示全部帖子]

 用6位表达即可。之前忽略了你可能交易外盘的情况。我重新处理下代码。外盘情况下处理不太一样。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
FireScript
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/9/19 15:28:52    Post IP:180.169.30.6[显示全部帖子]

 
 重新考虑了下你这个需求,最初理解上可能存在偏差,没意识到你这个需求实现存在的问题。

具体先看下以下说明:
当日持仓,持有到明日收盘平仓。按照此逻辑,其实相当于是每一天收盘平昨日仓。然而在图表上这个实现是不可以的。 比如今日我开仓了,那么这个仓位今天收盘不能平,要放到明天平,但是在图表上平仓是无法区分开昨天开的仓位和今天开的仓位。所以这个需求初步判定图表程序化应该是无法实现的。

或者这样子,用全局变量做标记,每2个交易日,在收盘时间做一次全平的操作。


命数如织,当如磐石。
 回到顶部