设为首页收藏本站

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

来看看这个程序为什么不开仓 [复制链接]

Rank: 3Rank: 3

精华
0
UID
10701
积分
170
帖子
44
主题
18
阅读权限
40
注册时间
2010-5-22
最后登录
2019-3-30
跳转到指定楼层
1#
发表于 2013-3-18 09:59:07 |只看该作者 |倒序浏览
//价格上穿20均线开多,下穿开空  
//
//30%仓位上限
//
//------------------------------------------------------------------------

Params

    Numeric Length(20);                  // 平均波动周期 ATR Length

Vars
        NumericSeries AvgValue;
                          
    Numeric TotalEquity;        // 按最新收盘价计算出的总资产

       
        String BuyPositionStr;
        String SellPositionStr;
       
        Numeric BuyPosition;
        Numeric SellPosition;
       
        Numeric Units;
    String BuyUnitsStr;                                                        // 交易单位
        String SellUnitsStr;
    Numeric BuyUnits;                                                        // 交易单位
        Numeric SellUnits;
       

           
Begin
       
        //If ( Q_Last == 0 || ( Date != Date[1] && High == Low ) )         Return;        //如果未开盘,则直接返回       

        AvgValue = Average(Close,Length);
       
    TotalEquity = Portfolio_CurrentCapital() + Portfolio_UsedMargin();
        Units=IntPart((TotalEquity*0.3) /(Close* ContractUnit()*MarginRatio()));

        If(GetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyPosition")==InvalidString)                //持仓状态赋初值
        {
                BuyPosition=0;               
        }
        If(GetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellPosition")==InvalidString)
        {
                SellPosition=0;               
        }
       
        If(GetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyPosition")!=InvalidString)
        {
                BuyPositionStr=GetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyPosition");
                BuyPosition=Value(BuyPositionStr);       
        }
        If(GetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellPosition")!=InvalidString)
        {
                SellPositionStr=GetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellPosition");
                SellPosition=Value(SellPositionStr);       
        }
       
       
        If(GetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyUnits")!=InvalidString)               
        {
                BuyUnitsStr=GetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyUnits");
                BuyUnits=Value(BuyUnitsStr);
        }
        If(GetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellUnits")!=InvalidString)               
        {
                SellUnitsStr=GetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellUnits");
                SellUnits=Value(SellUnitsStr);
        }       

                       

                       
                        If((Q_Last > AvgValue) &&(Q_High<AvgValue)&&(Units >= 1)&&BuyPosition==0&&SellPosition==0)                //无持仓上穿开多
                        {
                                A_SendOrder(Enum_Buy,Enum_Entry,Units,Q_UpperLimit);

                                SetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyPosition",Text(1));                               
                                SetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyUnits",Text(Units));

                        }

                        If((Q_Last < AvgValue) &&(Q_Low>AvgValue)&&(Units >= 1)&&SellPosition==0&&BuyPosition==0)                //无持仓下穿开空
                        {
                                A_SendOrder(Enum_Sell,Enum_Entry,Units,Q_LowerLimit);

                                SetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellPosition",Text(-1));                       
                                SetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellUnits",Text(Units));

                        }
                       
                        If((Q_Last > AvgValue) && (Units >= 1)&&BuyPosition==0&&SellPosition==-1)                //空单平仓反手
                        {
                                A_SendOrder(Enum_Buy,Enum_Exit,SellUnits,Q_UpperLimit);                       
                                A_SendOrder(Enum_Buy,Enum_Entry,Units,Q_UpperLimit);

                                SetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellPosition",Text(0));
                                SetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyPosition",Text(1));
                               
                                SetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellUnits",Text(0));
                                SetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyUnits",Text(Units));

                        }

                        If((Q_Last < AvgValue) && (Units >= 1)&&SellPosition==0&&BuyPosition==1)                        //多单平仓反手
                        {
                                A_SendOrder(Enum_Sell,Enum_Exit,BuyUnits,Q_LowerLimit);
                                A_SendOrder(Enum_Sell,Enum_Entry,Units,Q_LowerLimit);

                                SetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyPosition",Text(0));
                                SetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellPosition",Text(-1));       

                                SetTBProfileString2File("D:\\TBlog.log",Symbol(),"BuyUnits",Text(0));
                                SetTBProfileString2File("D:\\TBlog.log",Symbol(),"SellUnits",Text(Units));


                        }                       
       

End

Rank: 6Rank: 6

精华
0
UID
116229
积分
2373
帖子
2247
主题
18
阅读权限
70
注册时间
2013-3-4
最后登录
2019-3-24
2#
发表于 2013-3-18 10:32:54 |只看该作者
具体代码没有细看,这里先提醒楼主Q_Last 只能用于实时行情交易,不能用于历史测试。

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
10701
积分
170
帖子
44
主题
18
阅读权限
40
注册时间
2010-5-22
最后登录
2019-3-30
3#
发表于 2013-3-18 10:36:26 |只看该作者
就是因为要具体到判断每一跳的行情才这样写的,求指导,看看问题出在哪里了

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
10701
积分
170
帖子
44
主题
18
阅读权限
40
注册时间
2010-5-22
最后登录
2019-3-30
4#
发表于 2013-3-18 10:37:48 |只看该作者
在明确一下,我的意思是实盘中不下单,不是历史测试

使用道具 举报

Rank: 6Rank: 6

精华
0
UID
116229
积分
2373
帖子
2247
主题
18
阅读权限
70
注册时间
2013-3-4
最后登录
2019-3-24
5#
发表于 2013-3-18 11:10:17 |只看该作者
好的,明白了。代码需要仔细研究,请耐心等候回复……

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
10701
积分
170
帖子
44
主题
18
阅读权限
40
注册时间
2010-5-22
最后登录
2019-3-30
6#
发表于 2013-3-18 14:20:36 |只看该作者
ample 发表于 2013-3-18 11:10
好的,明白了。代码需要仔细研究,请耐心等候回复……

辛苦了

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
7#
发表于 2013-3-18 15:04:42 |只看该作者
1.将units输出,看一下值是多少?帐户资金是否足够开仓。
2.有无关联帐户并启动自动交易。
3.查看F7有无相关的提示。
4.调试一下,看看是否满足开仓的条件

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
10701
积分
170
帖子
44
主题
18
阅读权限
40
注册时间
2010-5-22
最后登录
2019-3-30
8#
发表于 2013-3-18 15:41:28 |只看该作者
小米 发表于 2013-3-18 15:04
1.将units输出,看一下值是多少?帐户资金是否足够开仓。
2.有无关联帐户并启动自动交易。
3.查看F7有无相 ...

很有可能是手数或资金的问题,等明天开盘再检查了,谢谢

使用道具 举报

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

bottom

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

GMT+8, 2024-5-1 22:54

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部