- 精华
- 20
- 在线时间
- 2981 小时
- UID
- 4
- 积分
- 22709
- 帖子
- 4802
- 阅读权限
- 255
- 注册时间
- 2007-7-20
- 最后登录
- 2024-1-15
- 精华
- 20
- UID
- 4
- 积分
- 22709
- 帖子
- 4802
- 主题
- 64
- 阅读权限
- 255
- 注册时间
- 2007-7-20
- 最后登录
- 2024-1-15
|
以下是平掉3个商品的持仓,及撤单的代码,
需要建好一个工作区,日线周期就可以,其他周期也可以。
选好主图,跌加另外两个商品。加入以下的交易指令,启动自动交易。- //------------------------------------------------------------------------
- // 简称: DayCloser
- // 名称: 收盘全平撤
- // 类别: 交易指令
- // 类型: 其他
- // 输出:
- //------------------------------------------------------------------------
- Params
- Numeric offSet(1); // 委托价格偏移,为了保证成交
- Numeric BeforeMins(5); // 收盘前几分钟开始操作
- Vars
- Numeric tempPos; // 仓位
- Numeric DeleteOrderTickCounter;
- Numeric HasSendOrder(0);
- Begin
- If(BarStatus == 0)
- {
- DeleteOrderTickCounter = 9999;
- HasSendOrder = 0;
- SetGlobalVar(0,DeleteOrderTickCounter);
- SetGlobalVar(1,HasSendOrder);
- }Else
- {
- DeleteOrderTickCounter = GetGlobalVar(0);
- HasSendOrder = GetGlobalVar(1);
- }
-
- If(CurrentTime > (0.1459 - 0.0001*(BeforeMins-1)) && BarStatus == 2 && HasSendOrder == 0)
- {
- If(Data0.Close != InvalidNumeric && Data0.A_GetOpenOrderCount()>0) // 商品0全部撤单
- {
- Data0.A_DeleteOrder();
- DeleteOrderTickCounter = 1;
- }
- If(Data1.Close != InvalidNumeric && Data1.A_GetOpenOrderCount()>0) // 商品1全部撤单
- {
- Data1.A_DeleteOrder();
- DeleteOrderTickCounter = 1;
- }
- If(Data2.Close != InvalidNumeric && Data2.A_GetOpenOrderCount()>0) // 商品2全部撤单
- {
- Data2.A_DeleteOrder();
- DeleteOrderTickCounter = 1;
- }
- DeleteOrderTickCounter = DeleteOrderTickCounter + 1;
- SetGlobalVar(0,DeleteOrderTickCounter);
- If(DeleteOrderTickCounter < 5) Return; // 撤单后需要延迟几个Tick才平仓
- tempPos = Data0.A_BuyPosition();
- If(tempPos > 0) // 平多单
- {
- Data0.A_SendOrder(Enum_Sell,Enum_Exit,tempPos,Data0.Q_BidPrice-offSet*Data0.MinMove*Data0.PriceScale);
- }
- tempPos = Data0.A_SellPosition();
- If(tempPos > 0) //平空单
- {
- Data0.A_SendOrder(Enum_Buy,Enum_Exit,tempPos,Data0.Q_AskPrice+offSet*Data0.MinMove*Data0.PriceScale);
- }
- tempPos = Data1.A_BuyPosition;
- If(tempPos > 0) // 平多单
- {
- Data1.A_SendOrder(Enum_Sell,Enum_Exit,tempPos,Data1.Q_BidPrice-offSet*Data1.MinMove*Data1.PriceScale);
- }
- tempPos = Data1.A_SellPosition;
- If(tempPos > 0) //平空单
- {
- Data1.A_SendOrder(Enum_Buy,Enum_Exit,tempPos,Data1.Q_AskPrice+offSet*Data1.MinMove*Data1.PriceScale);
- }
- tempPos = Data2.A_BuyPosition;
- If(tempPos > 0) // 平多单
- {
- Data2.A_SendOrder(Enum_Sell,Enum_Exit,tempPos,Data2.Q_BidPrice-offSet*Data2.MinMove*Data2.PriceScale);
- }
- tempPos = Data2.A_SellPosition;
- If(tempPos > 0) //平空单
- {
- Data2.A_SendOrder(Enum_Buy,Enum_Exit,tempPos,Data2.Q_AskPrice+offSet*Data2.MinMove*Data2.PriceScale);
- }
- HasSendOrder = 1;
- SetGlobalVar(1,HasSendOrder);
- }
- End
- //------------------------------------------------------------------------
- // 编译版本 GS2004.06.12
- // 用户版本 2008/01/17 11:09
- // 版权所有 nopain
- // 更改声明 TradeBlazer Software保留对TradeBlazer平台
- // 每一版本的TrabeBlazer公式修改和重写的权利
- //------------------------------------------------------------------------
复制代码 |
|