查看: 1134|回复: 7

请教全局变量问题 [复制链接]

Rank: 1

精华
0
UID
268549
积分
12
帖子
9
主题
1
阅读权限
10
注册时间
2018-8-11
最后登录
2019-2-15
发表于 2019-1-10 02:42:07 |显示全部楼层
本帖最后由 i7755_1 于 2019-1-10 02:41 编辑

新手,刚刚接触TB,学着写策略,遇到如下问题。
见图片 微信截图_20190110022932.png (44.68 KB, 下载次数: 0)
开盘到收盘,一直不停地写。
请问出现这样的情况,怎样解决。

        //If(!CallAuctionFilter) Return;
        If( BarStatus ==0 )               
        {
                SetGlobalVar( 0, 1 );                //记录
                SetGlobalVar( 1, 1 );                //记录
                SetGlobalVar( 2, 0 );                //记录
                SetGlobalVar( 3, 0 );                //记录
                SetGlobalVar( 4, 0 );                //记录
                SetGlobalVar( 5, 0 );                //记录
                SetGlobalVar( 6, 0 );                //记录
                SetGlobalVar( 7, 0 );                //记录
        }
        MA = AverageFC( Close, M );               
        PlotNumeric( "均线", MA, 0, Yellow );
        PlotNumeric( "上线", MA + yuanli*MinMove*PriceScale , 0, Green );
        PlotNumeric( "下线", MA - zhisun*MinMove*PriceScale , 0, Red );
       
        If( BarStatus ==2 )               
        {
        If( CurrentTime < opentime/100 )
                {
                SetGlobalVar( 6, 0 );
                Return;
       
                }
        If( Q_BidPrice > MA and GetGlobalVar(0) ==1 )                               
                SetGlobalVar( 0, 0 );               
        If( ( A_BuyPosition >0 or A_BuyPosition ==0 and A_GetLastOpenOrderIndex( Enum_Buy, Enum_Entry ) == InvalidInteger ) and GetGlobalVar(1) ==1 )               
        {
                SetGlobalVar( 1, 0 );        //允许开仓
                FileAppend( "C:\\WeiJun_MA_A_" +SymbolName+ ".txt ", "时间 = " + Text( date + CurrentTime ) + "  GetGlobalVar(1)归零时 = " + Text( A_GetOpenOrderCount ));
        }
       
        If( ( A_BuyPosition ==0 OR A_BuyPosition >0 and A_GetLastOpenOrderIndex( Enum_Sell, Enum_Exit ) == InvalidInteger ) and GetGlobalVar(3) <>0 )       
        {
                SetGlobalVar( 3, 0 );        //允许止盈
                FileAppend( "C:\\WeiJun_MA_A_" +SymbolName+ ".txt ", "时间 = " + Text( date + CurrentTime ) + "  GetGlobalVar(3)归零时 = " + A_OpenOrderContractNo( A_GetLastOpenOrderIndex( Enum_Sell, Enum_Exit ) ) );
        }
        If( A_BuyPosition ==0 and GetGlobalVar(1) ==0 and GetGlobalVar(0) ==0 and Q_BidPrice < MA + yuanli*MinMove*PriceScale and CurrentTime <= lastopentime/100 )
        {
                A_SendOrder( Enum_Buy, Enum_Entry, lots, Q_BidPrice - N2*MinMove*PriceScale );
                SetGlobalVar( 2, Q_BidPrice );
                SetGlobalVar( 1, 1 );
                SetGlobalVar( 4, 0 );
                SetGlobalVar( 7, 0 );
                FileAppend( "C:\\WeiJun_MA_A_" +SymbolName+ ".txt ", "时间 = " + Text( date + CurrentTime ) + "  开仓 = " + Text( Q_BidPrice ));
        }
       
        If( GetGlobalVar(2) == InvalidNumeric OR GetGlobalVar(2) ==0 )                SetGlobalVar( 2, Q_BidPrice );
        If( A_BuyPosition ==0 and A_GetLastOpenOrderIndex( Enum_Buy, Enum_Entry ) <> InvalidInteger and Q_BidPrice >= GetGlobalVar(2) + N3*MinMove*PriceScale and GetGlobalVar(1) ==1)
        {
                A_DeleteOrder( A_OpenOrderContractNo( A_GetLastOpenOrderIndex( Enum_Buy, Enum_Entry ) ) );
                SetGlobalVar( 1, 0 );
                SetGlobalVar( 2, Q_BidPrice );
                FileAppend( "C:\\WeiJun_MA_A_" +SymbolName+ ".txt ", "时间 = " + Text( date + CurrentTime ) + "  撤开仓和尾仓 = " + A_OpenOrderContractNo( A_GetLastOpenOrderIndex( Enum_Buy, Enum_Entry ) ) );
        }
       
        If( A_BuyPosition >0 and GetGlobalVar(3) ==0 and GetGlobalVar(4) ==0 and CurrentTime < stoptime/100 )
        {
                A_SendOrder( Enum_Sell, Enum_Exit, lots, GetGlobalVar(2) + zhiying*MinMove*PriceScale );[/code]

Rank: 1

精华
0
UID
268549
积分
12
帖子
9
主题
1
阅读权限
10
注册时间
2018-8-11
最后登录
2019-2-15
发表于 2019-1-10 09:40:51 |显示全部楼层
请版主帮忙看看!!!

使用道具 举报

Rank: 1

精华
0
UID
268549
积分
12
帖子
9
主题
1
阅读权限
10
注册时间
2018-8-11
最后登录
2019-2-15
发表于 2019-1-10 15:32:47 |显示全部楼层
版主在吗?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
24411
帖子
10605
主题
37
阅读权限
200
注册时间
2007-7-20
最后登录
2019-3-22
发表于 2019-1-10 16:32:14 |显示全部楼层
日志都是在条件下的,如果一直写入,那一定是条件都有满足啊。
您的疑问是什么?

使用道具 举报

Rank: 1

精华
0
UID
268549
积分
12
帖子
9
主题
1
阅读权限
10
注册时间
2018-8-11
最后登录
2019-2-15
发表于 2019-1-10 17:06:18 |显示全部楼层
提示仓位不符

使用道具 举报

Rank: 1

精华
0
UID
268549
积分
12
帖子
9
主题
1
阅读权限
10
注册时间
2018-8-11
最后登录
2019-2-15
发表于 2019-1-10 17:08:19 |显示全部楼层
重复开仓,重复平仓

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
24411
帖子
10605
主题
37
阅读权限
200
注册时间
2007-7-20
最后登录
2019-3-22
发表于 2019-1-11 14:44:31 |显示全部楼层
i7755_1 发表于 2019-1-10 17:08
重复开仓,重复平仓

前面有提到,你的日志是不断在写入,那说明条件是不断被满足。
想要一一排查,则需要将每一个条件里所需的值都全部输出,再人工眼肉判断,是哪一步哪一个数据与你的需求不匹配?
代码逻辑挺混的,实在不明白你的3,4号全局变量本来就一直是0的情况下,你要判断3,4为0时平仓。那不就是开完就平吗?

PS: 建议在完全了解TB的机制以及熟练掌握TB的公式编写后再进程A函数的编写。

使用道具 举报

Rank: 1

精华
0
UID
268549
积分
12
帖子
9
主题
1
阅读权限
10
注册时间
2018-8-11
最后登录
2019-2-15
发表于 2019-1-12 03:54:32 |显示全部楼层

非常感谢版主回复和建议!

使用道具 举报

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

bottom

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

GMT+8, 2019-3-24 23:17

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部