设为首页收藏本站

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

紧急求助!!! [复制链接]

Rank: 1

精华
0
UID
259445
积分
18
帖子
12
主题
6
阅读权限
10
注册时间
2017-11-21
最后登录
2020-3-16
跳转到指定楼层
1#
发表于 2019-11-9 02:28:32 |只看该作者 |倒序浏览
本帖最后由 xhqh96801317 于 2019-11-9 13:53 编辑

代码如下:
//------------------------------------------------------------------------
// 简称: bull_trade
// 名称:
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------
//开多仓
Params
        Numeric number(2); //买卖手数
        Numeric sell_price(0.2); //买卖价格---滑点?
        Numeric A(100.12); //当前收盘价下跌x%
        Numeric M30_20(20); //20根(半小时K线周期)
        Numeric loss(100.20); //止损
        Numeric BandRange(20);
       
Vars
        Numeric bull_mid; //布林线中轨
        Numeric bull_down; //布林线下轨
        Numeric bull_up; // 布林线上轨
        Numeric entry; //标记进入策略
        Numeric B; //平均进入价格
        NumericSeries myflag(0);

Begin
        If(BarStatus == 0)
        {
                myflag = 0;
        }Else
        {
                bull_mid = Average(Close, M30_20); //20根均线--中轨
                PlotNumeric("bull_mid", bull_mid);
                bull_down = Average(Close, M30_20)-2*StandardDev(Close, M30_20);
                PlotNumeric("bull_down", bull_down);
                bull_up = Average(Close, M30_20)+2*StandardDev(Close, M30_20);
                PlotNumeric("bull_up", bull_up);
                //---------集合竞价和小节休息过滤-------/////
                If(IsCallAuctionTime()) return;//集合竞价
                If ((Close==Q_LowerLimit || Close==Q_UpperLimit) AND BarStatus == 2) Return;
               
                If (MarketPosition == 0 && time!=0.1459 && myflag==0)
                {
                        If(bull_up-bull_mid>BandRange)
                        {
                                If (High > bull_up*A/100)
                                {
                                        myflag=1; //进场信号发出,下根K线开盘进场
                                }
                               
                        }
                }
                Else If(MarketPosition == 0 && time!=0.1459 && myflag==1 && Close<bull_up)
                {
                        SellShort(number, Open+sell_price);
                        myflag=2; //持仓
                } Else If(MarketPosition<0 and BarsSinceEntry >0)
                {
                        B=AvgEntryPrice;
                        If(Close>=B*loss/100 and (Close>bull_up || Open>bull_up) ) //止损
                        {
                                BuyToCover(0, Close+sell_price);
                                myflag=0;
                        }
                        If(Close <= bull_mid and myflag == 2)
                        {
                             BuyToCover(0, Close+sell_price);
                                myflag=0;
                        }
                }Else
                {
                        myflag=0;
                }
        }

       
End

//------------------------------------------------------------------------
// 编译版本        GS2015.12.25
// 用户版本        2019/11/01 10:33:21
// 版权所有        cying01
// 更改声明        TradeBlazer Software保留对TradeBlazer平台
//                        每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------


问题就是在实盘中 当我持仓 1手空单时,BuyToCover(0, Close+sell_price);  并不是平仓1手,而是开了2手多单,空单的持仓依然存在,还有就是此公式运用在30分钟K线,但是BuyToCover(0, Close+sell_price)的交易发生的时间却是在23分,而不是K线走完时的价格,跪求解决

另:开空仓时间为早上10点,平仓时间为当天下午1点23分

Rank: 1

精华
0
UID
259445
积分
18
帖子
12
主题
6
阅读权限
10
注册时间
2017-11-21
最后登录
2020-3-16
2#
发表于 2019-11-11 01:15:44 |只看该作者
没人知道原因吗?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
3#
发表于 2019-11-11 11:42:33 |只看该作者
1,bull_mid,bull_up,bull_down这三个变量都是使用close来计算的,这个数据在盘中是会实时变化的,不稳定的。且开平仓条件中使用到这些变量,是会导致信号闪烁或消失的可能 。
2,30分钟周期上,是永远不可能满足time==0.1459的。所以在公式中使用的2019年11月11日 11:26:05!=0.1459的判断是永远成立的,这样能达到你的限制要求吗?
3,myflag=1的赋值及条件并不能控制进场信号在下个K线的开盘。所以,当K线盘任意时间,只要条件满足,就能发出信号指令以及委托,所以在1:23发出委托是符合公式代码逻辑的。
4,如果上述的交易结果并不是你想要的,那么你就要重新去思考并修改公式逻辑了。

使用道具 举报

Rank: 1

精华
0
UID
285657
积分
1
帖子
1
主题
0
阅读权限
10
注册时间
2019-11-11
最后登录
1970-1-1
4#
发表于 2019-11-11 16:34:45 |只看该作者
小米 发表于 2019-11-11 11:42
1,bull_mid,bull_up,bull_down这三个变量都是使用close来计算的,这个数据在盘中是会实时变化的,不稳定的 ...

BuyToCover(0, Close+sell_price)为什么不是平掉所有的空仓,而且直接开了2个多仓,空仓依然存在

使用道具 举报

Rank: 1

精华
0
UID
259445
积分
18
帖子
12
主题
6
阅读权限
10
注册时间
2017-11-21
最后登录
2020-3-16
5#
发表于 2019-11-11 23:07:01 |只看该作者
小米 发表于 2019-11-11 11:42
1,bull_mid,bull_up,bull_down这三个变量都是使用close来计算的,这个数据在盘中是会实时变化的,不稳定的 ...

BuyToCover(0, Close+sell_price)为什么不是平掉所有的空仓,而且直接开了2个多仓,空仓依然存在,这样会影响接下来指令的运行

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
6#
发表于 2019-11-12 09:01:35 |只看该作者
dxting 发表于 2019-11-11 16:34
BuyToCover(0, Close+sell_price)为什么不是平掉所有的空仓,而且直接开了2个多仓,空仓依然存在 ...

首先,信号是平空没错吧?
委托单如果是开多的话,你要看看系统设置---风控,是否勾选了日内开平转换?

使用道具 举报

Rank: 1

精华
0
UID
259445
积分
18
帖子
12
主题
6
阅读权限
10
注册时间
2017-11-21
最后登录
2020-3-16
7#
发表于 2019-11-12 11:12:51 |只看该作者
本帖最后由 xhqh96801317 于 2019-11-12 11:19 编辑
小米 发表于 2019-11-12 09:01
首先,信号是平空没错吧?
委托单如果是开多的话,你要看看系统设置---风控,是否勾选了日内开平转换? ...


信号确实是平空,勾了日内开平转换,是不是要取消了就不会出现这种情况

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
3
UID
5
积分
26584
帖子
12686
主题
49
阅读权限
200
注册时间
2007-7-20
最后登录
2021-11-3
8#
发表于 2019-11-12 11:36:12 |只看该作者

xhqh96801317 发表于 2019-11-12 11:12
信号确实是平空,勾了日内开平转换,是不是要取消了就不会出现这种情况 ...


是的。
如果这个交易效果不是你想要的,就去掉勾选。

使用道具 举报

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

bottom

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

GMT+8, 2024-4-26 18:06

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部