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

标题: TB实盘开贴 [打印本页]

作者: beijib    时间: 2016-11-6 17:41:38     标题: TB实盘开贴

大道至简
品种:RB
周期:15分钟
模型:均线系统,捕捉趋势,海龟头寸管理,单手实盘半年
起始资金:4.8万
试运行阶段(2016.11月-12月)
正式启动:2017年1月
[attach]34710[/attach]
[attach]34711[/attach]

作者: beijib    时间: 2016-11-15 10:45:42

关于后台避免重复发单的问题,在网上搜索了一些思路,写了几行代码,准备实盘测试一下

                if(barstatus==0)
                {
                        Setglobalvar(0,0);
                }

                if (A_BuyPosition()-A_SellPosition()==0 && con3==True){ //没有仓位的情况,符合过滤条件
                        if(con1==True && GetGlobalVar(0)==0){
                                A_SendOrder(Enum_Buy,Enum_Entry,TurtleUnits,Q_AskPrice()+2*MinPoint); //开多
                                SetGlobalVar(0,1);
                        }                                       
                        if(con2==True && GetGlobalVar(0)==0){
                                A_SendOrder(Enum_Sell,Enum_Entry,TurtleUnits,Q_BidPrice()-2*MinPoint); //开空
                                SetGlobalVar(0,1);
                        }
                }
               
                if (A_BuyPosition()-A_SellPosition()>0){ //做多情况下
                        if(con2==True && GetGlobalVar(0)==0){
                                A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice()-2*MinPoint); //平多
                                SetGlobalVar(0,1);
                        }
                }
                if (A_BuyPosition()-A_SellPosition()<0){ //做空情况下
                        if(con1==True && GetGlobalVar(0)==0){
                                A_SendOrder(Enum_Buy,Enum_Exit,A_SellPosition,Q_AskPrice()+2*MinPoint); //平空
                                SetGlobalVar(0,1);
                        }
                }               
                if (GetGlobalVar(0)>=1){                                 //延时5个tick后,状态重置
                        SetGlobalVar(0,GetGlobalVar(0)+1);
                        if (GetGlobalVar(0)>=5){
                                SetGlobalVar(0,0);  
                        }
                }
作者: beijib    时间: 2016-11-16 10:38:03

本帖最后由 beijib 于 2016-11-16 11:04 编辑

主机的选用:很多人用的是阿里云,有点小贵。我是选的淘宝上的VPS,商家名称是亿网正通,选VPS套餐4,每个月35元,win2003系统跑旗舰版够用,极速版不支持win2003,ping值15ms。已经实盘了半年,VPS很稳定,不需自动登录脚本和软件。旗舰版一直开着,交易时间自动登录,偶尔行情出现问题时需要手工切换一下tb的行情服务器。
[attach]34763[/attach]
作者: superwin    时间: 2016-11-16 14:01:29

beijib 发表于 2016-11-16 10:38
主机的选用:很多人用的是阿里云,有点小贵。我是选的淘宝上的VPS,商家名称是亿网正通,选VPS套餐4,每个 ...

给你看下阿里云上的网络延迟,你就知道阿里云物有所值了,而且VPS大部分都是超卖状态,如果真是实盘,还是谨慎点好,毕竟是白花花的银子。

[attach]34764[/attach]
作者: beijib    时间: 2016-11-16 14:40:05

superwin 发表于 2016-11-16 14:01
给你看下阿里云上的网络延迟,你就知道阿里云物有所值了,而且VPS大部分都是超卖状态,如果真是实盘,还 ...

确实不错
作者: yimatouzi    时间: 2016-11-16 16:04:19

beijib 发表于 2016-11-15 10:45
关于后台避免重复发单的问题,在网上搜索了一些思路,写了几行代码,准备实盘测试一下

                if(barstatus==0) ...

COOL。。。
作者: wert2003    时间: 2016-11-17 10:18:42

