以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  [求助]图表交易信号问题  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=73106)

--  作者:dskfdg
--  发布时间:2014/12/16 8:48:35
--  [求助]图表交易信号问题
N:=1;
MA20:=INTPART(MA(C,20)/N3)*N3;
做多:REF(C,1)>=REF(MA20,1);
止损:LOW<=MA20;
开仓:BUY(HOLDING=0 AND 做多,1,OPEN);
平仓:SELL(HOLDING>0 AND 止损,0,IF(OPEN<MA20,OPEN,MA20));

===================================================
用固定轮询1秒方式:
问题是图表显示当根K线显示开多信号,但当当根K线的LOW<=MA20时不出平仓信号,要在下一根K线才显示并且平仓价在(开盘价或收盘价具体忘记了,这是回测时的值和图表显示的值),不是MA20.
我要的是只要有多仓,只要LOW<=MA20就要平仓,无论是否在当根K线开的仓。
我想问的时实盘运行这代码会是怎样的结果.

--  作者:jinzhe
--  发布时间:2014/12/16 9:01:58
--  

你举个实际的例子说明问题,说明一下是测试哪个合约品种时在哪个周期哪根k线上,出的问题。

平仓条件并没有写成ref的模式,不会在下个周期做动作


--  作者:dskfdg
--  发布时间:2014/12/16 10:31:07
--  
如螺纹:我的意思是:我在回测时,这样写的话就会出现所说的成交结果。。是图表的信号和回测值。就是在当根K线出信号并且在开盘价开仓后如果当根K线的LOW<=MA20时不会出平仓信号。。只会在下根K线出平仓信号。并且回测数值是开盘价或收盘价具体忘记了。当然实盘的话并不会经常出现这种情况,因为过滤条件过滤了绝大部份。3年的回测在10次左右或 以下。我的问题是在静态时图表的信号是不能显示我的真实意图,回测数也是。(不在当根K线LOW<=MA20时发出平仓信号而在下根,因为当根有开仓信号)。因为没平仓信号出现,我想知道的是图表程序化的标准版实盘会这样吗。
--  作者:dskfdg
--  发布时间:2014/12/16 10:37:22
--  
可以设一条线如。MA(C,5)...C>MA(C,5)时在下周期开盘价开仓。LOW<=MA(C,5)时平仓。那这样就会出现很多这样的事。图表信号。
--  作者:jinzhe
--  发布时间:2014/12/16 10:42:57
--  
N:=1;
MA20:=INTPART(MA(C,20)/N3)*N3;
做多:REF(C,1)>=REF(MA20,1);
止损:LOW<=MA20;
开仓:BUY(HOLDING=0 AND 做多,1,limitr,OPEN);
平仓:SELL(HOLDING>0 AND 止损,0,limitr,IF(OPEN<MA20,OPEN,MA20));
限价下单有专门的函数,不写不是限价单


--  作者:dskfdg
--  发布时间:2014/12/16 12:02:06
--  
//参数
INPUT:N3(1,0.01,50,0.01);
//变量
MAN:INTPART(MA(CLOSE,10)/N3)*N3,COLORWHITE;
//平空条件
SSL:=HIGH>=MAN AND REF(HIGH,1)<REF(MAN,1);
//平多条件
SL:=LOW<=MAN AND REF(LOW,1)>REF(MAN,1);
//开空条件
SBY:=REF(CLOSE,1)<REF(MAN,1) AND REF(HIGH,1)<REF(MAN,1) AND REF(CLOSE,1)<REF(OPEN,1) AND OPEN<MAN;
//开多条件
BY:=REF(CLOSE,1)>REF(MAN,1) AND REF(LOW,1)>REF(MAN,1) AND REF(CLOSE,1)>REF(OPEN,1) AND OPEN>MAN;
//平空
IF HOLDING<0 AND SSL THEN BEGIN
SELLSHORT(1,0,LIMITR,IF(OPEN>MAN,OPEN,MAN));
END
//平多
IF HOLDING>0 AND SL THEN BEGIN
SELL(1,0,LIMITR,IF(OPEN<MAN,OPEN,MAN));
END
//开空
IF HOLDING=0 AND SBY THEN BEGIN
BUYSHORT(1,1,LIMITR,OPEN);
END
//开多
IF HOLDING=0 AND BY THEN BEGIN
BUY(1,1,LIMITR,OPEN);
END

