金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 2457|回复: 7

关于完整的止盈止损程序修改问题

[复制链接]

105

主题

431

帖子

431

积分

Rank: 2

等级: 标准版

注册:
2021-9-8
曾用名:
发表于 2023-5-7 17:48 | 显示全部楼层 |阅读模式
01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

MA1:=MA(CLOSE,5);
MA2:=MA(CLOSE,30);
variable:maxprofit=0;//有仓位时最大获利幅度
//开仓
IF CROSS(MA1,MA2) THEN
BEGIN
  BUY(1,1,limit,c);
  maxprofit:=0;
END
//平仓
SELL(CROSS(MA2,MA1),0,limit,c);
//判断当前持仓状态下的最大盈利
win:=0;
win2:=0;
if holding > 0 and enterbars > 0 then
begin
  win:=(c-enterprice)/enterprice*100; //记录最大盈利
  if win>maxprofit then
    maxprofit:=win;

  win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
end
if holding < 0 and enterbars > 0 then
begin
  win:=(enterprice-c)/enterprice*100; //记录最大盈利
  if win > maxprofit then
    maxprofit:=win;

win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
end
//出现浮动亏损比如2%平仓
止损:SELL(win < -2,0,limit,c);

//出现最高盈利后,回落到盈利的60%平仓出场
止赢:SELL(win2 >= 60 and openprofit > 0, 0,limit,c);


请老师把上面的双均线交叉程序换成下面的唐奇安程序,进行固定轮询的股票t+1限价模式交易


CLOSEPOSMODE:1; //指定图表理论平仓模式为优先平老仓
ODDLOTSMODE:1;  //不允许零股交易,例如股票将按照最小100股单位调整
//可平:=ref((HOLDING-DAYHOLDING),1);
可平:=HOLDING-DAYHOLDING;//可平>0,可平
MA20:MA(C,n),LINETHICK2,;//定义20周期均线
手数:=SS;


X周期高点:=REF(HHV(H,x),1),LINETHICK1,;
y周期低点:=REF(LLV(L,y),1),LINETHICK1,;

//交易条件:


开多平空条件:=High>=X周期高点 and holding<=0,;
开空平多条件:=Low<=y周期低点  and holding>=0,;

//交易系统


平多:sell(开空平多条件 and 可平>0,手数, LIMITR,y周期低点),;
开多:buy(开多平空条件  and REF(MA20,1)>=REF(MA20,2) and holding=0,手数, LIMITR,X周期高点),;




回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-5-8 09:26 | 显示全部楼层
[PEL] 复制代码
variable:maxprofit=0;//有仓位时最大获利幅度
INPUT:ss(100,100,100000,100),N(20,2,1000,1),X(20,1,100,1),Y(20,1,100,1);
CLOSEPOSMODE:1; //指定图表理论平仓模式为优先平老仓
ODDLOTSMODE:1;  //不允许零股交易,例如股票将按照最小100股单位调整
//可平:=ref((HOLDING-DAYHOLDING),1);
可平:=HOLDING-DAYHOLDING;//可平>0,可平
MA20:MA(C,n),LINETHICK2,;//定义20周期均线
手数:=SS;


X周期高点:=REF(HHV(H,x),1),LINETHICK1,;
y周期低点:=REF(LLV(L,y),1),LINETHICK1,;

//交易条件
开多条件:=High>=X周期高点 and holding=0;
平多条件:=Low<=y周期低点  and holding>0;

//交易系统



if 开多条件  and REF(MA20,1)>=REF(MA20,2) and holding=0 then 
BEGIN
开多:buy(1,手数, LIMITR,X周期高点),;
maxprofit:=0;	
end 


win:=0;
win2:=0;
if holding > 0 and enterbars > 0 then
begin
  win:=(c-enterprice)/enterprice*100; //记录最大盈利
  if win>maxprofit then
    maxprofit:=win;

  win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
end


if  平多条件 and 可平>0  then 
begin
平多:sell(1,手数, LIMITR,y周期低点);	 
end 

//出现浮动亏损比如2%平仓
止损:SELL(win<-2 AND 可平>0,0,limit,c);

//出现最高盈利后,回落到盈利的60%平仓出场
止赢:SELL(win2>= 60 and 可平>0, 0,limit,c);
//
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

105

主题

431

帖子

431

积分

Rank: 2

等级: 标准版

注册:
2021-9-8
曾用名:
 楼主| 发表于 2023-5-8 10:07 | 显示全部楼层
技术009 发表于 2023-5-8 09:26
[mw_shl_code=pel,true]variable:maxprofit=0;//有仓位时最大获利幅度
INPUT:ss(100,100,100000,100),N(20 ...

程序里有limit,请问老师都用固定轮询可行吗?

补充内容 (2023-5-8 10:32):
LIMITR和limit同时运行用固定轮询可以吗?
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-5-8 10:35 | 显示全部楼层
可以的。代码里指令类型和你使用走完K还是固定轮训 他们不会相互有影响的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

105

主题

431

帖子

431

积分

Rank: 2

等级: 标准版

注册:
2021-9-8
曾用名:
 楼主| 发表于 2023-5-8 13:35 | 显示全部楼层
技术009 发表于 2023-5-8 10:35
可以的。代码里指令类型和你使用走完K还是固定轮训 他们不会相互有影响的。

经可转债ETF测试,止盈信号出现闪烁,请老师再看看,如何修改。

补充内容 (2023-5-8 13:38):
用的是轮询模式
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-5-8 13:42 | 显示全部楼层
因为范例里止损是用收盘价计算的,而收盘价是在变化的。
可以考虑用H代替C。

win:=(H-enterprice)/enterprice*100; //记录最大盈利

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

使用道具 举报

105

主题

431

帖子

431

积分

Rank: 2

等级: 标准版

注册:
2021-9-8
曾用名:
 楼主| 发表于 2023-5-8 14:04 | 显示全部楼层
技术009 发表于 2023-5-8 13:42
因为范例里止损是用收盘价计算的,而收盘价是在变化的。
可以考虑用H代替C。

仍然出现闪烁,请问老师,是否改成win:=ref((H-enterprice)/enterprice*100),1); //记录最大盈利,只改这里可以吗?

补充内容 (2023-5-8 14:05):
其他地方用改吗
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-5-8 14:21 | 显示全部楼层
本帖最后由 技术009 于 2023-5-8 14:24 编辑

后面这段这样微调下:
win:=0;
win2:=0;
if holding > 0 and enterbars > 0 then
begin
  win:=(C-enterprice)/enterprice*100;
  if (H-enterprice)/enterprice*100>maxprofit then //记录最大盈利
    maxprofit:=win;

  win2:=(maxprofit-win)/maxprofit*100; //最大盈利后的回调幅度
end


if  平多条件 and 可平>0  then
begin
平多:sell(1,手数, LIMITR,y周期低点);     
end

//出现浮动亏损比如2%平仓
止损:SELL((L-enterprice)/enterprice*100<-2 AND 可平>0,0,limit,c);
//出现最高盈利后,回落到盈利的60%平仓出场
止赢:SELL(win2>= 60 and 可平>0, 0,limit,c);
//


止损用最低价判断,止盈用最高价,只当前浮盈用C,即计算盈利回撤用收盘价,回撤其实也可以用最低价,但是有个问题就是K线的最高最低价 其实是不知道到底哪个先出现的。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-12 14:21 , Processed in 0.107411 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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