MC不断发单,导致多空部位对锁,很快提示保证金不足 [MC]
- 咨询内容:
在实盘交易中,发现1个问题,需要引起高度注意。 把我使用的经验说出来,和大家分享。
代码A: if close>close[1] then buy next bar at market; // 当前收盘价大于前根收盘价,下根bar开盘时买进;
代码B: if close<close[1] then sellshort next bar at market; // 当前收盘价小于前根收盘价,下根bar开盘时卖空;
假设原来空仓,close>close[1], 执行代码A后, 会买进1手,持有1手多单。 买进1手后, 出现 close<close[1],执行代码B, 本来的预期是:MC把多单平掉,并反手卖空1手。 但实际交易中的情况是, MC并没有把之前的1手多单平掉,而是直接卖空2手,这样导致一共持有3口部位:1手多单,2手空单。 多空部位同时持有,导致锁单,以及额外占用保证金。
多空对锁,持有3口部位后, 下次再出现 close>close[1],执行代码A时, MC又会直接买进2手,而不会把之前的2手空单平掉。 这样就累积了5口部位: 3手多单,2手空单。
运行了一段时间后, 很快就提示,保证金不足,无法开仓了。
后来经过咨询、了解,才明白,MC是一款国外的软件,在美国等国家,没有锁单的机制。 假设之前有1手多单, 满足sellshort的条件后,MC会送出2手空单, 国外的期货经纪商会自动把多单平掉,并反手开空。 而在国内,由于允许锁单,就会导致多空部位不断累积,很快出现保证金不足的提示。
为了避免这种情况,有个很简单的解决办法, 在 buy指令之后,不要直接用sellshort, 中间一定要加上 sell多单平仓的代码。 以上代码,改成 :- if arketposition=0 and close>close[1] then buy next bar at market;
- if marketposition=1 and close<close[1] then sell next bar at market;
- if marketposition=0 and close<close[1] then sellshort next bar at market;
- if marketposition=-1 and close>close[1] then buytocover next bar at market;
- if arketposition=0 and close>close[1] then buy next bar at market;
- MC技术部: 这个问题目前还存在吗?在mc8.5中还需要这样写吗?
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 1145508240 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容