以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  最后一次平仓后如何用DYNAINFO(217)间隔4根K线后再计算开仓条件  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=171509)

--  作者:我心飞翔
--  发布时间:2019/8/7 14:24:34
--  最后一次平仓后如何用DYNAINFO(217)间隔4根K线后再计算开仓条件
如题,假设图表程序化A运行在15分钟K线上,走完K线模式,最后一次平仓发生在13:45分K上,那么DYNAINFO(217)返回值应该就是134500,想在最后一次平仓后间隔4根K后再来判断开仓条件,请问用DYNAINFO(217)如何写?用其他方法好像容易引起信号闪烁,所以想改成用时间来过滤.
--  作者:FireScript
--  发布时间:2019/8/7 14:53:24
--  
 用全局变量记住K线时间,在平仓条件触发的时候进行操作。

VARIABLE:re:=0;

if  平仓条件 then
begin
//平仓语句
re:=time;     
end

然后开仓条件里面加一个 当前time和re差值的计算,然后做判断。

用DYNAINFO(217)会闪烁,动态函数用在图表中都会闪烁。

--  作者:FireScript
--  发布时间:2019/8/7 14:57:31
--  
 或者用这个也可以:
EXITBARS

--  作者:我心飞翔
--  发布时间:2019/8/7 15:14:35
--  
我现在的程序就是用的EXITBARS, 经常闪烁.
--  作者:我心飞翔
--  发布时间:2019/8/7 15:15:38
--  
我用time试试
--  作者:我心飞翔
--  发布时间:2019/8/7 21:39:51
--  
@FireScript
老师:如果是下午16:45平仓,距当天收盘不到一小时,按要求4根K线以后就到了第二天01:45了,怎么减?0145-1645肯定是不符合的,该如何改?

--  作者:我心飞翔
--  发布时间:2019/8/7 21:41:22
--  
@FireScript
老师:如果是下午16:45平仓,距当天收盘不到一小时,按要求4根K线以后就到了第二天01:45了,怎么减?0145-1645肯定是不符合的,该如何改?


 用全局变量记住K线时间,在平仓条件触发的时候进行操作。

VARIABLE:re:=0;

if  平仓条件 then 
begin
//平仓语句
re:=time;     
end

然后开仓条件里面加一个 当前time和re差值的计算,然后做判断。

用DYNAINFO(217)会闪烁,动态函数用在图表中都会闪烁。




--  作者:FireScript
--  发布时间:2019/8/8 10:11:04
--  
 1.这是之前用的一个范例:你先看下能否看明白,我这个代码是可以判断指定平仓位置。如果是多个开平仓语句 你得用多个全局变量区分开处理。
input:p(26,20,100,8),s(12,5,40,4),m(9,2,60,6);//参数设置
VARIABLE:mark:=0;

DIFF : =EMA(CLOSE,S) - EMA(CLOSE,P);
DEA  := EMA(DIFF,M);
MACD1 := 2*(DIFF-DEA), COLORSTICK;
macdjc:=cross(diff,dea);//macd金叉
macdsc:=cross(dea,diff);


if macdsc and holding>0 then
begin
sell(holding>0,holding,MARKET);
mark:=1;
end
len:BARSLAST(mark=1 and ref(mark=0,1));//上次平仓距离
//平仓至少25个K之后才能开仓。
if macdjc and (len>=25 or mark=0) and holding=0 then //还必须额外处理首次开仓问题,首次开仓之前肯定没有平仓操作的。
begin
buy(holding=0,1,MARKET);
mark:=0;
end

2.EXITBARS  本身不会闪烁。除非你历史开平仓信号本身在闪烁。这个具体要看代码怎么用的了。

--  作者:我心飞翔
--  发布时间:2019/8/8 10:12:23
--  
好多,多谢!
我仔细研究研究!