设为首页收藏本站

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

为什么用SetTBProfileString2File无法有效阻止断线后重复发单 [复制链接]

Rank: 5Rank: 5

精华
1
UID
42516
积分
1239
帖子
264
主题
31
阅读权限
60
注册时间
2011-5-25
最后登录
2014-9-23
跳转到指定楼层
1#
发表于 2012-3-2 17:20:45 |只看该作者 |倒序浏览
If(开仓条件&&Value(GetTBProfileString2File("C:\TB.log",Symbol,"MyPosition"))!=1)
        {
                Buy(Lots,Open);
                SetTBProfileString2File("C:\TB.log",Symbol,"MyPosition",Text(MarketPosition));
        }

试想运行机制:

当前满足开多仓条件,则开多仓,然后将MarketPosition置入 "MyPosition"  此时为1

而这时断线重连,因为MyPosition取值为1  则不触发开仓   


实际运行情况是,断线之后会重复开仓,请问问题出在什么地方?  谢谢

Rank: 10Rank: 10Rank: 10

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


MarketPosition的值会有变化的。

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
42516
积分
1239
帖子
264
主题
31
阅读权限
60
注册时间
2011-5-25
最后登录
2014-9-23
3#
发表于 2012-3-2 17:30:12 |只看该作者
运行机制方面的问题么?     MarketPosition值会变化是指什么问题能不能详细说一下。

当开仓完之后,我检查过C:\TB.Log   发现  MyPosition  值为1   这个没有问题  

这时断线并不影响MyPosition的值,为什么重连之后还会重复发单?


如果我用SetTBProfileString2File("C:\TB.log",Symbol,"MyPosition","1");

这样是否会解决重复发单问题?
SetTBProfileString将数据内容写到用户公式目录tblprofile.ini文件下

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
87862
积分
226
帖子
49
主题
10
阅读权限
40
注册时间
2011-12-20
最后登录
2013-10-11
4#
发表于 2012-3-3 19:16:35 |只看该作者
建议试试
If(Value(GetTBProfileString2File("C:\TB.log",Symbol,"MyPosition"))!=1 && 开仓条件)
        {
                Buy(Lots,Open);
                SetTBProfileString2File("C:\TB.log",Symbol,"MyPosition",Text(MarketPosition));
        }

if 括号里的条件顺序对结果似乎会有影响
哈哈哈

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
42516
积分
1239
帖子
264
主题
31
阅读权限
60
注册时间
2011-5-25
最后登录
2014-9-23
5#
发表于 2012-3-3 23:50:53 |只看该作者
谢楼上,不过我想IF()内的顺序应该影响不大

管理员能出来说说,为什么这种情况无法避免重复发单么?
SetTBProfileString将数据内容写到用户公式目录tblprofile.ini文件下

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
42516
积分
1239
帖子
264
主题
31
阅读权限
60
注册时间
2011-5-25
最后登录
2014-9-23
6#
发表于 2012-3-4 00:30:00 |只看该作者
我是实盘客户,能不能版主认真回复一下呢?   实盘快一年了,一直解决不了这个问题
SetTBProfileString将数据内容写到用户公式目录tblprofile.ini文件下

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
87862
积分
226
帖子
49
主题
10
阅读权限
40
注册时间
2011-12-20
最后登录
2013-10-11
7#
发表于 2012-3-4 17:46:51 |只看该作者
TB 里if ()括号里要是包含了用户自定义的函数,其Bool值可能会出现无法预料的情况,我在多次测试中都发现这个问题,解决方法是在外部将函数结果赋给变量,在if()中传入变量,你可以看看是否有这个情况
哈哈哈

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
42516
积分
1239
帖子
264
主题
31
阅读权限
60
注册时间
2011-5-25
最后登录
2014-9-23
8#
发表于 2012-3-5 14:32:26 |只看该作者
TB 里if ()括号里要是包含了用户自定义的函数,其Bool值可能会出现无法预料的情况,我在多次测试中都发现 ...
neo_wing 发表于 2012-3-4 17:46


楼上的朋友是说 这样么?

Vars
Numeric MyPosition;
Begin
MyPosition = Value(GetTBProfileString2File("C:\TB.log",Symbol,"MyPosition");
If(MyPosition)!=1 && 开仓条件)
        {
                Buy(Lots,Open);
                SetTBProfileString2File("C:\TB.log",Symbol,"MyPosition",Text(MarketPosition));
        }

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
2
UID
4130
积分
20901
帖子
6519
主题
17
阅读权限
200
注册时间
2009-4-15
最后登录
2019-4-12
9#
发表于 2012-3-5 14:58:54 |只看该作者
回复 1# rookies


用自定义的变量来记录标志位,可能更好的独立开。

使用道具 举报

Rank: 5Rank: 5

精华
1
UID
42516
积分
1239
帖子
264
主题
31
阅读权限
60
注册时间
2011-5-25
最后登录
2014-9-23
10#
发表于 2012-3-8 12:43:44 |只看该作者
回复  rookies


用自定义的变量来记录标志位,可能更好的独立开。
lh948 发表于 2012-3-5 14:58



测试以上代码     TB会出提示——"因为某些原因导致当前BAR不显示信号"  

但同时帐户会在没有信号的情况下完成建仓动作  , 也就是说 条件MyPosition!=1   被TB视为异常情况


TB的容错机制是怎么运行的啊?
SetTBProfileString将数据内容写到用户公式目录tblprofile.ini文件下

使用道具 举报

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

bottom

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

GMT+8, 2024-5-3 23:07

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部