大神老师好,
最近遇到 同个策略中,同个品种的策略中,多单开仓和空单开仓,会互相抵消。
比如,在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
结果代码里变本加厉
settradeside不行?之前不是好像说过这个问题么,有一个人的帖子下面我还给demo了
https://bbs.tbquant.net/thread/20250428064245460768
我记得回过你
难道又有新的问题?
设置成双向交易啊
你不至于到现在还是系统默认的交易方向+MarketPosition吧?