开拓者期货期权程序化系统交易论坛

标题: 据说日内这么玩 [打印本页]

作者: nikko1919    时间: 2010-9-9 14:40:24     标题: 据说日内这么玩

本帖最后由 nikko1919 于 2010-9-9 14:48 编辑

一直不会日内交易,以前设想过一个系统,终究没实现。这两天看到一文章正好和小弟那设想差不多,不过人家分得比较细,交易品种啊,时间啊,都控制得非常好。
      我这里就说一下,请同学们甄别
      品种:CU,RU,Y,L等
      时间:忘了是开盘到11:30还是开盘到收盘
      方法:以开盘价为基准,上下浮动若干个点,比如20。
              ----开仓:基点+20  ==> 开多
              ----平仓:基点-20   ==> 平多
              做空同理
注意事项:每天开平仓不超过4个来回,收盘前平仓。
              当天开盘价太靠近昨日均价不做(内包),仅限于今开在昨收附近或者昨K线实体以外时。
作者: 天柏    时间: 2010-9-9 16:14:34

蚊帐呢?叫出来。。。。。
作者: nikko1919    时间: 2010-9-9 16:28:16

《期货策略》
       -------方志

写得还是有点水平,感觉策略类的书籍比纯粹的技术类书籍更发人深省
作者: 天柏    时间: 2010-9-10 09:46:51

隔日有跳空开盘价作为基准的交易方法,希望刚开盘时速度能跟上,滑点不是很大,是否还可以加点什么限制?
作者: 文静的狮子    时间: 2010-9-14 10:14:53

Params
        Numeric Lots(1);//开仓手数
        Numeric maxTrad(4);//最大交易次数
        Numeric splitRate(2); //交易滑点和佣金        
        Numeric closeTime(14.54); //bar的时间超过此值后平仓
        Numeric tradEndtime(14.40);//超过此时间不开仓
                Numeric minrange(15);//开盘价波动此数值开仓
               
vars
       Numeric splitDot;  //交易滑点
       Bool b1(False);//开多条件
       Bool s1(False);//开空条件
       Bool bc(False);//开多条件
       Bool sc(False);//开多条件
       Numeric tradePrice(0);//发单价格        
       NumericSeries tradNum(0);//交易次数
       NumericSeries myposition(0);//持仓状态:0/无,1/多,-1/空        
           String tradmem;
        
Begin
        splitDot=splitRate*MinMove();
        
       if(Day !=Day[1])//如果当前K线与前一根不在同一天
        {
                                SetGlobalVar(0,0);//全局变量记录仓位,防止重复开仓
                                SetGlobalVar(1,0);//全局变量记录交易次数,防止过度交易
                               
                               
        }        
      
        {
                              
                                        myposition=GetGlobalVar(0);//当前持仓初始化
                                        tradNum=GetGlobalVar(1);//当前交易次数初始化
       
                //跌停板附近不开多仓,涨停附近不开空仓
                if(BarStatus==2)//当前K线为最近一根K线时
                {
                        b1=Close>(Q_LowerLimit()+20*MinMove());//如果收盘价大于跌停价向上浮动20个点,b1为真
                        s1=Close<(Q_UpperLimit()-20*MinMove()) ;//如果收盘价小于涨停价向下浮动20个点,s1为真
                }
                Else
                {        
                        b1=Not(High==Low And High==Close Or High[1]==Low[1] );//涨跌停板及集合竞价的处理
                        s1=Not(High==Low And High==Close Or High[1]==Low[1] );//
                }               
                        
                If(tradNum<=maxTrad And Time<=tradEndtime/100)//如果当前交易次数小于等于最大交易次数并且时间处于14:40之前
                {
                        //开仓条件
                        bc=High>=OpenD(0)+minrange*MinMove And b1 ;//bc为真
                        sc=Low<=OpenD(0)-minrange*MinMove And s1 ;//sc为真                                                
                }               
        
                // 当前无仓-----------------------------------------------------------------Begin
                if(myposition<>1 )//如果当前没有多单持仓
                {               
                        // 当前无仓,开始建立多头
                        if(bc)//如果bc是真
                        {
                                if(BarStatus==2) //如果当前为最后一根K线
                                                                tradePrice= Q_AskPrice +splitDot;//开仓价格为当前最新卖盘价格+滑点
                                                                Else tradePrice=Open+splitDot;  //如果当前不是最后一根K线,开仓价格为当前K线的开盘价+滑点
                                                                if(Buy(Lots,tradePrice))
                                                                {
                                                                tradnum=tradnum+1;
                                                                myposition=1;
                                                                tradmem="指令一:"+" myposition="+text(myposition)+" 当前交易次数:"+text(tradnum);
                                                                }//开多仓
                                                       
                                
                        }
                        Else//没有达到开多条件的时候
                     
                        If(time>=closeTime/100)
                        {
                                if(myposition==-1)
                                                                        {
                                                                                if(BarStatus==2) //如果当前为最后一根K线
                                                                                        tradePrice= Q_AskPrice +splitDot;//开仓价格为当前最新卖盘价格+滑点
                                                                                Else tradePrice=Open+splitDot;  //如果当前不是最后一根K线,开仓价格为当前K线的开盘价+滑点
                                                                        if(BuyToCover(Lots,tradePrice))
                                                                                {
                                                                                        myposition=0;
                                                                                        tradmem="指令二:"+" myposition="+text(myposition)+" 当前交易次数:"+text(tradnum);
                                                                               
                                                                                }//收盘前平空单
                                                                        }
                                                }
                                }
                        else if(myposition<>-1 )//如果当前没有空单持仓               
                                        {
                                               
                                                if(sc)//如果sc是真的
                                                {
                                                        if(BarStatus==2)tradePrice= Q_BidPrice -splitDot;//如果当前K线为最后一根,开仓价格为最新买盘价格-滑点
                                                                        Else tradePrice=Open-splitDot;   //如果当前K线不是最后一根,开仓价格为当前K线的开盘价-滑点
                                If(SellShort(Lots,tradePrice)) //如果以开仓价格开空lots手成功
                                {
                                                                        tradnum=tradnum+1;
                                                                        myposition=-1;
                                                                        tradmem="指令三:"+" myposition="+text(myposition)+" 当前交易次数:"+text(tradnum);
                                }//开空仓
                        }
                                                else If(time>=closeTime/100)
                                        {
                                                        if(myposition==1)
                                                                {
                                                                        if(BarStatus==2)tradePrice= Q_BidPrice -splitDot;//如果当前K线为最后一根,开仓价格为最新买盘价格-滑点
                                                                        Else tradePrice=Open-splitDot;   //如果当前K线不是最后一根,开仓价格为当前K线的开盘价-滑点
                                If(Sell(Lots,tradePrice)) //如果平多lots手成功
                                {                                                                       
                                                                        myposition=0;
                                                                        tradmem="指令四:"+" myposition="+text(myposition)+" 当前交易次数:"+text(tradnum);
                                }//收盘前平多仓                                                               
                                                                }


                                                }
                                }
            
              SetGlobalVar(0,myposition);
                          SetGlobalVar(1,tradnum);
               
                                             
        }  Commentary(tradmem);     