可能我的写法有问题,请帮忙看下那出问题了。。。如螺纹1505的2014年11月18日15:00的K线。。5分钟周期。还有如何解决2014年11月19日14:50的问题。。在实盘是会是什么样的结果。还有像2014年11月13日13:40的问题。。。上述都是RB1505的5分钟周期。


--  作者:dskfdg
--  发布时间:2014/12/16 12:20:24
--  
//开空
IF HOLDING=0 AND SBY AND EXITBARS<>0 THEN BEGIN
BUYSHORT(1,1,LIMITR,OPEN);
END
//开多
IF HOLDING=0 AND BY AND EXITBARS<>0 THEN BEGIN
BUY(1,1,LIMITR,OPEN);
END

开仓时加上EXITBARS<>0 解决了一部份问题。

--  作者:dskfdg
--  发布时间:2014/12/16 12:27:14
--  
//开空
IF HOLDING=0 AND SBY AND EXITBARS<>0 THEN BEGIN
BUYSHORT(1,1,LIMITR,OPEN);
END
//开多
IF HOLDING=0 AND BY AND EXITBARS<>0 THEN BEGIN
BUY(1,1,LIMITR,OPEN);
END

开仓时加上EXITBARS<>0 解决了一部份问题。
这样就会出现当根K线在开盘价开仓后,当当根K线的最低或最高价等于MAN时不在当根K线平仓了。

--  作者:dskfdg
--  发布时间:2014/12/16 12:31:26
--  
//参数
INPUT:N3(1,0.01,50,0.01);
//变量
MAN:INTPART(MA(CLOSE,10)/N3)*N3,COLORWHITE;
//平空条件
SSL:=HIGH>=MAN AND REF(HIGH,1)<REF(MAN,1);
//平多条件
SL:=LOW<=MAN AND REF(LOW,1)>REF(MAN,1);
//开空条件
SBY:=REF(CLOSE,1)<REF(MAN,1) AND REF(HIGH,1)<REF(MAN,1) AND REF(CLOSE,1)<REF(OPEN,1) AND OPEN<MAN;
//开多条件
BY:=REF(CLOSE,1)>REF(MAN,1) AND REF(LOW,1)>REF(MAN,1) AND REF(CLOSE,1)>REF(OPEN,1) AND OPEN>MAN;
//平空
IF HOLDING<0 AND SSL THEN BEGIN
SELLSHORT(1,0,LIMITR,IF(OPEN>MAN,OPEN,MAN));
END
//平多
IF HOLDING>0 AND SL THEN BEGIN
SELL(1,0,LIMITR,IF(OPEN<MAN,OPEN,MAN));
END
//开空
IF HOLDING=0 AND SBY AND EXITBARS<>0 THEN BEGIN
BUYSHORT(1,1,LIMITR,OPEN);
END
//开多
IF HOLDING=0 AND BY AND EXITBARS<>0 THEN BEGIN
BUY(1,1,LIMITR,OPEN);
END

开仓时加上EXITBARS<>0 解决了一部份问题。
这样就会出现当根K线在开盘价开仓后,当当根K线的最低或最高价大于等于或小于MAN时不在当根K线平仓了。图表信号是这样不知道实盘结果怎样。。。我的写法错在那里。

--  作者:dskfdg
--  发布时间:2014/12/16 12:42:14
--  
/平空条件
SSL:=HIGH>=MAN;
//平多条件
SL:=LOW<=MAN;

如果把平仓条件改成这样就会在下根K线平仓
[此贴子已经被作者于2014/12/16 12:42:33编辑过]