设为首页收藏本站

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

编了个简单的交易系统怎么也感觉不对? [复制链接]

Rank: 3Rank: 3

精华
0
UID
2545
积分
139
帖子
24
主题
9
阅读权限
40
注册时间
2008-10-12
最后登录
2008-11-20
跳转到指定楼层
1#
发表于 2008-10-19 17:33:09 |只看该作者 |倒序浏览
//------------------------------------------------------------------------
// 简称: jy001
// 名称: 趋势交易
// 类别: 交易指令
// 类型: 其他
// 输出:
//------------------------------------------------------------------------
Params
    Numeric M(30);        //判断峰与谷的周期数
    Numeric N(10);            //峰与谷两边的bars的个数

Vars
    Numeric jccs(0);  //建仓次数
    Numeric ccsl(0);  //持仓数量
   
Begin
//原理:趋势跟踪

//建仓
//    建多仓条件:(同时成立)  //短平均线上穿长平均线1

    If(CrossOver(AverageFC(Close,N),AverageFC(Close,M)))
    {
        If(Buy(IntPart(CurrentCapital()*0.1/Close),Close,True))
        {
            If(MarketPosition()==0)
                jccs=0;
            Else
                jccs=CurrentEntries();


        }
            FileAppend("e:\\test.log","MarketPosition"+Text(MarketPosition())+"buy_ok,第"+Text(jccs)+"次买进:"+Text(CurrentContracts())+"手");
    }
//    建空仓条件:(同时成立) //短平均线下穿长平均线

    If(CrossUnder(AverageFC(Close,N),AverageFC(Close,M)))
    {

        If(SellShort(IntPart(CurrentCapital()*0.1/Close),Close,False))//SellShort是建空仓,sell是平多的意思
        {
            If(MarketPosition()==0)
                jccs=0;
            Else
                jccs=CurrentEntries();

            FileAppend("e:\\test.log","sell_ok,第"+Text(jccs)+"次卖出:"+Text(CurrentContracts())+"手");
        }
    }
        
//加仓
//    多单加仓条件:(同时成立)
//        1、盈利10%以上;
//        2、最近的一个谷底收盘价格比前一个高;
//        3、回调谷底已经形成。
//    空单加仓条件:(同时成立)
//        1、盈利10%以上;
//        2、最近的一个峰顶收盘价格比前一个低;
//        3、回调峰顶已经形成。

//平仓 //利润回撤多少才能止损,有待研究

    If(MarketPosition()!=0)
    {
        If(A_PositionProfitLoss()<0)  
        {
            ccsl=CurrentContracts();//持仓量
            If(SetStopLoss(1, CurrentContracts()*Close*ContractUnit()*MarginRatio()*0.05, False))   //当亏损大于保证金的5%时,止损平仓
                FileAppend("e:\\test.log","止损:"+Text(ccsl)+"减少为:"+Text(CurrentContracts()));
        }
        jccs=CurrentContracts();//持仓量
        If(SetBreakEven(1,500, False))//盈利大于200元时启动保本平仓策略,即利润再回到0时开始平仓操作;
            FileAppend("e:\\test.log","保本操作:"+Text(ccsl)+"减少为:"+Text(CurrentContracts()));
        jccs=CurrentContracts();//持仓量
        If(SetPercentTrailing(CurrentContracts()*Close*ContractUnit()*MarginRatio()*0.05,0.1,False)) //盈利大于保证金的5%后,当盈利回落20%时止盈平仓
            FileAppend("e:\\test.log","止盈:"+Text(ccsl)+"减少为:"+Text(CurrentContracts()));
    }

End



//------------------------------------------------------------------------
// 编译版本    GS2004.06.12
// 用户版本    2008/10/16 21:30
// 版权所有    lrj0703
// 更改声明    TradeBlazer Software保留对TradeBlazer平台
//            每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------

Rank: 3Rank: 3

精华
0
UID
2545
积分
139
帖子
24
主题
9
阅读权限
40
注册时间
2008-10-12
最后登录
2008-11-20
2#
发表于 2008-10-19 17:35:26 |只看该作者

这是测试结果。怪怪的,又不知道错在哪?

这是测试结果。怪怪的,又不知道错在哪?请各位教师指教一二!!!
MarketPosition0buy_ok,第0次买进:0手
保本操作:0减少为:0
sell_ok,第1次卖出:-11手
MarketPosition-1buy_ok,第1次买进:-11手
止盈:0减少为:0
sell_ok,第1次卖出:-10手
保本操作:0减少为:0
MarketPosition0buy_ok,第0次买进:0手
止盈:0减少为:0
sell_ok,第1次卖出:-9手
MarketPosition-1buy_ok,第1次买进:-9手
保本操作:0减少为:0
sell_ok,第1次卖出:-13手
保本操作:0减少为:0

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
2545
积分
139
帖子
24
主题
9
阅读权限
40
注册时间
2008-10-12
最后登录
2008-11-20
3#
发表于 2008-10-19 17:48:54 |只看该作者

明白了

原来buy的延迟参数设了为true,造成测试时应该在下个bar时才发出买指令造成的。
所以当前bar的CurrentContracts()仍为0

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
2108
积分
245
帖子
39
主题
4
阅读权限
40
注册时间
2008-8-8
最后登录
2016-3-28
4#
发表于 2008-10-21 21:36:52 |只看该作者
很好
很值得学习

使用道具 举报

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

bottom

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

GMT+8, 2024-5-3 17:34

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部