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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 开仓条件成立之后2天再开仓

   

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


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

主题:开仓条件成立之后2天再开仓

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


加好友 发短信
等级:黑侠 帖子:663 积分:0 威望:0 精华:0 注册:2015/4/15 11:40:17
开仓条件成立之后2天再开仓  发帖心情 Post By:2021/4/29 10:28:56    Post IP:117.181.240.175[只看该作者]

开仓条件成立之后2天再开仓
图表和后台怎么写呢?

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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/4/29 10:37:17    Post IP:58.246.57.26[只看该作者]

enterbars>2 or enterbars=-1
tenterbars(1)>2 or tenterbars(1)=-1


分别是图表和后台的,放到条件里去



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


加好友 发短信
等级:黑侠 帖子:663 积分:0 威望:0 精华:0 注册:2015/4/15 11:40:17
  发帖心情 Post By:2021/4/29 11:28:44    Post IP:117.181.240.175[只看该作者]

数据刷新的周期是30分钟,是要开仓条件成立后2天再开仓哦
tenterbars(1)>2 or tenterbars(1)=-1 知道我要的是日级?

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


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

是要刚好完整的跨越2个交易日(比如一天300个K,2天就是600K,必须跨度达到600K,日期上可能都不止2个交易日了),还是说只要开仓信号和满足条件的位置 是在跨2个交易日的日期上即可(按完整K线跨度算可能是不足2个交易日,但是日期是满足的)。


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


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

 如果是要完整的2个交易日的跨度,这种试了下,是做不到的。因此只能按照第二种方式做,只要跨2个交易日即可,不管实际K线跨度是多少。

//参考这个思路。macdjc开仓,死叉平仓
input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6);
DIFF :=EMA(CLOSE,S) - EMA(CLOSE,P);
DEA  :=EMA(DIFF,M);
MACD1 :2*(DIFF-DEA), COLORSTICK;
macdjc:cross(diff,dea),NODRAW;//macd金叉
macdsc:cross(dea,diff),NODRAW;

DRAWICON(macdjc,h,1);//标记下金叉位置
DRAWICON(macdsc,l,2);
VARIABLE:dt:=0,datedif:=0;//datedif 纪录实际交易日天数

if date<>ref(date,1) then datedif:=datedif+1;

if macdjc and dt=0 then //满足金叉 且当前dt为0,纪录下此时的datedif
begin
dt:=datedif;
end

if datedif-dt>2 and dt<>0 and holding=0 then buy(1,1,market);//交易日跨度大于2开仓。1号纪录的,2,3都是交易的话,4号上就出开仓信号。

if macdsc and dt<>0 and holding<>0 then //平仓时候重置dt为0.下次金叉时候再给dt赋值。这里if后面的条件必须完完整整,无论你本地代码怎么的,红色部分的是不可少的。
begin
sell(1,holding,market);
dt:=0;
end




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


加好友 发短信
等级:黑侠 帖子:663 积分:0 威望:0 精华:0 注册:2015/4/15 11:40:17
  发帖心情 Post By:2021/4/29 14:09:10    Post IP:117.181.240.175[只看该作者]

简单点就行
像27号有开仓信号到今天29号仍满足条件开仓条件即执行开仓。

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


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

那也只要改这里的就行
 if datedif-dt>1 and dt<>0 and holding=0 then buy(1,1,market);//交易日跨度大于2开仓。1号纪录的,2,3都是交易的话,4号上就出开仓信号。

另外听你的意思不仅仅说信号满足后多少天开仓,而且还要当时也要满足条件才开仓?比如2个交易日后的那天的金叉才开仓或者之后金叉的位置才开仓?


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


加好友 发短信
等级:黑侠 帖子:663 积分:0 威望:0 精华:0 注册:2015/4/15 11:40:17
  发帖心情 Post By:2021/4/29 14:39:55    Post IP:117.181.240.175[只看该作者]

像RM 
27号满足开仓条件了,但不开仓
29号仍满足开仓条件,则才开仓


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


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

 if datedif-dt>2 and dt<>0 and holding=0 and macdjc  then buy(1,1,market);//交易日跨度大于2开仓。1号纪录的,2,3都是交易的话,4号上就出开仓信号。

开仓地方再加一个条件判断就行了。这样实际效果就是某条件满足后,2个交易日后的某个交易日如果再次满足就开仓。

具体效果和思路,你加载下面代码看下就知道了。笑脸是开仓条件满足位置,哭脸是平仓条件满足位置。


//参考这个思路。macdjc开仓,死叉平仓
input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6);
DIFF :=EMA(CLOSE,S) - EMA(CLOSE,P);
DEA  :=EMA(DIFF,M);
MACD1 :2*(DIFF-DEA), COLORSTICK;
macdjc:cross(diff,dea),NODRAW;//macd金叉
macdsc:cross(dea,diff),NODRAW;

DRAWICON(macdjc,h,1);//标记下金叉位置
DRAWICON(macdsc,l,2);
VARIABLE:dt:=0,datedif:=0;//datedif 纪录实际交易日天数

if date<>ref(date,1) then datedif:=datedif+1;

if macdjc and dt=0 then //满足金叉 且当前dt为0,纪录下此时的datedif
begin
dt:=datedif;
end

if datedif-dt>1 and dt<>0 and holding=0 and macdjc  then buy(1,1,market);//交易日跨度大于2开仓。1号纪录的,2,3都是交易的话,4号上就出开仓信号。

if macdsc and dt<>0 and holding<>0 then //平仓时候重置dt为0.下次金叉时候再给dt赋值。这里if后面的条件必须完完整整,无论你本地代码怎么的,红色部分的是不可少的。
begin
sell(1,holding,market);
dt:=0;
end


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