设为首页收藏本站

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

实盘开平仓价格问题! [复制链接]

Rank: 1

精华
0
UID
175564
积分
20
帖子
11
主题
3
阅读权限
10
注册时间
2013-11-12
最后登录
2021-2-25
跳转到指定楼层
1#
发表于 2014-2-17 12:11:20 |只看该作者 |倒序浏览
                HH = Highest(H,N);
                LL = Lowest(L,N);

        If(duo) { Buy(1,HH[1]);BuyToCover(1,HH[1]+1);}
        If(kong) { SellShort(1,LL[1]);Sell(1,LL[1]-1);}



为什么在图表上 开仓价格和平仓价格是一样的
但是在代码中,平仓价应该比开仓价相差1   
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
2#
发表于 2014-2-17 13:13:11 |只看该作者
将开与平的顺序调换一下,先写平的,再写开的。

使用道具 举报

Rank: 1

精华
0
UID
175564
积分
20
帖子
11
主题
3
阅读权限
10
注册时间
2013-11-12
最后登录
2021-2-25
3#
发表于 2014-2-17 13:53:16 |只看该作者
本帖最后由 gtja16300905 于 2014-2-17 13:54 编辑
小米 发表于 2014-2-17 13:13
将开与平的顺序调换一下,先写平的,再写开的。


好的 谢谢小米!
还有个问题咨询一下

请问下在每次开仓下单之前先进行一次撤销所有未成交单要怎么写,这个撤单动作,在这个条件达到时,只执行一次,先进行撤单操作,再进行开平仓发单操作。

比如   If(duo) 先进行一次撤销所有未成交单操作,再发单 { Buy(1,HH[1]);BuyToCover(1,HH[1]+1);}

谢谢了!

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
4#
发表于 2014-2-17 14:20:05 |只看该作者
gtja16300905 发表于 2014-2-17 13:53
好的 谢谢小米!
还有个问题咨询一下


撤单要使用了a_deleteorder,不建议与buy,sell等混合使用。
可以直接使用交易助手来实现撤单再重发的操作。
如果一定要用a_deleteorder来完成,建议还是先从基础开始学习TB ,一定要了解其基础原理后再来运用与控制

使用道具 举报

Rank: 1

精华
0
UID
175564
积分
20
帖子
11
主题
3
阅读权限
10
注册时间
2013-11-12
最后登录
2021-2-25
5#
发表于 2014-2-18 00:02:44 |只看该作者
小米 发表于 2014-2-17 14:20
撤单要使用了a_deleteorder,不建议与buy,sell等混合使用。
可以直接使用交易助手来实现撤单再重发的操作 ...

小米 请问下  
我使用TB公式开发指南中的平仓延迟反手的代码
为什么还会出现开仓资金不足的问题

