本帖最后由 技术010 于 2021-11-5 10:28 编辑
1、一开多为例,按持仓均价计算涨幅加仓,代码如下:
[PEL] 复制代码 MA10:MA(C,10);
MA50:MA(C,50);
KD:CROSS(MA10,MA50);//开多
PD:CROSS(MA50,MA10);
//判断基于初始仓位的盈亏比在哪个区间 以及当前仓位情况来判断这个区间是否加过仓了。
IF HOLDING=1 AND (C-AVGENTERPRICE)/AVGENTERPRICE>0.1 THEN
加多仓1:BUY(1,1,MARKET);
IF HOLDING=2 AND (C-AVGENTERPRICE)/AVGENTERPRICE>0.2 THEN
加多仓2:BUY(1,1,MARKET);
IF HOLDING=3 AND (C-AVGENTERPRICE)/AVGENTERPRICE>0.3 THEN
加多仓3:BUY(1,1,MARKET);
IF KD AND HOLDING=0 THEN //这个IF后面必须是完整的开仓条件,因为IF下需要执行全局变量的重置操作,所以必须保证和开仓条件完全一致
BUY(1,1,MARKET);
IF PD AND HOLDING>0 THEN
SELL(1,HOLDING,MARKET);
2、以开空为例,按持仓均价计算涨幅进行加空仓,代码如下:
[PEL] 复制代码 MA10:MA(C,10);
MA50:MA(C,50);
KK:CROSS(MA50,MA10); //开空
PK:CROSS(MA10,MA50);//平空
//判断基于初始仓位的盈亏比在哪个区间 以及当前仓位情况来判断这个区间是否加过仓了。
IF HOLDING=-1 AND (AVGENTERPRICE-C)/AVGENTERPRICE>0.1 THEN
加空仓1:BUYSHORT(1,1,MARKET);
IF HOLDING=-2 AND (AVGENTERPRICE-C)/AVGENTERPRICE>0.2 THEN
加空仓2:BUYSHORT(1,1,MARKET);
IF HOLDING=-3 AND (AVGENTERPRICE-C)/AVGENTERPRICE>0.3 THEN
加空仓3:BUYSHORT(1,1,MARKET);
IF KK AND HOLDING=0 THEN //这个IF后面必须是完整的开仓条件,因为IF下需要执行全局变量的重置操作,所以必须保证和开仓条件完全一致
BUYSHORT(1,1,MARKET);
IF PK AND HOLDING>0 THEN
SELLSHORT(HOLDING<0,HOLDING,MARKET);
3、适用股票代码的话参考开多范例就可以了。
|