金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 6459|回复: 12

后台程序止盈止损问题

[复制链接]

9

主题

64

帖子

74

积分

等级: 免费版

注册:
2021-5-20
曾用名:
发表于 2022-7-15 09:19 | 显示全部楼层 |阅读模式
MA1:=ZKTJ=0 AND ZDTJ=1;
//开仓多单
//判断当前持仓状态下的最大盈利
        win:=0;
win2:=0;
if Tholding > 0 and Tenterbars > 0 then
begin
  win:=(c-Tenterprice)/Tenterprice*100,NOAXIS; //记录最大盈利
  if win>maxprofit then
    maxprofit:=win;

  win2:=(maxprofit-win)/maxprofit*100,NOAXIS; //最大盈利后的回调幅度
end
if Tholding < 0 and Tenterbars > 0 then
begin
  win:=(Tenterprice-c)/Tenterprice*100,NOAXIS; //记录最大盈利
  if win > maxprofit then
    maxprofit:=win;
win2:=(maxprofit-win)/maxprofit*100,NOAXIS; //最大盈利后的回调幅度
end
//出现浮动亏损比如2%平仓
D止损:=TSELL(win < -2,0,LMT,c),NOAXIS;

//出现最高盈利后,回落到盈利的60%平仓出场
D止赢:=TSELL(win2 >= 60 and Topenprofit > 0, 0,LMT,c),NOAXIS;
//
MA2:=ZKTJ=1 AND ZDTJ=0;//做空:(zktj=1 and zdtj=0)
//开仓空单
//判断当前持仓状态下的最大盈利
win:=0;
win2:=0;
if Tholding > 0 and Tenterbars > 0 then
begin
  win:=(c-Tenterprice)/Tenterprice*100,NOAXIS; //记录最大盈利
  if win>maxprofit then
    maxprofit:=win;
   win2:=(maxprofit-win)/maxprofit*100,NOAXIS; //最大盈利后的回调幅度
end
if Tholding < 0 and Tenterbars > 0 then
begin
  win:=(Tenterprice-c)/Tenterprice*100,NOAXIS; //记录最大盈利
  if win > maxprofit then
    maxprofit:=win;
win2:=(maxprofit-win)/maxprofit*100,NOAXIS; //最大盈利后的回调幅度
end
//出现浮动亏损比如2%平仓
k止损:=TSELLSHORT(win < -2,0,LMT,c);
//出现最高盈利后,回落到盈利的60%平仓出场
K止赢:=TSELLSHORT(win2 >= 60 and Topenprofit > 0, 0,LMT,c);
请问老师:这个写法在后台程序中,能否记录每个交易品种的单独盈亏?(比如交易品种选了多个,如何记录每个?)
  如果不对,请帮助写一下,谢谢!

回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2022-7-15 09:38 | 显示全部楼层
1、你记录的最大浮盈比maxprofit这个需要用全局变量GLOBALVARIABLE来定义。
2、你的代码结构有点乱,那么从止盈止损来写,那么分多头和空头来写,你的代码中多头结构中没必要对tholding<0来判断。
3、这个结构是可以对每个交易品种单独计算盈亏的,是分开的。我们后续会协助完善下此代码,需要点时间,关注此贴即可。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

9

主题

64

帖子

74

积分

等级: 免费版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2022-7-15 09:51 | 显示全部楼层
谢谢!等待回复。
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2022-7-15 10:20 | 显示全部楼层
参考如下代码:
[PEL] 复制代码
GLOBALVARIABLE:MAXPROFIT=0;   //最大盈利比

MA1:=ZKTJ=0 AND ZDTJ=1;
//开仓多单
//判断当前持仓状态下的最大盈利

IF TBUYHOLDING(1) > 0 AND TENTERBARS > 0 THEN
BEGIN
  WIN:=(C-TENTERPRICE)/TENTERPRICE*100,NOAXIS; //记录多头最大盈利
  IF WIN>0 AND WIN>MAXPROFIT THEN
    MAXPROFIT:=WIN;
  WIN2:=(MAXPROFIT-WIN)/MAXPROFIT*100,NOAXIS; //最大盈利后的回调幅度
END

//出现浮动亏损比如超过2%多头止损平仓
IF WIN < -2 THEN  BEGIN
  D止损:=TSELL(TBUYHOLDING>0,0,LMT,C),NOAXIS;   
  MAXPROFIT:=0;                 //平仓后,最大盈利比置0
