以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (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=2929)

--  作者:msedu
--  发布时间:2010/9/20 23:51:25
--  我写的图表交易系统,请高手指点:

 

//------------------------
LONG:=C>HHV(5,H);

SHORT:=C<LLV(5,L);
//------------------------


CONBUY:=Long And Not(Ref(Long,1));
CONBUYSHORT:=Short And Not(Ref(Short,1));

CONNo:=OpenPrift>1000 ;


ConTime:=(CURRENTTIME>145920 AND CURRENTTIME<150005);


//不是最后一根Bar,只显示买卖信号(这里给大家提个建议,显示的字体难看啊。。。)

If  Not(IsLastBar) Then Begin


//做多
If ConBuy Then Begin
SellShort(Holding<0,0,ThisClose),TFILTER,ORDERQUEUE;
Buy(Holding=0,1,ThisClose),TFILTER,ORDERQUEUE;
End

 

//做空
If ConBuyShort Then Begin
Sell(Holding>0,0,ThisClose),TFILTER,ORDERQUEUE;
BuyShort(Holding=0,1,ThisClose),TFILTER,ORDERQUEUE;
End

 

//空仓

Sell(CONNO  And holding>0,0,ThisClose);
SellShort(CONNO AND holding<0,0,ThisClose);

End

 

//最后K线

If ConTime And IsLastBar Then Begin

 

//做多
If ConBuy Then Begin
SellShort(Holding<0,0,ThisClose),TFILTER,ORDERQUEUE;
Buy(Holding=0,1,ThisClose),TFILTER,ORDERQUEUE;
End

 

//做空
If ConBuyShort Then Begin
Sell(Holding>0,0,ThisClose),TFILTER,ORDERQUEUE;
BuyShort(Holding=0,1,ThisClose),TFILTER,ORDERQUEUE;
End

 

//空仓
Sell(CONNO  And holding>0,0,ThisClose);
SellShort(CONNO AND holding<0,0,ThisClose);

 

//纠错
If Long And Holding<0 Then SellShort(1,0,MKT);
If Short  And Holding>0 Then Sell(1,0,MKT);

End


--  作者:董小球
--  发布时间:2010/9/21 10:12:17
--  

你也不说说你公式要看啥问题,不需要你自己判断是否是最后K线的,系统会自动判断,如果是最后周期的就给你下单,不是最后周期的周期会表示买卖记号而已,不知道你问的是不是这个问题!


--  作者:admin
--  发布时间:2010/9/21 10:14:54
--  
Sell 等新交易系统指令不能用TFILTER,只能用在ENTERLONG等旧交易系统上
--  作者:fly
--  发布时间:2010/9/21 10:25:36
--  
LONG:=C>HHV(5,H);

SHORT:=C<LLV(5,L);

 

HHV和LLV函数用错了,出现低级概念性失误.

 

1.建议改成

H5:=REF(HHV(H,5),1);

L5:=REF(LLV(L,5),1);

 

2.开平仓的时间---模拟的和实盘的要区别对待

http://www.weistock.com/bbs/dispbbs.asp?boardid=2&Id=49问题12

 

 

 

 

 



--  作者:msedu
--  发布时间:2010/9/21 10:34:25
--  
以下是引用董小球在2010-9-21 10:12:17的发言:

你也不说说你公式要看啥问题,不需要你自己判断是否是最后K线的,系统会自动判断,如果是最后周期的就给你下单,不是最后周期的周期会表示买卖记号而已,不知道你问的是不是这个问题!

 

其实,我把“最后一根K线”和“非最后一根K线”区别开,是想对它们进行不同的处理,因为,交易是在最后一根K线上发生的,所以,我区别开,只在临近收盘时候才下单,避免盘中信号的反复,也让开仓的价格始终尽可能接近当日的收盘价,让真实的盈亏和回测的盈亏尽可能的接近。。。

 

不知道有没有更好的写法呢?


--  作者:董小球
--  发布时间:2010/9/21 10:54:02
--  

哦 要是用于测试用的话,那你就不能用CURRENTTIME了吧 得用time吧。

 


--  作者:msedu
--  发布时间:2010/9/21 12:09:01
--  
以下是引用fly在2010-9-21 10:25:36的发言:
LONG:=C>HHV(5,H);

SHORT:=C<LLV(5,L);

 

HHV和LLV函数用错了,出现低级概念性失误.

 

1.建议改成

H5:=REF(HHV(H,5),1);

L5:=REF(LLV(L,5),1);

 

2.开平仓的时间---模拟的和实盘的要区别对待

http://www.weistock.com/bbs/dispbbs.asp?boardid=2&Id=49

 

这里不是模拟和实盘的区别哈,是这样的,在图表交易中如果使用了 IsLastBar或者CurrentTime,那么图表上就不会显示“回测的开平仓信号”,因为只对最后一根Bar做处理,所以,分开处理,写两段,就是既能让图表上把以前的交易记录显示出来,也能在最后一根BAR的实际交易时,做特殊的处理:比如时间控制、等。。。

 

这样写好不好,大家再思考一下,给点建议啊!

 

 

 

 

 


[此贴子已经被作者于2010-9-21 12:11:08编辑过]