设为首页收藏本站

 找回密码
 注册
查看: 12404|回复: 17
打印 上一主题 下一主题

请求编程高手完善一个日内交易的实战源码(已附测试码) [复制链接]

Rank: 2

精华
0
UID
33925
积分
90
帖子
13
主题
2
阅读权限
30
注册时间
2011-4-18
最后登录
2012-1-9
跳转到指定楼层
1#
发表于 2011-4-20 12:36:31 |只看该作者 |倒序浏览
本帖最后由 hongyangyang2 于 2011-4-20 12:52 编辑

本策略是基于一根日K线上的振荡系统,时价上穿上轨卖出,时价下穿下轨买入,收盘前平仓,设固定止损点位,就这么简单。好不容易编了个测试代码如下,现请求编程高手将其编成能实战使用的源码。要求如下:
1.每天开盘价出现1分钟后系统启动。
2.本系统同时监视10个品种的情况,谁的信号出现的最早就买谁,一天只买一次,一次只买一个品种。
3.每天出现买入信号时,以现在账户资金的50%一次性买入,全天不再有任何买入。本条要防止盘中信号反复出现造成反复买入,并且不再买入其他品种。
4.卖空时,以上轨价买入;买多时,以下轨价买入。
5.到了止损价位,在盘中及时止损。
6.若没有止损,收盘前全部卖出。
7.最后,本程序是在日K线图中运行的。

Params        // 宣告参数定义

      Numeric stoploss(2);   
        
Vars        // 宣告变量定义

     NumericSeries Z1;        

        NumericSeries Z2;      

        NumericSeries Z;   

        NumericSeries stopprice1;  

        NumericSeries stopprice2;

Begin        // 宣告公式正文开始

     Z = Abs(H[1]-L[1]);      

        Z1 = O-Z;        

        Z2 = O+Z;   

        stopprice1=(-1*stoploss/100+1)*Z1;

        stopprice2=(stoploss/100+1)*Z2;

        IF(H>Z2 )        

        {

               SellShort(0,Z2);     

        }
       IF(ABS(H/Z2-1)*100>STOPLOSS)

        {
           BuyToCover(0,stopprice2) ;
        }
        else
          {
            SetExitOnClose();
          }         

       IF(L<Z1 )        

        {

          BUY(0,Z1);     

        }

      IF(ABS(L/Z1-1)*100>STOPLOSS)

        {
           SELL(0,stopprice1) ;
        }
           else
          {
            SetExitOnClose();
           }         

End                // 宣告公式正文结束

可能有点难度哦,呵呵
红洋

Rank: 2

精华
0
UID
33925
积分
90
帖子
13
主题
2
阅读权限
30
注册时间
2011-4-18
最后登录
2012-1-9
2#
发表于 2011-4-20 16:58:40 |只看该作者
希望高手帮忙啊
红洋

使用道具 举报

Rank: 2

精华
0
UID
33925
积分
90
帖子
13
主题
2
阅读权限
30
注册时间
2011-4-18
最后登录
2012-1-9
3#
发表于 2011-4-21 18:58:36 |只看该作者
有没有人帮忙啊?或者专职TB编程需要酬金的也可以,若有请联系我,QQ:45091184
红洋

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
15958
积分
1290
帖子
155
主题
22
阅读权限
60
注册时间
2010-9-9
最后登录
2021-1-25
4#
发表于 2011-4-21 22:22:30 |只看该作者
代码很容易实现。
希望有时间的人能帮你
10个品种间的互斥可以用数据库来控制
我一生在纸上,被风吹乱

使用道具 举报

Rank: 2

精华
0
UID
33925
积分
90
帖子
13
主题
2
阅读权限
30
注册时间
2011-4-18
最后登录
2012-1-9
5#
发表于 2011-4-22 19:33:00 |只看该作者
哦,谢谢提供思路。测试时,如果操作是日内交易,要在当日收盘前卖出,那么如何使用日线中的均线来过滤?
主要的问题是今日的收盘价、均线数据不能使用,否则就是未来函数了。我现在有个思路,就是在买入的时候,引用1分钟周期的数据来判断,比如此时是否C【1】>MA【1】,MA数值相当于日线中的6日,不知道这样的过滤有没用?
红洋

