金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
楼主: 代人发帖

这么写图表程式化策略对不对。

[复制链接]

16

主题

95

帖子

95

积分

Rank: 2

等级: 标准版

注册:
2022-11-14
曾用名:
发表于 2022-11-29 17:40 | 显示全部楼层
技术009 发表于 2022-11-29 17:11
对 这样差不多。另外空头的固定止损和移动止盈平仓你参考多头的 补上就行了。

是在这一段改吗

平空:SELLSHORT(平空条件,手数,THISCLOSE);                  //平空信号
if  (开多条件 OR 再开多条件) and holding=0 then
begin
开多:BUY(开多条件 OR再开多条件AND HOLDING=0,手数,THISCLOSE);       //开多信号
maxprofit:=0;
end  
平多:SELL(平多条件,手数,THISCLOSE);                       //平多信号
if  (开空条件 OR 再开空条件) and holding=0 then
begin
开空:BUYSHORT(开空条件 OR再开空条件 AND HOLDING=0,手数,THISCLOSE);     //开空信号
maxprofit:=0;
end  
回复

使用道具 举报

16

主题

95

帖子

95

积分

Rank: 2

等级: 标准版

注册:
2022-11-14
曾用名:
发表于 2022-11-30 10:56 | 显示全部楼层
技术009 发表于 2022-11-29 17:11
对 这样差不多。另外空头的固定止损和移动止盈平仓你参考多头的 补上就行了。

是这样加吗
INPUT:SS;
手数:=SS;
{交易条件}
开多条件:=A;    //开多条件
平多条件:=B ;   //平多条件
开空条件:=C;    //开空条件
平空条件:=D;    //平空条件
variable:有仓位时最大获利幅度=0;//有仓位时最大获利幅度

平空:SELLSHORT(平空条件,手数,THISCLOSE);                  //平空信号
if  开多条件  and holding=0 then
begin
开多:BUY(开多条件 AND HOLDING=0,手数,THISCLOSE);          //开多信号
maxprofit:=0;
end  

平多:SELL(平多条件,手数,THISCLOSE);                       //平多信号
if  开空条件  and holding=0 then
begin
开空:BUYSHORT(开空条件 AND HOLDING=0,手数,THISCLOSE);     //开空信号
maxprofit:=0;
end  

//判断当前持仓状态下的多头最大盈利
多盈利:=0;
多盈利回调幅度:=0;
if holding > 0 and enterbars > 0 then
begin
  多盈利:=(c-enterprice)/enterprice*100; //记录最大盈利
  if 多盈利>有仓位时最大获利幅度 then
    有仓位时最大获利幅度:=多盈利;

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

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

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

//判断当前持仓状态下的空头最大盈利
空盈利:=0;
空盈利回调幅度:=0;
if holding > 0 and enterbars > 0 then
begin
  空盈利:=(enterprice-C)/enterprice*100; //记录最大盈利
  if 空盈利>有仓位时最大获利幅度 then
    有仓位时最大获利幅度:=空盈利;

  空盈利回调幅度:=(有仓位时最大获利幅度-空盈利)/maxprofit*100; //最大盈利后的回调幅度
end
if holding < 0 and enterbars > 0 then
begin
  空盈利:=(C-enterprice)/enterprice*100; //记录最大盈利
  if 空盈利 > 有仓位时最大获利幅度 then
    有仓位时最大获利幅度:=空盈利;

空盈利回调幅度:=(有仓位时最大获利幅度-空盈利)/有仓位时最大获利幅度*100; //最大盈利后的回调幅度
end
//出现浮动亏损比如2%平仓
空止损:SELLSHORT(空盈利 < -2,0,limit,c);

//出现最高盈利后,回落到盈利的60%平仓出场
空止赢:SELLSHORT(空盈利回调幅度 >= Y and openprofit > 0, 0,limit,c);
持仓:holding,COLORRED,linethick0;
资产:asset,noaxis,linethick0;
可用现金:cash(0),linethick0;
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-11-30 10:59 | 显示全部楼层
if  开多条件  and holding=0 then
begin
开多:BUY(开多条件 AND HOLDING=0,手数,THISCLOSE);          //开多信号
有仓位时最大获利幅度:=0;
end  

平多:SELL(平多条件,手数,THISCLOSE);                       //平多信号
if  开空条件  and holding=0 then
begin
开空:BUYSHORT(开空条件 AND HOLDING=0,手数,THISCLOSE);     //开空信号
有仓位时最大获利幅度:=0;
end  

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

使用道具 举报

16

主题

95

帖子

95

积分

Rank: 2

等级: 标准版

注册:
2022-11-14
曾用名:
发表于 2022-11-30 11:14 | 显示全部楼层
技术009 发表于 2022-11-30 10:59
if  开多条件  and holding=0 then
begin
开多:BUY(开多条件 AND HOLDING=0,手数,THISCLOSE);          / ...

哦,忘记了  改了,麻烦再帮看看
INPUT:SS;
手数:=SS;
{交易条件}
开多条件:=A;    //开多条件
平多条件:=B ;   //平多条件
开空条件:=C;    //开空条件
平空条件:=D;    //平空条件
variable:有仓位时最大获利幅度=0;//有仓位时最大获利幅度

