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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 请教如何实现以下想法呀?文字多但逻辑很简单

   

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


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

主题:请教如何实现以下想法呀?文字多但逻辑很简单

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


加好友 发短信
等级:论坛游侠 帖子:124 积分:0 威望:0 精华:0 注册:2020/12/11 16:17:55
请教如何实现以下想法呀?文字多但逻辑很简单  发帖心情 Post By:2021/1/4 12:00:18    Post IP:117.176.71.42[只看该作者]

       1.如果今天是12月15日之后的第一个交易日(比如从12月16日开始找,如果12月16日是非交易日就再往后找12月17日,如果还是非交易日就再找12月18日,以此类推,直到找到第一个交易日为止)。
       2.如果上面条件满足,则取得12月16日以前,离12月16日最相邻的一个交易日的收盘价为基准(比如12月15日离12月16日最相邻,那就取得12月15日的收盘价。如果12月15日为节假日等非交易日,则再往前取12月14日收盘价,如果还是非交易日则再往前找12月13日,以此类推一直找下去,直到找到最相邻的一个交易日的收盘价为止)
       3.以这个最相邻的收盘价为基准,如果今天的收盘价>它 就做多,如果今天的收盘价<它 就做空。
          如果今天的收盘价=它 就什么都不做并等下一交易日(第2个交易日),如果下一交易日收盘价>它 就做多,如果<它就做空,如果还是=它 就再等下一交易日(第3个交易日),以此类推一直找下去,直到不=它为止,然后照样判断>就做多,<就做空。
       4.如果今天是12月15日之后的第2个交易日(包含)到6月16日之前跟6月16日最相邻的交易日(包含)之间的日子,则当天收盘价金叉条件2中的基准收盘价就平掉全部仓位并做多,如果死叉条件2中的基准收盘价就平掉全部仓位并做空。
       5.如果今天是6月15日之后的第一个交易日,则以当天收盘价无论盈亏都平仓。

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/1/4 14:24:20    Post IP:58.246.57.26[只看该作者]

 1.你这里1和2 其实不需要额外处理。只要交易坐标选择 交易日坐标就行了。非交易日会被自然过滤掉的。
 2.“今天的收盘价>它 就做多,如果今天的收盘价<它 就做空” 你交易的周期是什么周期?
3.“.如果今天是12月15日之后的第2个交易日(包含)到6月16日之前跟6月16日最相邻的交易日(包含)之间的日子”
这个就不好判断了。没有办法判断下一个日期 是否是交易日。




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


加好友 发短信
等级:论坛游侠 帖子:124 积分:0 威望:0 精华:0 注册:2020/12/11 16:17:55
回复:(FireScript) 1.你这里1和2 其实不需要额...  发帖心情 Post By:2021/1/4 16:46:27    Post IP:117.176.71.42[只看该作者]

对你第二个问题的回答:日线
你第3点说不好弄,意思我的这个想法无法实现程序化罗?那我用自然日坐标就可以避开寻找交易日的麻烦了吗?我就直接指定自然日

那我用自然日坐标改为下面这个,程序应该怎么写呢?
1.如果今天是2005年12月16日,则以2005年12月15日的收盘价为基准,今日收盘>它 就做多,<它 就做空,=它 就什么都不做。
2.如果今天的日期>2005年12月16日 且<2006年6月16日,则当天收盘价金叉2005年12月15日的基准收盘价就做多,死叉它就做空,=它就什么都不做。
3.如果今天的日期是2006年6月16日,则以收盘价平掉所有仓位。

上面3点都用日线级别。

这个就大大简化了,那么这个该怎么写程序呢?

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/1/4 17:13:25    Post IP:58.246.57.26[只看该作者]

你这个思路 大致就是 以某个日期的收盘价作为基准 ,后续在某个日期之前 每天的价格大于它就开多,小于就开空。但是你这里缺少具体平仓条件。是反向的时候就平仓? 




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


