设为首页收藏本站

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

关于日内的收市前平仓,A_XXX的函数是这样用吗? [复制链接]

Rank: 5Rank: 5

精华
0
UID
594
积分
1315
帖子
77
主题
25
阅读权限
60
注册时间
2007-10-23
最后登录
2019-4-27
跳转到指定楼层
1#
发表于 2007-12-25 10:59:09 |只看该作者 |倒序浏览
if(Hour==14 && Minute>58 )
       
        {
                If(Barstatus == 2)
                {
               
                if (A_BuyPosition>0)
                {Sell(A_BuyPosition,close);}
                if (A_SellPosition>0)
                {BuyToCover(A_SellPosition,close);}

                }
                       }               


上面的意思是日内的所有持仓在收市前全部平掉。上面的语句在时间到了后还没执行。后来把时间条件改了,让条件满足的更频繁一些,观察多次仍然不能执行。问题出在哪里呢?

[ 本帖最后由 gzpony 于 2007-12-25 11:56 编辑 ]

Rank: 4

精华
0
UID
961
积分
464
帖子
105
主题
28
阅读权限
50
注册时间
2007-12-22
最后登录
2018-10-9
2#
发表于 2007-12-25 12:27:47 |只看该作者

我觉得

你系统的时间框架是什么呢.
是否是1分钟线?

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
594
积分
1315
帖子
77
主题
25
阅读权限
60
注册时间
2007-10-23
最后登录
2019-4-27
3#
发表于 2007-12-25 13:09:53 |只看该作者
是的,1分钟线。应该在14:59就执行吧

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
4#
发表于 2007-12-25 13:21:39 |只看该作者
Sell,BuyToCover会判断图表中模拟的持仓,如果此时图上没有持仓,就会忽略信号。
您用了A_BuyPosition>0判断,就需要用A_SendOrder发单。
但用A_SendOrder发单,会在每个行情更新都执行。不会像Buy,Sell一样会判断在一根K线上只做一次。如果用来开仓,就可能会出现重复发单,
这个时候就需要自己用变量来记录发单的信息。

为了便于控制,要保持账户和模拟的状态的一致性,建议还是用Buy,Sell这些函数来进行交易。
A_SendOrder比较适合于在Tick上进行快速交易。

[ 本帖最后由 nopain 于 2007-12-25 13:24 编辑 ]

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
594
积分
1315
帖子
77
主题
25
阅读权限
60
注册时间
2007-10-23
最后登录
2019-4-27
5#
发表于 2007-12-25 13:28:09 |只看该作者
原帖由 nopain 于 2007-12-25 13:21 发表
Sell,BuyToCover会判断图表中模拟的持仓,如果此时图上没有持仓,就会忽略信号。
您用了A_BuyPosition>0判断,就需要用A_SendOrder发单。
但用A_SendOrder发单,会在每个行情更新都执行。不会像Buy,Sell一样会判断在一根K线上 ...



谢谢,原来A_XXX的函数连发单都要用A_xxx的配合,怪不得。上面的语句困惑了我好一段时间,怎么看语法,逻辑都应该没问题。

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
594
积分
1315
帖子
77
主题
25
阅读权限
60
注册时间
2007-10-23
最后登录
2019-4-27
6#
发表于 2007-12-25 23:09:09 |只看该作者
还有些疑问。我在建仓的时候也是用的A_BuyPosition或A_sellPosition=0来判断,用的buy 和 sellshort建仓,也就是说用的 nopain 版主 推荐的“用Buy,Sell这些函数来进行交易”,建仓是成功的。不过建仓成功在图上没有指示,后面的平仓就是上面写到的语句,用A_BuyPosition>0判断后Sell,BuyToCover平仓不成功。

原来用过MarketPosition == -1或1,0来判断也没问题。 只是我想建仓平仓前最好查询一下帐户里真正的持仓。只用MarketPosition判断有时候信号和实际持仓不一样,在没有能够完整的实时接收数据的时候更是如此。这种时候补回数据后图上出现信号,可是实际仓位不可能在那个位置建立好了。

我想其他朋友也会有很大机会碰上这种问题的。这种情况应该怎么做好呢?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
11
UID
1
积分
25127
帖子
6291
主题
149
阅读权限
255
注册时间
2007-7-20
最后登录
2024-4-22
7#
发表于 2007-12-26 08:49:35 |只看该作者
我们假定您在5分钟线上交易,您建仓的时候,最新Bar的时间是9:30。你在这里通过A_BuyPosition判断,然后买入成功,此时,图上最新Bar上应该是有讯号的,但是当时间变到9:35时,产生了一个新的Bar,9:30的这个Bar上的讯号就消失掉了。您需要进行的处理是按以下格式。


  1. If(BarStatus == 2)
  2. {
  3.       If(BuyCon && A_BuyPosition ==0)
  4.       {
  5.              Buy(1,Q_AskPrice);
  6.        }
  7.       
  8.        If(SellCon && A_BuyPosition > 0)
  9.        {
  10.               Sell(1,Q_BidPrice);
  11.         }
  12. }else
  13. {
  14.        If(BuyCon && MarketPosition != 1)
  15.        {
  16.              Buy(1,Close);// Close可根据您的情况修改为其他值
  17.        }

  18.        If(SellCon && MarketPosition == 1)
  19.        {
  20.              Sell(1,Close); // Close可根据您的情况修改为其他值
  21.        }
  22. }
复制代码
交易开拓者 - 期货程序化与量化系统自动交易领航者

网站已支持在线开通模拟账户功能

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
594
积分
1315
帖子
77
主题
25
阅读权限
60
注册时间
2007-10-23
最后登录
2019-4-27
8#
发表于 2007-12-26 16:40:37 |只看该作者
原帖由 tradeblazer 于 2007-12-26 08:49 发表
我们假定您在5分钟线上交易,您建仓的时候,最新Bar的时间是9:30。你在这里通过A_BuyPosition判断,然后买入成功,此时,图上最新Bar上应该是有讯号的,但是当时间变到9:35时,产生了一个新的Bar,9:30的这个Bar上的讯号就消失掉了。 ...



BuyCon 和SellCon 都是自定义变量,是bool类型吧?

是不是需要改变它们的状态:

If(BarStatus == 2)
{
      If(BuyCon && A_BuyPosition ==0)
      {
             Buy(1,Q_AskPrice);
             BuyCon=true;
       }
      
       If(SellCon && A_BuyPosition > 0)
       {
              Sell(1,Q_BidPrice);
             SellCon =false;
        }
}

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
9#
发表于 2007-12-27 08:36:12 |只看该作者
BuyCon,SellCon就是您的买入,卖出条件,您在程序的前面部分先计算好条件,然后进行交易。
不需要改变状态,因为这个值是每个Bar都重新算。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
10#
发表于 2007-12-28 09:59:49 |只看该作者
为了方便理清编程的思路,有两点建议:1、请把barstatus<2让给回测帐户使用(全部要使用交易函数;软件平台总是隐含一个回测帐户,它可以通过交易设置进行参数设置);把barstatus==2交给实际帐户使用(要用到帐户函数)。2、实际帐户的开平要跟随回测帐户的开平条件而产生动作。
TradeBlazer交流群33647992。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-3 00:53

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部