使用道具 举报

Rank: 2

精华
0
UID
11934
积分
93
帖子
26
主题
0
阅读权限
30
注册时间
2010-6-10
最后登录
2018-2-27
6#
发表于 2011-4-23 17:46:25 |只看该作者
在收盘前卖出用日线均线过滤是什么意思?怎么过滤?
程序

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
39083
积分
219
帖子
47
主题
2
阅读权限
40
注册时间
2011-5-11
最后登录
2012-7-14
7#
发表于 2011-6-29 01:46:59 |只看该作者
支持一下
让机器完成复杂的工作

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
42516
积分
1239
帖子
264
主题
31
阅读权限
60
注册时间
2011-5-25
最后登录
2014-9-23
8#
发表于 2011-7-2 18:04:42 |只看该作者
你这个系统论坛有个现成的,跟你的交易方向相反,上穿买入,下穿卖出

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
42516
积分
1239
帖子
264
主题
31
阅读权限
60
注册时间
2011-5-25
最后登录
2014-9-23
9#
发表于 2011-7-2 18:05:42 |只看该作者
Params
        Numeric PercentOfRange(0.8);//突破参数N
        Numeric ExitOnCloseMins(14.55);//平仓时间
        Numeric MinRange(0.002);//最小Range - 0.2%
        Numeric LastTradeMins(14.00);//最后交易时间
        Numeric BeginTradeMins(9.00);
        Numeric Lots(1);
        Numeric Stoplossset(0.01);//止损-1%
Vars
        NumericSeries DayOpen;
        NumericSeries preDayRange;
        Numeric UpperBand;
        Numeric LowerBand;
        Numeric MyPrice;
        Numeric StopLine;
Begin
        DayOpen = OpenD(0);
        preDayRange = HighD(1) - LowD(1);
        UpperBand = DayOpen + preDayRange * PercentOfRange;
        LowerBand = Dayopen - preDayRange * PercentOfRange;         

        If(Date != Date[1])        {
                DayOpen = Open;
                preDayRange = HighD(1) - LowD(1);
                //如果昨日振幅过小,则取设置的最小振幅
                preDayRange = max(preDayRange, Open * MinRange);
        }Else{
                DayOpen = DayOpen[1];
                preDayRange = preDayRange[1];
        }        
        
        //未开仓时,判断是否需要开仓
        if(MarketPosition == 0){
                //多头开仓
                If(High >= UpperBand && Time < LastTradeMins / 100){
                        Buy(Lots, max(upperband, open));
                        Return;
                }
               
                //空头开仓
                If(Low <= LowerBand && Time < LastTradeMins/100){
                        Sellshort(Lots, min(lowerBand,open));
                        Return;
                }
        }

        多头止损
        If(MarketPosition == 1){
                StopLine = UpperBand - DayOpen * StopLossSet;
                If(Low <= StopLine){
           
                        BuyToCover(Lots, Min(StopLine, Open));
                }
        }

        空头止损
        If(MarketPosition == -1){
                StopLine = LowerBand + DayOpen * StopLossSet;
                If(High >= StopLine){
               
                        Sell(Lots, Max(StopLine, Open));
                }
        }
        
        //收盘平仓
        If(Time >= ExitOnCloseMins / 100){
                Sell(Lots, Open);
                BuyToCover(Lots, Open);
        }

        SetExitOncLOSE;
End

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
42516
积分
1239
帖子
264
主题
31
阅读权限
60
注册时间
2011-5-25
最后登录
2014-9-23
10#
发表于 2011-7-2 18:10:11 |只看该作者
上面是源码,用在15分钟线上,然后突破差值取的是日线的昨日最高-最低,把突破参数改为1

       If(Low <= LowerBand && Time < LastTradeMins/100)
{
                        Buy(Lots, min(lowerBand,open));
                        Return;
}
If(MarketPosition == 1 && High>= UpperBand ){
           
                        Sell(Lots, Max(UpperBand , Open));
                }
        }

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-16 03:03

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部