加好友 发短信
等级:论坛游侠 帖子:124 积分:0 威望:0 精华:0 注册:2020/12/11 16:17:55
回复:(FireScript)你这个思路 大致就是 以某个日期...  发帖心情 Post By:2021/1/4 17:29:48    Post IP:117.176.71.42[只看该作者]

哦 我上面写错了一点点 重新写过:
1.如果今天是2005年12月16日,则以2005年12月15日的收盘价为基准,今日收盘>它 就做多,<它 就做空,=它 就什么都不做。
2.如果今天的日期>2005年12月16日 且<2006年6月16日,则当天收盘价金叉2005年12月15日的基准收盘价就平仓并做多,死叉它就平仓并做空,=它就什么都不做。
3.如果今天的日期是2006年6月16日,则以收盘价平掉所有仓位,并不再开仓。

这回都有平仓了,这个程序该怎么写啊?


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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/1/5 9:46:20    Post IP:58.246.57.26[只看该作者]

 INPUT:year1(2016,1990,2100,1),year2(2017,1990,2100,1),month1(12,1,12,1),month2(6,1,12,1),day1(16,1,30,1),day2(16,1,30,1);//日期以参数形式调整

cd1:year=year1 and MONTH=month1 and day>=day1;
cd2:year=year2 and MONTH=month2 and day>=day2;



p1:VALUEWHEN(cd1 and not(ref(cd1,1)),c);//日期1以后的第一个交易日的收盘价,包含日期1
p2:VALUEWHEN(cd2 and not(ref(cd2,1)),1);//判断是否过了日期2

cd:ref(cd1,1) and not(ref(cd1,2));//指定日期1之后的第2个交易日

if cd then //第二个交易日上的开仓
begin
buy(c>p1,1,market);
buyshort(c<p1,1,market);    
end


DRAWICON(cd,h,1);//标记下日期1 之后第二个交易日的位置


if cross(c,p1) and p1 and not(p2=1) then
begin
sellshort(1,holding,market);
buy(holding=0,1,market);    
end

if  cross(p1,c) and p1 and  not(p2=1) then
begin
sell(1,holding,market);
buyshort(holding=0,1,market);    
end

if cd2 then
begin
到期平仓1:sell(1,holding,market);    
到期平仓2:sellshort(1,holding,market);
end

持仓:holding;


日期设置成了参数,你自行调整就行了。另外你图表上的数据必须覆盖到这个日期区间。


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


加好友 发短信
等级:论坛游侠 帖子:124 积分:0 威望:0 精华:0 注册:2020/12/11 16:17:55
回复:(FireScript) INPUT:year1(2016,1990,21...  发帖心情 Post By:2021/1/5 11:05:14    Post IP:223.85.41.66[只看该作者]

多谢。请问你是按照我第一次发的文字(以交易日为准绳),还是按照我第三次发的修改后文字(以自然日为准绳)写的程序啊?

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/1/5 11:08:11    Post IP:58.246.57.26[只看该作者]

 交易日操作的。5楼的那个。


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


加好友 发短信
等级:论坛游侠 帖子:124 积分:0 威望:0 精华:0 注册:2020/12/11 16:17:55
回复:(FireScript) 交易日操作的。5楼的那个。...  发帖心情 Post By:2021/1/5 11:24:15    Post IP:223.85.41.66[只看该作者]

好的。昨天你2楼说:没有办法判断下一个日期 是否是交易日。
今天你写的程序里解决这个问题了否?能判断了吗?

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2021/1/5 11:27:32    Post IP:58.246.57.26[只看该作者]

 不能。代码里是后知后觉 发现过了指定日期后 立即平仓。比如限定的是16号 且恰好是非交易日,前一个交易日是15号。这种就只能16号之后的第一个交易日平仓,无法在15号平仓。


命数如织,当如磐石。
 回到顶部
总数 18 1 2 下一页