多空方向单子如何互不干扰
大神老师好,最近遇到 同个策略中,同个品种的策略中,多单开仓和空单开仓,会互相抵消。比如,在rb2510合约中,多单信号:连续两个阳棒,开多单1手,空单信号:连续两个阴棒,开空单1手。在多单未平仓的时候,空单开仓,会互相有干扰。如何解决。还有个问题,如果同个信号原理,可否多开几组多单,同时他们的开平仓信号遵循一套算法。比如,在RB2510合约中多单信号:连续两根阳棒,开多单1手,空单信号:连续两根阴棒,开空单1手,首单的多单和首单的空单开仓次数,定在5次,5次之后,再有信号,要等现有单组平仓后,才能继续开仓。在此过程中,每组的多单和空单的开仓和平仓,互相不干扰!破损之后,反手开单。反手单也有平仓算法,该算法共享于反手单组里面。根据算法和各自的点位不同,平仓点位也不一样。就不知道如何实现出这样的功能。能够具体说说实现过程。万分感谢。
写了段 最简单版本的代码,编译没问题,回测时,不开单,没数据。请大神老师过目,指正。代码大致如下:Params Numeric lots(2); // 首单开仓手 Numeric stopp(5); // 止损点 Stoppiont * minpoint Numeric myentry(7); // 累积开仓次数Vars Global Numeric MinPoint;// 最小跳 Global Numeric tmpcon; // Global Numeric aa ; // 限制开仓条件A Global Numeric bb ; // 限制开仓条件b Global Numeric cc ; // 限制开仓条件c Global Numeric MyEntryP1; // 首单开仓 Global Numeric MyExitP1; // 首单止损 Global Numeric MyProfitP1; // 首单止盈 // Series<Numeric> tempexit;// Series<Numeric> tempprofit;// Global Numeric condc; // 进程控制 Events OnInit() { SetTradeSide(1); // 多空,共存模式 } OnBarOpen(ArrayRef<Integer> indexes) { MinPoint= MinMove *PriceScale; if(( 条件A and (MarketPosition==0 and (CurrentEntries>0 or CurrentEntries<myentry))) aa = 1; if(开仓条件2) bb=1; // 标准多单开仓模式 } OnBar(ArrayRef<Integer> indexes) { if(aa==1 and bb==1) { While(CurrentEntries < myentry) // 循环开仓,平仓,反手!简单版本没有反手 { MyEntryP1 = open; // 开仓价==开盘价 buy(lots, MyEntryP1); MyExitP1 = low[3]-stopp*MinPoint; // 止损算法 MyProfitP1 =MyEntryP1 + 5*minpoint; // 简单止盈算法 Commentary("首单多单开仓价:" + Text(MyEntryP1) +"首单多单止盈价:" + Text(MyProfitP1) +"首单多单止损价:" + Text(MyExitP1)); // 输出价格内容 if(high>MyProfitP1) sell(lots,min(high,MyProfitP1)); // 止盈平仓 if(low<MyExitP1) sell(lots,max(low,MyExitP1)); //止损平仓 } } }
回复:是否在 while循环外面,要做一个 首单开平仓的写入,然后while里面的内容不变。就可以了呢??
回复:不知道怎么说你才明白图表很多函数、DEMO都是回溯模式如果你要实盘而且策略有一些复杂需求自己用序列变量或全局变量去控制1 aa这个条件应该不靠谱不存在这个状态2 一系列图表函数先理解含义 你这里出现的大多函数都不应该用 也不能用
回复:你这while啥意思?一次把开仓次数用完?那你一次发完不就完事了?测试除了不开仓策略有没有卡住?
回复:对了策略没卡是因为没运行进去🤔
回复:第一个回复就说了不要用MK结果代码里变本加厉
回复:思考了下,现在用 currententries ==1 / currententries ==2 来控制开仓,多几个分支,代码长点,应该也可以实现多组开仓。 但后续控单平仓,就需要用到 id 来操作,先写一段代码,到时请大神老师,指正。
回复:太犟了感觉两个月前就说过的逻辑这次说的更详细了还是没有听进去也许我理解错了你的逻辑毕竟整体框架、机制、场景没有只有代码片段最后的回复再强调一下如果你打算跑实盘就必须抛弃TBQ默认方式、大部分图表函数的回溯方式编码如果只是测试策略那就无所谓否则策略设计的越复杂转化为实盘越麻烦