- 精华
- 0
- 在线时间
- 378 小时
- UID
- 234307
- 积分
- 153
- 帖子
- 103
- 阅读权限
- 40
- 注册时间
- 2016-5-12
- 最后登录
- 2023-7-26
- 精华
- 0
- UID
- 234307
- 积分
- 153
- 帖子
- 103
- 主题
- 29
- 阅读权限
- 40
- 注册时间
- 2016-5-12
- 最后登录
- 2023-7-26
|
写了一段分钟线测试程序,加了K线结束前撤单平仓一段后,运行就死机,实在找不出问题出在哪里,请版主帮忙看看。- //------------------------------------------------------------------------
- // 简称: mintrade
- // 名称: 分钟线测试
- // 类别: 公式应用
- // 类型: 用户应用
- //------------------------------------------------------------------------
- Params
- Numeric offSet(5);
- Numeric jyss(1);
- Vars
- Numeric stop(0);
- Numeric wtpyl;
- Numeric nCount;
- Numeric i;
- Numeric nEntryFlag;
-
-
- Begin
- if (BarStatus==2)
- {
- wtpyl = offSet*MinMove*PriceScale;//委托偏移量
- if ( (H>H[1]&&L<L[1]) ) //出现穿头破脚走势,停止开仓交易并清仓
- {
- stop = 1;
- Sell(A_BuyPosition,Q_BidPrice-wtpyl);
- BuyToCover(A_SellPosition,Q_AskPrice+wtpyl);
-
- }Else
- {
- //----------------------做多------------------------------
- if (stop==0&&A_SellPosition>0&&H>H[1])
- Buy(jyss,Max(o,H[1]));
-
- if (L<L[1] )
- if ( A_BuyPosition>0) Sell(A_BuyPosition,Min(o,L[1]));
- //-------------------------放空-------------------------------
- if (stop==0&&A_SellPosition==0&&L<L[1])
- SellShort(jyss,Min(o,L[1]));
-
- if (H>H[1] )
- if (A_SellPosition>0) BuyToCover(A_SellPosition,Max(o,H[1]));
-
- //-------本Bar结束前2秒撤销所有未成交平仓委托,并加大偏移重发平仓单----
- if ( K_remaining_time<=2 )
- {
- nCount = A_GetOpenOrderCount;//取得未成交委托数量
- if (nCount>0)
- {
- For i = 1 To nCount
- {
- nEntryFlag = A_OrderEntryOrExit(i);//取得第i个未成交单开平类型
- If(nEntryFlag == Enum_Exit())//是平仓单
- A_DeleteOrder(A_OpenOrderContractNo(i));//取得第i个未成交单合同号,并针对该合同号发撤单指令
- }
-
- //以现价加大偏移重发平仓单
- if (L<L[1]) Sell( A_BuyPosition,c-wtpyl);
- if (H>H[1]) BuyToCover( A_SellPosition,c+wtpyl);
- }
- }
- }
-
- }Else//历史回测
- {
- //----------------------做多------------------------------
- if (MarketPosition <>1&&H>H[1])
- Buy(jyss,Max(o,H[1]));
-
- if (MarketPosition==1&&L<L[1] )
- Sell(0,Min(o,L[1]));
- //-------------------------放空-------------------------------
- if (MarketPosition <>-1&&L<L[1])
- SellShort(jyss,Min(o,L[1]));
-
- if (MarketPosition==-1&&H>H[1] )
- BuyToCover(0,Max(o,H[1]));
-
- //出现穿头破脚走势,相应仓位平仓
- if ( (H>H[1]&&L<L[1]) )
- {
- if (c>o&&MarketPosition==-1) BuyToCover(0,H[1]);
- if (c<o&&MarketPosition==1) Sell(0,L[1]);
- }
-
- }
-
-
- End
复制代码 |
|