设为首页收藏本站

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

希望管理员写一个每日收盘前x分钟平掉所有持仓的公式! [复制链接]

Rank: 1

精华
1
UID
917
积分
41
帖子
5
主题
2
阅读权限
10
注册时间
2007-12-12
最后登录
2016-12-7
跳转到指定楼层
1#
发表于 2008-1-17 10:39:16 |只看该作者 |倒序浏览
目前期货交易中,日内交易者占很大的比例,希望管理员写一个每日收盘前x分钟以市价平掉所有持仓并取消所有委托的公式,帮助日内交易者(尤其是上班族)解决后顾之忧!谢谢!

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
2#
发表于 2008-1-17 11:53:57 |只看该作者
以下是平掉3个商品的持仓,及撤单的代码,
需要建好一个工作区,日线周期就可以,其他周期也可以。
选好主图,跌加另外两个商品。加入以下的交易指令,启动自动交易。
  1. //------------------------------------------------------------------------
  2. // 简称: DayCloser
  3. // 名称: 收盘全平撤
  4. // 类别: 交易指令
  5. // 类型: 其他
  6. // 输出:
  7. //------------------------------------------------------------------------

  8. Params
  9.         Numeric offSet(1);                    // 委托价格偏移,为了保证成交
  10.         Numeric BeforeMins(5);                        // 收盘前几分钟开始操作
  11. Vars
  12.         Numeric tempPos; // 仓位
  13.         Numeric DeleteOrderTickCounter;
  14.         Numeric HasSendOrder(0);
  15. Begin      
  16.         If(BarStatus == 0)
  17.         {
  18.                 DeleteOrderTickCounter = 9999;
  19.                 HasSendOrder = 0;               
  20.                 SetGlobalVar(0,DeleteOrderTickCounter);
  21.                 SetGlobalVar(1,HasSendOrder);
  22.         }Else
  23.         {
  24.                 DeleteOrderTickCounter = GetGlobalVar(0);
  25.                 HasSendOrder = GetGlobalVar(1);
  26.         }
  27.    
  28.         If(CurrentTime > (0.1459 - 0.0001*(BeforeMins-1)) && BarStatus == 2 && HasSendOrder == 0)
  29.         {
  30.                 If(Data0.Close != InvalidNumeric && Data0.A_GetOpenOrderCount()>0) // 商品0全部撤单
  31.                 {
  32.                         Data0.A_DeleteOrder();
  33.                         DeleteOrderTickCounter = 1;
  34.                 }
  35.                 If(Data1.Close != InvalidNumeric && Data1.A_GetOpenOrderCount()>0) // 商品1全部撤单
  36.                 {
  37.                         Data1.A_DeleteOrder();
  38.                         DeleteOrderTickCounter = 1;
  39.                 }
  40.                 If(Data2.Close != InvalidNumeric && Data2.A_GetOpenOrderCount()>0) // 商品2全部撤单
  41.                 {
  42.                         Data2.A_DeleteOrder();
  43.                         DeleteOrderTickCounter = 1;
  44.                 }               
  45.                 DeleteOrderTickCounter = DeleteOrderTickCounter + 1;
  46.                 SetGlobalVar(0,DeleteOrderTickCounter);

  47.                 If(DeleteOrderTickCounter < 5) Return; // 撤单后需要延迟几个Tick才平仓

  48.                 tempPos = Data0.A_BuyPosition();
  49.                 If(tempPos > 0) // 平多单
  50.                 {
  51.                         Data0.A_SendOrder(Enum_Sell,Enum_Exit,tempPos,Data0.Q_BidPrice-offSet*Data0.MinMove*Data0.PriceScale);
  52.                 }
  53.                 tempPos = Data0.A_SellPosition();
  54.                 If(tempPos > 0) //平空单
  55.                 {
  56.                         Data0.A_SendOrder(Enum_Buy,Enum_Exit,tempPos,Data0.Q_AskPrice+offSet*Data0.MinMove*Data0.PriceScale);
  57.                 }

  58.                 tempPos = Data1.A_BuyPosition;
  59.                 If(tempPos > 0) // 平多单
  60.                 {
  61.                                 Data1.A_SendOrder(Enum_Sell,Enum_Exit,tempPos,Data1.Q_BidPrice-offSet*Data1.MinMove*Data1.PriceScale);
  62.                 }
  63.                 tempPos = Data1.A_SellPosition;
  64.                 If(tempPos > 0) //平空单
  65.                 {
  66.                                 Data1.A_SendOrder(Enum_Buy,Enum_Exit,tempPos,Data1.Q_AskPrice+offSet*Data1.MinMove*Data1.PriceScale);
  67.                 }                  

  68.                 tempPos = Data2.A_BuyPosition;
  69.                 If(tempPos > 0) // 平多单
  70.                 {
  71.                         Data2.A_SendOrder(Enum_Sell,Enum_Exit,tempPos,Data2.Q_BidPrice-offSet*Data2.MinMove*Data2.PriceScale);
  72.                 }
  73.                 tempPos = Data2.A_SellPosition;
  74.                 If(tempPos > 0) //平空单
  75.                 {
  76.                         Data2.A_SendOrder(Enum_Buy,Enum_Exit,tempPos,Data2.Q_AskPrice+offSet*Data2.MinMove*Data2.PriceScale);
  77.                 }
  78.                 HasSendOrder = 1;
  79.                 SetGlobalVar(1,HasSendOrder);
  80.         }
  81. End

  82. //------------------------------------------------------------------------
  83. // 编译版本        GS2004.06.12
  84. // 用户版本        2008/01/17 11:09
  85. // 版权所有        nopain
  86. // 更改声明        TradeBlazer Software保留对TradeBlazer平台
  87. //                        每一版本的TrabeBlazer公式修改和重写的权利
  88. //------------------------------------------------------------------------