这个贴子是干什么的?
作者: beijib    时间: 2016-11-18 09:36:18

海龟头寸实盘代码,后台发单
        AvgTR = XAverage(TrueRange,ATRLength);
        N = AvgTR[1];       
        TotalEquity = A_CurrentEquity; //登录账户且开启自动交易后才有效
        TurtleUnits = (TotalEquity*RiskRatio/100) /(N * ContractUnit()*BigPointValue());
                Commentary("TurtleUnits0="+Text(TurtleUnits));
                TurtleUnits = IntPart(TurtleUnits); // 对小数取整
                lots_Max = TotalEquity / (High * 1.6); //保证金16%计算开仓最大值
                Commentary("lots_Max()="+Text(lots_Max));
                if(TurtleUnits>lots_Max){
                        TurtleUnits= IntPart(lots_Max);
                }
                if (TurtleUnits<1){
                        TurtleUnits=1;
                }       
                Commentary("TurtleUnits="+Text(TurtleUnits));
作者: beijib    时间: 2016-12-11 16:54:05

Tb极速版平今处理
Tb极速版不能判断是否今天仓位,用Enum_Exit平今天仓位出错,需要使用Enum_ExitToday。
if (A_BuyPosition()-A_SellPosition()>0 &&A_GetOpenOrderCount==0){ //做多情况下
if(con2==True && GetGlobalVar(0)==0){
IF( A_TodayBuyPosition==0){
A_SendOrder(Enum_Sell,Enum_Exit,A_BuyPosition,Q_BidPrice());//平多
}else{
A_SendOrder(Enum_Sell,Enum_ExitToday,A_BuyPosition,Q_BidPrice());//平多
}
SetGlobalVar(0,1);
}
}
作者: tsinglai    时间: 2016-12-11 18:36:38

beijib 发表于 2016-11-15 10:45
关于后台避免重复发单的问题,在网上搜索了一些思路,写了几行代码,准备实盘测试一下

                if(barstatus==0) ...

这个思路不错
作者: tsinglai    时间: 2016-12-11 19:30:17

beijib 发表于 2016-11-15 10:45
关于后台避免重复发单的问题,在网上搜索了一些思路,写了几行代码,准备实盘测试一下

                if(barstatus==0) ...

我也交流一个平仓的,平仓等待指令完成,等待最长waitime
Begin
//---------------
while(A_SendOrder(Enum_sell,Enum_exit, lots, price))
{//确保发出了指令,下面等待结果
        tmp=CurrentTime;
        while(timediff(tmp,CurrentTime)<=waittime)
        {
                if(A_BuyPosition==0)
                {
                //
                return true;                //全部成交
                }
        }
        while(A_DeleteOrder(""))
        return False;                //表示撤单指令成功发出
        return False;                //表示撤单指令没有成功
}
Return False;//平仓指令发出错误
End
作者: beijib    时间: 2016-12-11 19:54:17

tsinglai 发表于 2016-12-11 19:30
我也交流一个平仓的,平仓等待指令完成,等待最长waitime
Begin
//---------------


作者: mey16601600    时间: 2016-12-15 15:12:53

看起来挺靠谱
作者: mey16601600    时间: 2016-12-15 15:13:54

用A函数呀,你都15分钟线了,为什么不用buy sell。能赚钱真心没啥差别
作者: beijib    时间: 2016-12-15 19:52:04

mey16601600 发表于 2016-12-15 15:13
用A函数呀,你都15分钟线了,为什么不用buy sell。能赚钱真心没啥差别

buy sell还得弄个头寸监控,A函数不用。
作者: owen1949    时间: 2016-12-16 10:13:20

楼主,请教个问题,看你的测试报告里回测周期有2497天,这个是怎么设置的?我用一小时周期,报告里只能回测60天左右
作者: beijib    时间: 2016-12-16 18:55:10