平空:SELLSHORT(平空条件  ,手数,THISCLOSE);                  //平空信号
if  开多条件  and holding=0 then
begin
开多:BUY(开多条件 AND HOLDING=0,手数,THISCLOSE);          //开多信号
有仓位时最大获利幅度:=0;
end  

平多:SELL(平多条件 ,手数,THISCLOSE);                       //平多信号
if  开空条件  and holding=0 then
begin
开空:BUYSHORT(开空条件 AND HOLDING=0,手数,THISCLOSE);     //开空信号
有仓位时最大获利幅度:=0;
end  

//判断当前持仓状态下的多头最大盈利
多盈利:=0;
多盈利回调幅度:=0;
if holding > 0 and enterbars > 0 then
begin
  多盈利:=(c-enterprice)/enterprice*100; //记录最大盈利
  if 多盈利>有仓位时最大获利幅度 then
    有仓位时最大获利幅度:=多盈利;

  多盈利回调幅度:=(有仓位时最大获利幅度-多盈利)/有仓位时最大获利幅度*100; //最大盈利后的回调幅度
end
if holding < 0 and enterbars > 0 then
begin
  多盈利:=(enterprice-c)/enterprice*100; //记录最大盈利
  if 多盈利 > 有仓位时最大获利幅度 then
    有仓位时最大获利幅度:=多盈利;

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

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

//判断当前持仓状态下的空头最大盈利
空盈利:=0;
空盈利回调幅度:=0;
if holding > 0 and enterbars > 0 then
begin
  空盈利:=(enterprice-C)/enterprice*100; //记录最大盈利
  if 空盈利>有仓位时最大获利幅度 then
    有仓位时最大获利幅度:=空盈利;

  空盈利回调幅度:=(有仓位时最大获利幅度-空盈利)/有仓位时最大获利幅度*100; //最大盈利后的回调幅度
end
if holding < 0 and enterbars > 0 then
begin
  空盈利:=(C-enterprice)/enterprice*100; //记录最大盈利
  if 空盈利 > 有仓位时最大获利幅度 then
    有仓位时最大获利幅度:=空盈利;

空盈利回调幅度:=(有仓位时最大获利幅度-空盈利)/有仓位时最大获利幅度*100; //最大盈利后的回调幅度
end
//出现浮动亏损比如2%平仓
空止损:SELLSHORT(空盈利 < -1,0,limit,c);

//出现最高盈利后,回落到盈利的60%平仓出场
空止赢:SELLSHORT(空盈利回调幅度 >= Y and openprofit > 0, 0,limit,c);
持仓:holding,COLORRED,linethick0;
资产:asset,noaxis,linethick0;
可用现金:cash(0),linethick0;
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-11-30 11:18 | 显示全部楼层
INPUT:SS(1,1,100,1);

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

使用道具 举报

16

主题

95

帖子

95

积分

Rank: 2

等级: 标准版

注册:
2022-11-14
曾用名:
发表于 2022-11-30 11:42 | 显示全部楼层
技术009 发表于 2022-11-30 11:18
INPUT:SS(1,1,100,1);

ss定义也不对

这次应该没问题了吧
INPUT:SS(1,1,100,1);
手数:=SS;
{交易条件}
开多条件:=A;    //开多条件
平多条件:=B ;   //平多条件
开空条件:=C;    //开空条件
平空条件:=D;    //平空条件
variable:有仓位时最大获利幅度=0;//有仓位时最大获利幅度

平空:SELLSHORT(平空条件  ,手数,THISCLOSE);                  //平空信号
if  开多条件  and holding=0 then
begin
开多:BUY(开多条件 AND HOLDING=0,手数,THISCLOSE);          //开多信号
有仓位时最大获利幅度:=0;
end  

平多:SELL(平多条件 ,手数,THISCLOSE);                       //平多信号
if  开空条件  and holding=0 then
begin
开空:BUYSHORT(开空条件 AND HOLDING=0,手数,THISCLOSE);     //开空信号
有仓位时最大获利幅度:=0;
end  

//判断当前持仓状态下的多头最大盈利
多盈利:=0;
多盈利回调幅度:=0;
if holding > 0 and enterbars > 0 then
begin
  多盈利:=(c-enterprice)/enterprice*100; //记录最大盈利
  if 多盈利>有仓位时最大获利幅度 then
    有仓位时最大获利幅度:=多盈利;

  多盈利回调幅度:=(有仓位时最大获利幅度-多盈利)/有仓位时最大获利幅度*100; //最大盈利后的回调幅度
end
if holding < 0 and enterbars > 0 then
begin
  多盈利:=(enterprice-c)/enterprice*100; //记录最大盈利
  if 多盈利 > 有仓位时最大获利幅度 then
    有仓位时最大获利幅度:=多盈利;

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

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