复制代码

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
3#
发表于 2008-1-17 12:53:35 |只看该作者
A_SendOrder(Enum_Sell,Enum_Exit,tempPos,Q_BidPrice-*MinMove*PriceScale);相当sell和sellshort;
A_SendOrder(Enum_Buy,Enum_Exit,tempPos,Q_AskPrice+*MinMove*PriceScale);相当buy和buytocover;
                        If(A_GetOpenOrderCount()>0) // 这是撤单指令
                        {
                                A_DeleteOrder();
                        }
谢谢,很值得一学,是一个独立的强制发单代码,假设图表上最多已叠加了三个商品的情况,而且控制了只发一次单。不过,假如上述代码不是单独使用,而是与回测讯号的系统一起使用,恐怕情况有点有妙,有可能再开新单,而平仓就看回测讯号的平仓条件了。
TradeBlazer交流群33647992。

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
4#
发表于 2008-1-17 13:02:45 |只看该作者
这些个函数只能用来实际下单,不能用来测试,图上也没有任何讯号。

不能和测试混在一起用。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
727
积分
3770
帖子
537
主题
55
阅读权限
80
注册时间
2007-11-11
最后登录
2015-4-8
5#
发表于 2008-1-17 13:04:11 |只看该作者
理解错了:
A_SendOrder(Enum_Sell,Enum_Exit,tempPos,Q_BidPrice-*MinMove*PriceScale)相当sell;
A_SendOrder(Enum_Sell,Enum_Entry,tempPos,Q_BidPrice-*MinMove*PriceScale)相当sellshort;
A_SendOrder(Enum_Buy,Enum_Exit,tempPos,Q_AskPrice+*MinMove*PriceScale)相当buytocover;A_SendOrder(Enum_Buy,Enum_Entry,tempPos,Q_AskPrice+*MinMove*PriceScale)相当buy;
TradeBlazer交流群33647992。

使用道具 举报

Rank: 7Rank: 7Rank: 7

精华
1
UID
387
积分
2724
帖子
167
主题
33
阅读权限
80
注册时间
2007-9-21
最后登录
2020-2-24
6#
发表于 2008-1-18 17:25:35 |只看该作者
好!好!好!

使用道具 举报

Rank: 2

精华
0
UID
1085
积分
116
帖子
25
主题
2
阅读权限
30
注册时间
2008-1-17
最后登录
2020-7-1
7#
发表于 2008-1-20 21:30:53 |只看该作者
好东西。 不过按现在的水平实在是看不懂。 看来只有到时候直接拿来用了。
:lol

使用道具 举报

Rank: 4

精华
0
UID
857
积分
585
帖子
79
主题
18
阅读权限
50
注册时间
2007-12-2
最后登录
2013-4-26
8#
发表于 2008-4-21 09:51:48 |只看该作者
请教收盘前的倒数第二个BAR全部平仓,该如何表达?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
9#
发表于 2008-4-21 09:55:09 |只看该作者
原帖由 vivelamer 于 2008-4-21 09:51 发表
请教收盘前的倒数第二个BAR全部平仓,该如何表达?


要看您是在什么周期上,是全自动日内交易还是像本贴描述的单独收盘平仓?

使用道具 举报

Rank: 4

精华
0
UID
857
积分
585
帖子
79
主题
18
阅读权限
50
注册时间
2007-12-2
最后登录
2013-4-26
10#
发表于 2008-4-21 10:30:25 |只看该作者
5分钟全自动日内交易的

使用道具 举报

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

bottom

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

GMT+8, 2024-5-5 12:28

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部