本帖最后由 beijib 于 2016-12-16 18:56 编辑
owen1949 发表于 2016-12-16 10:13
楼主,请教个问题,看你的测试报告里回测周期有2497天,这个是怎么设置的?我用一小时周期,报告里只能回测 ...


商品-设置-属性-起始日期从2009年开始,不懂的到qq群问:243836862


[attach]34906[/attach]
作者: beijib    时间: 2016-12-21 10:34:51

搞了一个备份云服务器,如果主云服务器TB出现问题,备份服务器可以继续执行策略,目前主服务器用的是腾讯云服务器极速版TB,备份服务器用旗舰版。代码如下:
                if(barstatus==0)
                {
                        Setglobalvar(0,0);    //备份服务器TB同步头寸计数器
                        Setglobalvar(1,0);    //防止重复发单计数器
                }

                if (A_BuyPosition-A_SellPosition==0 && A_GetOpenOrderCount==0){ //没有仓位的情况,没有未成交单
                        if(con1==True && con3==True && GetGlobalVar(1)==0){                        //判断是否可以发单
                                SetGlobalVar(0,GetGlobalVar(0)+1);  //满足开仓条件先数10个ticks,如果主服务器TB没有发单则备份服务器TB执行发单
                                if (GetGlobalVar(0)>=10){
                                        A_SendOrder(Enum_Buy,Enum_Entry,TurtleUnits,Q_AskPrice); //开多
                                        SetGlobalVar(1,1);                                //发单计数器设置为已发单
                                }
                        }       

......

                if (GetGlobalVar(1)>=1){
                        SetGlobalVar(1,GetGlobalVar(1)+1);   //防止重复发单,发单后数3个ticks后,重置计数器
                        if (GetGlobalVar(1)>=3){
                                SetGlobalVar(0,0);  
                                SetGlobalVar(1,0);  
                        }
                }
作者: beijib    时间: 2017-1-1 14:14:19

编写了一个极速版autoit3的自动登录脚本。

#Include <date.au3>
Dim $result,$tmp1,$path
$path="C:\Program Files\TradeBlazer\TBPlus\"      ;TB默认安装路径,如非默认安装,这里需要更改为你TB安装路径
;循环开始
While 1
If ProcessExists("TBPlus.exe") And WinExists("TB旗舰版:极速平台") = 0 Then
        ProcessClose("TBPlus.exe")
    Sleep(3000)
EndIf
If WinExists("TB旗舰版:极速平台") = 0 And ((@HOUR=08 And @MIN>=35 And @MIN<=39) Or (@HOUR=20 And @MIN>=35 And @MIN<=39)) Then
    $result=0
    Run($path&"TBPlus.exe",$path)
    WinWaitActive("TB旗舰版:极速平台8.0---用户登录","",20)
    WinActivate("TB旗舰版:极速平台8.0---用户登录")
    Sleep(2000)
        ;Send("{ENTER}")
        ControlClick("TB旗舰版:极速平台8.0---用户登录", "", "WindowsForms10.BUTTON.app.0.afceb_r11_ad13")
        Sleep(2000)
EndIf
If WinExists("TB旗舰版:极速平台") And ((@HOUR=15 And @MIN>=35 And @MIN<=40) Or (@HOUR=2 And @MIN>=35 And @MIN<=40)) Then ;非交易时间关闭TB
        ProcessClose("TBPlus.exe")
EndIf
Sleep(1000)
WEnd
;循环结束
作者: halfine    时间: 2017-1-3 11:43:08

beijib 发表于 2017-1-1 14:14
编写了一个极速版autoit3的自动登录脚本。

#Include

论坛挖到了金子,真心有用,感谢版主无私分享
作者: beijib    时间: 2017-1-4 10:00:59

本帖最后由 beijib 于 2017-1-4 10:04 编辑
halfine 发表于 2017-1-3 11:43
论坛挖到了金子,真心有用,感谢版主无私分享


不能开启自动交易,还算不上全自动啊

极速版的菜单不是标准的,shift组合快捷键也不好用,所以调不出来开启自动交易
作者: superwin    时间: 2017-1-4 14:12:35

beijib 发表于 2017-1-4 10:00
不能开启自动交易,还算不上全自动啊

极速版的菜单不是标准的,shift组合快捷键也不好用,所以调不出来 ...

[attach]34971[/attach]

论坛的这位大神说他能做到,你可以请教下他。
作者: beijib    时间: 2017-1-5 17:32:05

superwin 发表于 2017-1-4 14:12
论坛的这位大神说他能做到,你可以请教下他。

TBplus非交易时段内存不断增加,所以才需要重启
除了这个我觉得其他方面还是不错的,等TBplus自己开发个登陆小助手吧,不再研究了
作者: beijib    时间: 2017-1-10 10:33:45

本帖最后由 beijib 于 2017-1-10 10:55 编辑

终于搞定了autoit3完全自动化Tbplus8.1.2.8,以下代码是在windows 2012 R2下的代码,如果不同的话,控件信息要用au3info自己取值修改一下即可。

#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_UseX64=n
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#Include <date.au3>
Dim $path
$path="C:\Program Files\TradeBlazer\TBPlus\"      ;TB默认安装路径,如非默认安装,这里需要更改为你TB安装路径
;循环开始
While 1
If ProcessExists("TBPlus.exe") And WinExists("TBPlus 8.0") = 0 Then
        ProcessClose("TBPlus.exe")
    Sleep(3000)
EndIf
If WinExists("TBPlus 8.0") = 0 And ((@HOUR=08 And @MIN>=35 And @MIN<=39) Or (@HOUR=20 And @MIN>=35 And @MIN<=39)) Then

    Run($path&"TBPlus.exe",$path)
    WinWaitActive("TBPlus 8.0---用户登录","",20)
    WinActivate("TBPlus 8.0---用户登录")
    Sleep(2000)
        ControlClick("TBPlus 8.0---用户登录", "", "WindowsForms10.BUTTON.app.0.e4c6c4_r9_ad13") ;模拟鼠标点击登录按钮
        Sleep(2000)
        WinWaitActive("TBPlus 8.0","",20)
    WinActivate("TBPlus 8.0")
    Sleep(5000)
        ControlClick("TBPlus 8.0","","WindowsForms10.Window.8.app.0.e4c6c4_r9_ad111","left",1, 215, 12) ;模拟鼠标点击自动交易按钮
    Sleep(5000)
EndIf
If WinExists("TBPlus 8.0") And ((@HOUR=15 And @MIN>=35 And @MIN<=40) Or (@HOUR=2 And @MIN>=35 And @MIN<=40)) Then ;非交易时间关闭TB
        ProcessClose("TBPlus.exe")
EndIf
Sleep(1000)
WEnd
;循环结束
作者: beijib    时间: 2017-1-10 15:24:24

有些人需要学习autoit3的,查看论坛的老贴,里面有详细介绍,这里不再重复。

用AUTOIT和TB打造国内期货无人值守全自动交易系统
http://bbs.tb18.net/thread-5465-1-1.html
作者: halfine    时间: 2017-1-17 15:36:36

再次感谢楼主无私分享,太有用了
作者: msqhgp007    时间: 2017-1-18 15:56:30

不知楼主实盘运行效果如何,这段时间螺纹钢行情这麽好!
作者: beijib    时间: 2017-1-19 09:16:12

msqhgp007 发表于 2017-1-18 15:56
不知楼主实盘运行效果如何,这段时间螺纹钢行情这麽好!

12月收益还不错,1月份行情震荡没什么收益
作者: hxzdd0001    时间: 2017-1-23 15:51:39

高手
作者: aacky111    时间: 2017-3-25 16:15:30

楼主的系统回测居然和我差不多,不知楼有没有加仓的,我是一直一手开的!
[attach]35342[/attach][attach]35343[/attach]




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