//判断当前持仓状态下的空头最大盈利
空盈利:=0;
空盈利回调幅度:=0;
if holding > 0 and enterbars > 0 then
begin
  空盈利:=(enterprice-C)/enterprice*100; //记录最大盈利
  if 空盈利>有仓位时最大获利幅度 then
    有仓位时最大获利幅度:=空盈利;

  空盈利回调幅度:=(有仓位时最大获利幅度-空盈利)/有仓位时最大获利幅度*100; //最大盈利后的回调幅度
end
if holding < 0 and enterbars > 0 then
begin
  空盈利:=(C-enterprice)/enterprice*100; //记录最大盈利
  if 空盈利 > 有仓位时最大获利幅度 then
    有仓位时最大获利幅度:=空盈利;

空盈利回调幅度:=(有仓位时最大获利幅度-空盈利)/有仓位时最大获利幅度*100; //最大盈利后的回调幅度
end
//出现浮动亏损比如2%平仓
空止损:SELLSHORT(空盈利 < -1,0,limit,c);

//出现最高盈利后,回落到盈利的60%平仓出场
空止赢:SELLSHORT(空盈利回调幅度 >= Y and openprofit > 0, 0,limit,c);
持仓:holding,COLORRED,linethick0;
资产:asset,noaxis,linethick0;
可用现金:cash(0),linethick0;
回复

使用道具 举报

16

主题

95

帖子

95

积分

Rank: 2

等级: 标准版

注册:
2022-11-14
曾用名:
发表于 2022-11-30 12:48 | 显示全部楼层
技术009 发表于 2022-11-30 11:18
INPUT:SS(1,1,100,1);

ss定义也不对

再改了一下
INPUT:SS(1,1,100,1);
手数:=SS;
{交易条件}
开多条件:=A;    //开多条件
平多条件:=B ;   //平多条件
开空条件:=C;    //开空条件
平空条件:=D;    //平空条件
variable:maxprofit=0;//有仓位时最大获利幅度
平空:SELLSHORT(平空条件  ,手数,THISCLOSE);                  //平空信号
if  开多条件  and holding=0 then
begin
开多:BUY(开多条件 AND HOLDING=0,手数,THISCLOSE);          //开多信号
maxprofit:=0;
end  

平多:SELL(平多条件  ,手数,THISCLOSE);                       //平多信号
if  开空条件  and holding=0 then
begin
开空:BUYSHORT(开空条件 AND HOLDING=0,手数,THISCLOSE);     //开空信号
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 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);

//判断当前持仓状态下的空头最大盈利
win1:=0;
win3:=0;
if holding > 0 and enterbars > 0 then
begin
  win1:=(enterprice-C)/enterprice*100; //记录最大盈利
  if win1>maxprofit then
    maxprofit:=win1;

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

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

//出现最高盈利后,回落到盈利的60%平仓出场

空止赢:SELLSHORT(win3 >= 60 and openprofit > 0, 0,limit,c);
持仓:holding,COLORRED,linethick0;
资产:asset,noaxis,linethick0;
可用现金:cash(0),linethick0;
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-11-30 15:20 | 显示全部楼层
里面有一部分代码是是冗余的,没啥意义的。删除保留如下部分即可:

//判断当前持仓状态下的多头最大盈利
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

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

//判断当前持仓状态下的空头最大盈利
win1:=0;
win3:=0;

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

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

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

使用道具 举报

16

主题

95

帖子

95

积分

Rank: 2

等级: 标准版

注册:
2022-11-14
曾用名:
发表于 2022-11-30 16:09 | 显示全部楼层
技术009 发表于 2022-11-30 15:20
里面有一部分代码是是冗余的,没啥意义的。删除保留如下部分即可:

//判断当前持仓状态下的多头最大盈利 ...

INPUT:SS(1,1,100,1);
手数:=SS;
{交易条件}
开多条件:=A;    //开多条件
平多条件:=B ;   //平多条件
开空条件:=C;    //开空条件
平空条件:=D;    //平空条件
variable:maxprofit=0;//有仓位时最大获利幅度
平空:SELLSHORT(平空条件  ,手数,THISCLOSE);                  //平空信号
if  开多条件  and holding=0 then
begin
开多:BUY(开多条件 AND HOLDING=0,手数,THISCLOSE);          //开多信号
maxprofit:=0;
end  

平多:SELL(平多条件  ,手数,THISCLOSE);                       //平多信号
if  开空条件  and holding=0 then
begin
开空:BUYSHORT(开空条件 AND HOLDING=0,手数,THISCLOSE);     //开空信号
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

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

//判断当前持仓状态下的空头最大盈利
win1:=0;
win3:=0;

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

win3:=(maxprofit-win1)/maxprofit*100; //最大盈利后的回调幅度
end
//出现浮动亏损比如2%平仓
空止损:SELLSHORT(win1 < -2,0,limit,c);
//出现最高盈利后,回落到盈利的60%平仓出场
空止赢:SELLSHORT(win3 >= 60 and openprofit > 0, 0,limit,c);

持仓:holding,COLORRED,linethick0;
资产:asset,noaxis,linethick0;
可用现金:cash(0),linethick0;
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-11-30 16:11 | 显示全部楼层
这样OK了。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 06:37 , Processed in 0.150066 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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