END

//出现最高盈利后,回落到盈利的60%多头止盈平仓出场
IF WIN2 >= 60 THEN BEGIN
  D止赢:=TSELL(TBUYHOLDING(1)>0 AND TOPENPROFIT > 0, 0,LMT,C),NOAXIS;
  MAXPROFIT:=0;                //平仓后,最大盈利比置0
END


MA2:=ZKTJ=1 AND ZDTJ=0;//做空:(ZKTJ=1 AND ZDTJ=0)
//开仓空单
//判断当前持仓状态下的最大盈利

IF TSELLHOLDING(1) > 0 AND TENTERBARS > 0 THEN
BEGIN
  WIN:=(TENTERPRICE-C)/TENTERPRICE*100,NOAXIS; //记录空头最大盈利
  IF WIN>0 AND WIN > MAXPROFIT THEN
    MAXPROFIT:=WIN;
  WIN2:=(MAXPROFIT-WIN)/MAXPROFIT*100,NOAXIS; //最大盈利后的回调幅度
END

//出现浮动亏损比如2%空头止损平仓
IF WIN < -2 THEN BEGIN
   K止损:=TSELLSHORT(TSELLHOLDING(1)>0,0,LMT,C);
   MAXPROFIT:=0;                      //平仓后,最大盈利比置0
END

//出现最高盈利后,回落到盈利的60%空头止盈平仓出场
IF WIN2 >= 60 AND TOPENPROFIT > 0 THEN BEGIN
   K止赢:=TSELLSHORT(tsellholding(1)>0, 0,LMT,C);
   MAXPROFIT:=0;                      //平仓后,最大盈利比置0
END
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

9

主题

64

帖子

74

积分

等级: 免费版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2022-7-20 22:32 | 显示全部楼层
技术010 发表于 2022-7-15 10:20
参考如下代码:
[mw_shl_code=pel,true]GLOBALVARIABLE:MAXPROFIT=0;   //最大盈利比

谢谢回复。但还有一个问题需要请教如下:
选择多个商品交易,有的是多单,有的是空单,将如何汇总,总的持仓浮盈呢?
FWIN:TACCOUNT( 4),NOAXIS;     //浮动盈亏
PCYK:TACCOUNT(30),NOAXIS;     //平仓盈亏
TOTALCASH:TACCOUNT( 3),NOAXIS;  //现金余额
这三个都是时点数,没有办法和上根k对比!如何能做到和上根k的数据对比呢?
回复

使用道具 举报

9

主题

64

帖子

74

积分

等级: 免费版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2022-7-20 22:52 | 显示全部楼层
还有一个问题,运行分钟k模式,收盘前30秒平仓,PCSJ:T0TOTIME(TIMETOT0(CLOSETIME(0))-30),NOAXIS; //收盘前30秒这个没法执行的!即在分钟运行如何做到收盘前30秒全部平仓呢?
谢谢
回复

使用道具 举报

0

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
gxx978
发表于 2022-7-21 08:52 | 显示全部楼层
1、总的持仓浮盈可以直接用账户函数TACCOUNT( 4),该函数只有最新值无历史值的,无法获取上根K线上的该值的。如果要自己统计,那只能用全局变量自己记录汇总了。
2、尾盘收盘前30秒平仓代码如下,需要使用固定间隔模式:
IF T0TOTIME(TIMETOT0(CLOSETIME(0))-30)<=DYNAINFO(207) THEN  BEGIN
   TSELL(1,0,MKT);
   TSELLSHORT(1,0,MKT);
   END
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

9

主题

64

帖子

74

积分

等级: 免费版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2022-7-21 09:29 | 显示全部楼层
谢谢!
回复

使用道具 举报

9

主题

64

帖子

74

积分

等级: 免费版

注册:
2021-5-20
曾用名:
 楼主| 发表于 2024-4-2 11:12 | 显示全部楼层
请核实一下,技术写的那个止盈止损代码是否准确
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2024-4-2 11:22 | 显示全部楼层
之前的代码先不管,你先把你思路文字重新整理描述出来。以策略思路的文字描述作为对照,才能知道前面的代码逻辑是满足你的需求。  否则这种不知道你想法情况下 没法核实
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-16 20:24 , Processed in 0.143270 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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