设为首页收藏本站

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

初学TB编写公式代码,想请教管理员一个简单代码 [复制链接]

Rank: 1

精华
0
UID
46214
积分
31
帖子
15
主题
2
阅读权限
10
注册时间
2011-6-10
最后登录
2013-3-31
跳转到指定楼层
1#
发表于 2011-7-4 15:13:13 |只看该作者 |倒序浏览
策略:卖出CU1201一手和买入RB1109一手。
过程:我在超级图表中插入两个商品CU1201和RB1109,插入如下交易指令,竟然出现了四个指令执行提示框:
      平仓买入CU1201一手,开仓买入CU1201一手,平卖出CU1201一手,开仓卖出CU1201一手。理论上应该只有开仓买入CU1201合约一手和开仓卖出RB1109合约一手,为什么会这样呢?
      还有,如果我把指令触发时间设置成0.092800,在09:28时以前启动自动交易程序却不能触发,如果在09:28时以后启动程序才能被触发,这是什么原因呢?

代码:
Params

        Numeric LotsData0(1);   //交易数量
        Numeric LotsData1(1);   //交易数量
        Numeric WinMoney(5000);  //获利点
        Numeric LossMoney(3000); //止损点

Vars

        Numeric preMP;
Begin
        preMP = MarketPosition;   
         // 收盘平仓
        If(preMP!=0 && CurrentTime > 0.145930 && CurrentTime < 0.150000 )
        {
                Sell;
                BuyToCover;
                return;
        }        


              //开盘建仓   
        If(CurrentTime>=0.092800 && CurrentTime<=0.150000)       
        {       
                Data0.SellShort(LotsData0,Data0.Close,true);       
                Data1.Buy(LotsData1,Data1.Close,true);               
        }

       
        //止损止盈
        If(preMP != 0)
        {
                SetProfitTarget(0,WinMoney,True);  //当获利达到WinMoney时执行所有位置的获利平仓       
                SetStopLoss(0,LossMoney,true);     //当亏损达到WinMoney时执行所有位置的止损平仓               
                return;       
        }
End

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20901
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
2#
发表于 2011-7-4 16:24:37 |只看该作者
回复 1# ppcoolpig


你的问题应该是信号消失的问题,将currenttime改用Time,currenttime和buy、sell使用会产生信号消失的问题。

使用道具 举报

Rank: 1

精华
0
UID
46214
积分
31
帖子
15
主题
2
阅读权限
10
注册时间
2011-6-10
最后登录
2013-3-31
3#
发表于 2011-7-4 22:59:09 |只看该作者
谢谢管理员,我还是弄不明白,一个简单的买或卖指令,在没有持仓的情况的下,为什么还会出现先平仓,然后才能开仓呢?这个多出的平仓指令是怎么回事,再次请教管理员

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20901
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
4#
发表于 2011-7-5 10:49:13 |只看该作者
回复 3# ppcoolpig


你这是信号消失的问题。
信号消失后,公式(使用buy、sell)不知道你当前是否持仓的。所以会出现信号消失。

使用道具 举报

Rank: 1

精华
0
UID
46214
积分
31
帖子
15
主题
2
阅读权限
10
注册时间
2011-6-10
最后登录
2013-3-31
5#
发表于 2011-7-5 15:09:29 |只看该作者
回复 4# lh948


为了测试是否是CurrentTime与BUY或SELLSHORT引起信号消失的问题,我又换到TBV4平台测试,可问题还是存在,这几天都被这问题困惑死了。
请管理员帮忙测试下,在超级图表中分别插入两个商品CU1201和RB1201,以及插入下面贴出的应用公式,出现信号后执行指令并依次提示:平仓卖出沪铜1201合约,开仓卖出沪铜1201合约,平仓卖出螺纹钢1201合约,开仓卖出螺纹钢1201合约。弄不懂为什么开仓下单会多了平仓的指令啊?请管理员指点下,十分感谢!

代码如下:
Params
    Numeric Para1(10);
    Numeric Para2(5);
Vars
        Bool Condition1;
        Bool Condition2;
Begin

        FileAppend("D:\\TB_V4测试日志.log","日期"+Text(Date)+"时间"+Text(CurrentTime)+"——日志:");
        //品种1
        if(Data0.Close>=Data0.Close[1])
        {
                Data0.Buy(1,Data0.Close);
                FileAppend("D:\\TB_V4测试日志.log","Data0.Buy(1,Close)");
        }else
        {
                Data0.SellShort(1,Data0.Close);
                FileAppend("D:\\TB_V4测试日志.log","Data0.SellShort(1,Close)");               
        }

        //品种2
        if(Data1.Close>=Data1.Close[1])
        {
                Data1.Buy(1,Data1.Close);
                FileAppend("D:\\TB_V4测试日志.log","Data1.Buy(1,Close)");               
        }else
        {
                Data1.SellShort(1,Data1.Close);
                FileAppend("D:\\TB_V4测试日志.log","Data1.SellShort(1,Close)");                       
        }

End

使用道具 举报

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

bottom

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

GMT+8, 2024-5-7 12:16

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部