但是我的模型有一个问题就是我的开平仓单是不一定能够马上成交的,可能要过1-2分钟
但是我看到平仓延迟反手中有段代码
If(TickCounter == 0 && A_GetOpenOrderCount()==0)
                {
                                TickCounter = 1;

有  A_GetOpenOrderCount()==0 这个字段  
那应该就算我的单子没有成交  TICK计数器应该是不会计数的啊  
有什么办法可以避免这个情况吗?  
谢谢小米了!

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
6#
发表于 2014-2-18 09:07:51 |只看该作者
gtja16300905 发表于 2014-2-18 00:02
小米 请问下  
我使用TB公式开发指南中的平仓延迟反手的代码
为什么还会出现开仓资金不足的问题

指南中的平仓延迟反手是延迟了5个tick才反手开仓的,相当于平与开之间间隔了2.5秒左右 。
如果平仓能及时成交,这2.5秒足够了。但若如你所说的要1--2分钟才能成交平仓的,那肯定不行了。
要么你就增加延迟的tick数,要么你就使用合理的价格,尽可能保证平仓的快速成交。

使用道具 举报

Rank: 1

精华
0
UID
175564
积分
20
帖子
11
主题
3
阅读权限
10
注册时间
2013-11-12
最后登录
2021-2-25
7#
发表于 2014-2-18 12:07:54 |只看该作者
小米 发表于 2014-2-18 09:07
指南中的平仓延迟反手是延迟了5个tick才反手开仓的,相当于平与开之间间隔了2.5秒左右 。
如果平仓能及时 ...

哦  但是我发现延迟反手中不是有A_GetOpenOrderCount()==0  
当未成交单等于0,TICK计数器才会开始计数吗?那按这样说不是就算我的单子不能马上成交,应该也不会有影响吗?   麻烦小米了!

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
8#
发表于 2014-2-18 12:36:51 |只看该作者
本帖最后由 小米 于 2014-2-18 12:38 编辑
gtja16300905 发表于 2014-2-18 12:07
哦  但是我发现延迟反手中不是有A_GetOpenOrderCount()==0  
当未成交单等于0,TICK计数器才会开始计数 ...


你所说的tick计数器是指公式指南里的平仓延迟反手那个模板吗?
那个模板里是根本没有判断 a_getopenordercount的呀
所以这个计数器只是从平仓单发出时开始时计数,与其它的无关。
如果平仓单 不能在5个tick内成交,在5个tick后就会下反手单 。这样,仍会提示资金不足。
所以,保证平仓单 能及时地成交是使用这个模板控制的一个重要因素 。

使用道具 举报

Rank: 1

精华
0
UID
175564
积分
20
帖子
11
主题
3
阅读权限
10
注册时间
2013-11-12
最后登录
2021-2-25
9#
发表于 2014-2-18 13:45:48 |只看该作者
小米 发表于 2014-2-18 12:36
你所说的tick计数器是指公式指南里的平仓延迟反手那个模板吗?
那个模板里是根本没有判断 a_getopenorder ...

Params
Numeric FastLength(5);
Numeric SlowLength(20);
Numeric DelayTicks(5);
Vars
NumericSeries AvgValue1;
NumericSeries AvgValue2;
Numeric LastBarTime;
Numeric TickCounter;
Begin
AvgValue1 = AverageFC(Close,FastLength);
AvgValue2 = AverageFC(Close,SlowLength);
LastBarTime = GetGlobalVar(0);
TickCounter = GetGlobalVar(1);
If(BarStatus == 2 && LastBarTime != Time) // 最新Bar第一次生成时,Tick重新开始计数
{
LastBarTime = Time;
TickCounter = 0;
If(MarketPosition <> 1 && AvgValue1[1] > AvgValue2[1])
{
If(MarketPosition == 0 || BarStatus != 2)
// 无持仓,直接买多仓
// 持空仓且Bar不是实时行情,平空仓,买多仓
{
Buy(1,Open);
}Else  // 持空仓,Bar实时行情,平空仓,通过TickCounter计数,延迟反手
{
BuyToCover(1,Open);
If(TickCounter == 0 && A_GetOpenOrderCount()==0)
{
TickCounter = 1;
}Else If(TickCounter < DelayTicks)
{
TickCounter = TickCounter + 1;
}Else
{
Buy(1,Open);
}
}
}
If(MarketPosition <> -1 && AvgValue1[1] < AvgValue2[1])
{
If(MarketPosition == 0 || BarStatus != 2)
{
SellShort(1,Open);
}Else  // 持多仓且Bar为实时行情,平多,延迟反手
{
Sell(1,Open);
If(TickCounter == 0 && A_GetOpenOrderCount()==0)      
TickCounter = 1;
}Else If(TickCounter < DelayTicks)
{
TickCounter = TickCounter + 1;
}Else
{
SellShort(1,Open);
}
}
}
SetGlobalVar(0,LastBarTime);
SetGlobalVar(1,TickCounter);
End



原来是这样的 ,但是我在标红的地方加入了一个这样的条件,但是好像这个条件完全不起作用啊,没等我未成交单为0,TICK计数器就开始计数了!
麻烦小米了!

使用道具 举报

Rank: 1

精华
0
UID
127257
积分
11
帖子
9
主题
0
阅读权限
10
注册时间
2011-1-1
最后登录
2021-10-13
10#
发表于 2014-2-18 14:23:41 |只看该作者
gtja16300905 发表于 2014-2-18 13:45
Params
Numeric FastLength(5);
Numeric SlowLength(20);


平仓延迟反手的模板是根本不需要判断已报单 。你在这模板加的这一句到底起什么作用或者说意义在哪呢?
我没有去考虑,建议你自己自己再琢磨一下吧。

使用道具 举报

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

bottom

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

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

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部