金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 4317|回复: 3

请教该加仓模型应该如何修改

[复制链接]

6

主题

23

帖子

23

积分

Rank: 1

等级: 新手上路

注册:
2021-5-31
曾用名:
发表于 2021-6-2 11:48 | 显示全部楼层 |阅读模式
不好意思又来麻烦技术大大了。我试着写了一个简单的加仓模型,逻辑上是最多加仓三次,但是在应用于图时,发现在开仓四次后,如果满足开仓条件会继续加仓,且开仓次数是从第二次开仓开始,怀疑是第四次开仓后又进行了第一次开仓所致,只是我试了好久都没有解决,只好又来求助。另外不知道是否还存在其他问题,麻烦技术大大指点。

代码如下:
[PEL] 复制代码
input:m(20,3,30,1),n(20,10,80,2);
VARIABLE:多头开仓次数:=0,空头开仓次数:=0;
20日高点:=REF(HHV(MAX(O,C),n),1);
20日低点:=REF(LLV(MIN(O,C),n),1);
atr:MA(TR,20);

//多头开仓
IF c>20日高点 and 多头开仓次数=3  then BEGIN;
	开多4:BUY(holding>0,5%,NEXTOPEN),PERTRADER;
	多头止损:=c-m*0.1*atr;
	多头开仓次数:=0;
END
     
IF c>20日高点 and 多头开仓次数=2  then BEGIN ;
	开多3:BUY(holding>0,10%,NEXTOPEN),PERTRADER;
	多头开仓次数:=3;
	多头止损:=c-m*0.1*atr;
END

IF c>20日高点 and 多头开仓次数=1  then BEGIN ;
	开多2:BUY(holding>0,15%,NEXTOPEN),PERTRADER;
	多头开仓次数:=2;
	多头止损:=c-m*0.1*atr;
	END

IF c>20日高点 and 多头开仓次数=0 then BEGIN ;
	开多1:BUY(holding=0 ,10%,NEXTOPEN),PERTRADER;
	多头开仓次数:=1;
	多头止损:=c-m*0.1*atr;
END


//空头开仓
IF c<20日低点 and 空头开仓次数=3 then BEGIN
	开空4:BUYSHORT(holding<0,5%,NEXTOPEN),PERTRADER;
	空头开仓次数:=0;
	空头止损:=c+m*0.1*atr;
END

IF c<20日低点 and 空头开仓次数=2 then BEGIN
	开空3:BUYSHORT(holding<0,10%,NEXTOPEN),PERTRADER;
	空头开仓次数:=3;
	空头止损:=c+m*0.1*atr;
END

IF c<20日低点 and 空头开仓次数=1  then BEGIN
	开空2:BUYSHORT(holding<0,15%,NEXTOPEN),PERTRADER;
	空头开仓次数:=2;
	空头止损:=c+m*0.1*atr;
END

IF c<20日低点 and 空头开仓次数=0 then BEGIN
	开空1:BUYSHORT(holding=0,10%,NEXTOPEN),PERTRADER;
	空头开仓次数:=1;
	空头止损:=c+m*0.1*atr;
END


//平仓出局
IF  c<多头止损 then BEGIN
    多止损:SELL(holding>0,HOLDING,NEXTOPEN);
    多头开仓次数:=0;
end
	
IF  c>空头止损 then BEGIN
    空止损:SELLSHORT(HOLDING<0,HOLDING,NEXTOPEN);
    空头开仓次数:=0;
END

当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY,LINETHICK0;


回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-6-2 13:34 | 显示全部楼层
你控制条件不完整。

加仓的控制条件必须是holding<>0

以多头这段为例:

[PEL] 复制代码
input:m(20,3,30,1),n(20,10,80,2);
VARIABLE:多头开仓次数:=0,空头开仓次数:=0;
20日高点:=REF(HHV(MAX(O,C),n),1);
20日低点:=REF(LLV(MIN(O,C),n),1);
atr:MA(TR,20);
 
//多头开仓
IF c>20日高点 and 多头开仓次数=3 and holding>0  then BEGIN;
    开多4:BUY(holding>0,5%,NEXTOPEN),PERTRADER;
    多头止损:=c-m*0.1*atr;
    多头开仓次数:=0;
END
      
IF c>20日高点 and 多头开仓次数=2 and holding>0   then BEGIN ;
    开多3:BUY(holding>0,10%,NEXTOPEN),PERTRADER;
    多头开仓次数:=3;
    多头止损:=c-m*0.1*atr;
END
 
IF c>20日高点 and 多头开仓次数=1 and holding>0   then BEGIN ;
    开多2:BUY(holding>0,15%,NEXTOPEN),PERTRADER;
    多头开仓次数:=2;
    多头止损:=c-m*0.1*atr;
    END
 
IF c>20日高点 and 多头开仓次数=0  and holding=0 then BEGIN ;
    开多1:BUY(holding=0 ,10%,NEXTOPEN),PERTRADER;
    多头开仓次数:=1;
    多头止损:=c-m*0.1*atr;
END
 
 
//空头开仓
IF c<20日低点 and 空头开仓次数=3 and holding<0  then BEGIN
    开空4:BUYSHORT(holding<0,5%,NEXTOPEN),PERTRADER;
    空头开仓次数:=0;
    空头止损:=c+m*0.1*atr;
END
 
IF c<20日低点 and 空头开仓次数=2 and holding<0  then BEGIN
    开空3:BUYSHORT(holding<0,10%,NEXTOPEN),PERTRADER;
    空头开仓次数:=3;
    空头止损:=c+m*0.1*atr;
END
 
IF c<20日低点 and 空头开仓次数=1 and holding<0   then BEGIN
    开空2:BUYSHORT(holding<0,15%,NEXTOPEN),PERTRADER;
    空头开仓次数:=2;
    空头止损:=c+m*0.1*atr;
END
 
IF c<20日低点 and 空头开仓次数=0  and holding=0 then BEGIN
    开空1:BUYSHORT(holding=0,10%,NEXTOPEN),PERTRADER;
    空头开仓次数:=1;
    空头止损:=c+m*0.1*atr;
END

END

金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

6

主题

23

帖子

23

积分

Rank: 1

等级: 新手上路

注册:
2021-5-31
曾用名:
 楼主| 发表于 2021-6-2 15:17 | 显示全部楼层
谢谢指导,我原来以为在buy和buyshort当中限定条件就可以了。
回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2021-6-2 15:21 | 显示全部楼层
那是下单。你全局变量的赋值之类的也都必须和开平条件保持一致性才行。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2024-12-22 18:00 , Processed in 0.176911 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表