
等级: 新手上路
- 注册:
- 2022-6-23
- 曾用名:
|
本帖最后由 技术006 于 2022-6-24 08:16 编辑
我写了一个交易系统,准备加个附加条件提高成功率。开仓时,当附加条件和系统条件同时满足时,才启动该系统开仓。平仓时,当系统条件和附加条件达到任何一个,哪个先达到先执行哪个平仓
我设的附加条件就是一个简单的三线平均线,系统交易是在5分钟K线上,但我想引用15分钟的K线的三线平均线的值。当该值出现连续3次降低的时候,说明趋势向下,允许系统开空仓。反之,平仓时当出现连续3次升高时,说明趋势反转,系统平空仓。
但几次尝试后,发现跨周期引用,无论用STKINDIEX还是直接##,都没有反应。我不知道哪里出问题了,请指教。
MA1:=REF(MA((H+L+C)/3,40),1); //在当前5分钟K线下建立一条40周期的三线均线
15MA1:STKINDIEX('','A.MA1',0,3,-1,300); //引用15分钟级别的三线均线。或者写成 15MA1:"A.MA1##MIN15",这里A.MA1里的A是随便写吗?代表什么,错误的话这里应该写什么?
//可能这里有问题,变量跟踪调试显示##,导致后面的也出现错误,但都能通过编译语法审核
KK:ALL(15MA1<REF(15MA1,1),3); //若均线连续三个值依次降低,则赋值KK(开空条件),变量跟踪调试永远显示0值,没有变化,应该是无效
PK:ALL(15MA1>REF(15MA1,1),3); //若均线连续三个值依次增加,则赋值PK(平空条件),变量跟踪调试永远显示0值,没有变化,应该是无效
IF POSITION=0 AND H>L THEN BEGIN //如果当前是没有持仓的状态
LONG := H > T20HI; //最高值创20日最高值新高,则建立空头进场的系统条件,
IF LONG AND KK THEN BEGIN //开空条件是,当满足15分钟级三线均线15MA1最近三个值依次下降,且LONG成立,则开仓
//下面的语句都能走通,只要把上面一句的AND KK删除,就没问题,但加上KK,就没有开平仓信号了。
MYENTRYPRICE := IF(OPEN>T20HI+MINDIFF ,OPEN ,T20HI+MINDIFF ) ;
BUYSHORT( _DEBUG,POSNUM,LIMITR,MYENTRYPRICE),IGNORECHECKPRICE;
END //IF
//平仓时两个条件或的关系,想用并列两个IF...then begin...END来解决
IF,,,,,THEN BEGIN //平仓1:系统平仓条件
...
END //平仓1是系统平仓,达到系统平仓条件平仓,那个运行都没问题,主要是平仓2是
IF POSITION= -1 AND PK THEN BEGIN //若15分钟级三线均线15MA1最近三个值依次上升,且持有空仓成立,则当前5分钟K线走完后,市价全部平仓
SELLSHORT(PK,0,MARKET); //这里平仓条件写PK对吗?感觉有点问题
END |
|