End
作者: 文静的狮子    时间: 2010-9-14 10:15:52

上面是楼主所说的代码,经过测试,效果一般!
作者: nikko1919    时间: 2010-9-25 22:39:23

同学有没空专门在沪胶上测试几个月?

   -------我在山里......
作者: nikko1919    时间: 2010-10-8 20:04:09

以这个系统的思路,应用在TICK图上,作为一个概率系统用于日内交易,我想还是有一定的可行性的,不知其他同学怎么认为?
作者: lxjdz988    时间: 2010-10-9 20:08:58

如果能加上移动止损应该是个不错的系统.
作者: 穿堂风    时间: 2010-10-27 16:52:48

Params
        Numeric Lots(1);//开仓手数
        Numeric maxTrad(4);//最大交易次数
        Numeric splitRate(2); //交易滑点和佣金        
        Numeric closeTime(14.54); //bar的时间超过此值后平仓
  ...
文静的狮子 发表于 2010-9-14 10:14


tradePrice=open+splitDot;  //如果当前不是最后一根K线,开仓价格为当前K线的开盘价+滑点
tradePrice=open-splitDot;   //如果当前K线不是最后一根,开仓价格为当前K线的开盘价-滑点
这两句引用了未来数据,实际测试会跟这差很远,因为当你知道high或low大于或小于幅度的时候,此时你开仓,你不可能拿到open+滑点的成交价,应该改成:
tradePrice=OpenD(0)+minrange*MinMove+splitDot;  //如果当前不是最后一根K线,开仓价格为当前K线的开盘价+滑点
tradePrice=OpenD(0)-minrange*MinMove-splitDot;   //如果当前K线不是最后一根,开仓价格为当前K线的开盘价-滑点
作者: QQ985200780    时间: 2010-10-27 21:17:23

时间:开盘到11:30  到15:00收盘
      方法:以开盘价为基准,上下浮动若干个点,比如20。
              ----开仓:基点+20  ==> 开多
              ----平仓:基点-20   ==> 平多
              做空同理
注意事项:每天开平仓不超过4个来回,收盘前平仓。
              

经常类似交易。斑竹程序启发的不错。
作者: nikko1919    时间: 2010-10-28 21:19:30

另外有个方法是在极端行情出现反向K线破前一天K线大部分价格后做日内。通常区间比较大,可行性较高
作者: skykisser    时间: 2012-10-3 10:51:41

这个策略如何加止损呢?请版主和高手赐教
作者: 迎风尿十丈    时间: 2012-10-4 14:40:18

这系统一般人都想过
以前做过个ea
跟着类似,就是超过开盘价正负多少点开仓,在加上止损,移动止损,长期看是个亏损系统,亏手续费,如果是场内的,做高频不错,
从k线图上看,每根k线都会在开盘价上有价为移动,除非是一字k线,或者,开盘价是最低价,
有个更激进的系统,开盘直接各开多空一手,小止盈大止损,胜率应该很高吧,:lol:lol
最后转到隔夜了




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2