金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 6637|回复: 15

策略运行测试信号显示问题

[复制链接]

31

主题

75

帖子

75

积分

等级: 免费版

注册:
2022-1-7
曾用名:
发表于 2022-2-7 12:11 | 显示全部楼层 |阅读模式
编写好的策略在运行测试的时候,翻动不同的合约,可以看到开平信号,但是我将当前可以看到开平信号的K线缩小,立马当前K线的开平信号就会隐藏起来,再次将K线放大,却再也看不到开平信号了,除非再一次切换合约,然后再次回到所运行的合约,就会再次看到开平信号,这是怎么回事呢
回复

使用道具 举报

37

主题

9933

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-2-7 12:16 | 显示全部楼层
缩放k线会增加k线数量。k线数量发生变化(即起始位置变化),信号自然可能会存在不一致的情况。建议你输出信号条件(或者holding仓位数量)在对应位置看下在缩放后是否依旧成立。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

31

主题

75

帖子

75

积分

等级: 免费版

注册:
2022-1-7
曾用名:
 楼主| 发表于 2022-2-7 12:37 | 显示全部楼层
怎么样进行出信号或者是holding仓位数量呢?您可以讲讲怎么实现呀,我是新手呢,要是加哪些代码啥的,您也简单说一下呗
回复

使用道具 举报

37

主题

9933

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-2-7 12:42 | 显示全部楼层
xxx:开仓条件;//十字光标在对应位置,会返回当前k线的结果。
仓位:HOLDING;//如果缩放的太小,不好定位到开仓信号位置,直接在你认为的位置附近查看holding的结果,一样可以判断,如果仓位发生变化,但是没有显示说明信号标记被压缩掉了,如果仓位没有变化说明这个位置的信号不满足了。

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

使用道具 举报

31

主题

75

帖子

75

积分

等级: 免费版

注册:
2022-1-7
曾用名:
 楼主| 发表于 2022-2-7 12:47 | 显示全部楼层
那为何界面上看起来开平那么多信号,结果回撤的时候,看报告也就才交易了四五次啊,好无语啊,怎么回事,缩小不显示信号就算了,哎,真是把握搞蒙了
回复

使用道具 举报

37

主题

9933

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-2-7 12:50 | 显示全部楼层
回测报告和图表信号对比,首先保证数据量一样。否者怎么可能会一样?跑100米和跑3000米,你觉得结果会一样吗?
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

31

主题

75

帖子

75

积分

等级: 免费版

注册:
2022-1-7
曾用名:
 楼主| 发表于 2022-2-7 12:52 | 显示全部楼层
但是肉眼看开平信号就不止五个呀,这明显有问题的呢,发给你你看看吧,您看怎么添加一下您刚刚说的
A:=stkindi('','atr.atr',0,6,-1);
手数:=1;
pc:=0;
//N:=BARSLAST(DATE<>REF(DATE,1))+1;
N:=BARPOS;
VARIABLE:o_r[]=0;
VARIABLE:s_g[]=0;
VARIABLE:o_m[]=0;
VARIABLE:p[]=0;
  if N=1 then
  begin
           SETUBOUND(o_r,0);
           SETUBOUND(s_g,0);
           SETUBOUND(o_m,0);
           SETUBOUND(p,0);
           end
            n3:=UBOUND(o_r);
            IF N3>0 THEN
             BEGIN
                     for i=1 to n3 do
                      begin
                              if p[i]=1 and close>s_g[i] then begin SELL(1,手数,MARKET);
                              pc:=1;
                              p[i]:=0;
                              CONTINUE;
                              end
                              //止盈
                              if p[i]=2 and close>s_g[i] then begin SELL(1,手数,MARKET);
                              pc:=1;
                              p[i]:=0;CONTINUE;
                               end
                              //止盈
                              if p[i]=1 and close<o_m[i] then begin BUY(1,手数,MARKET);
                               p[i]:=2;
                                o_r:=o_m[i];
                                s_g:=o_r+a/8;
                                o_m:=o_r-a/4;
                                p:=1;
                                end
                                //加仓
                                 if p[i]=1 and TIME>185500 then
                                 begin
                                           SELL(1,手数,MARKET);
                                         pc:=1;
                                         p[i]:=5;
                                         end
                                         //收盘平仓
                                          if p[i]=2 and TIME>185500 then
                                           begin
                                                   SELL(1,手数,MARKET);
                                                   pc:=1;
                                                   p[i]:=5;
                                           end
                                           //收盘平仓
                                           end end
                                           n1:=BARSLAST(pc=1)+1;
                                           IF valid(n1)=0 OR n1>N then n2:=N;
                                           else n2:=n1 ;
                                           zg:=HHV(c,N2);
                                            IF N3>0 THEN BEGIN
                                                    for i=1 to n3 do
                                            begin if p[i]=0 and close<zg-a/4 and time<185000 then
                                             begin BUY(1,手数,MARKET);
                                             for j=i to n3 do p[j]:=4;
                                             o_r:=zg-a/4;
                                             s_g:=o_r+a/8;
                                             o_m:=o_r-a/4;
                                             p:=1;
                                              end end end IF N3=0 THEN BEGIN if c<zg-a/4 and time<185000 then
                                               begin
                                               BUY(1,手数,MARKET);
                                               o_r:=zg-a/4;
                                               s_g:=o_r+a/8;
                                               o_m:=o_r-a/4;
                                               p:=1;
                                               end end
回复

使用道具 举报

37

主题

9933

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-2-7 12:54 | 显示全部楼层
本帖最后由 技术006 于 2022-2-7 12:59 编辑

金字塔中的pel基本用不到循环和数组。除非特殊需要。
自己在k线图上右键加载的这个公式,选择回测再看结果。还是那句话,和回测对比,必须数据量一样,要不就按照你这个公式看,信号不可能一样的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

31

主题

75

帖子

75

积分

等级: 免费版

注册:
2022-1-7
曾用名:
 楼主| 发表于 2022-2-7 13:08 | 显示全部楼层
我确定我先在K线上面加入了该公式,然后才进行策略回测,你看看,这个回测,明显K线上面K线的开平次数好几次,结果报表里面好几次,您看看这个怎么解决呢?
截图202202071307543851.png
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-2-7 13:35 | 显示全部楼层
你这个代码 信号和起始位置 是有很大关联的。起始位置一变,信号就变位置了。

你可以限定下图表K的起始位置再操作。
截图202202071335524164.png
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-25 04:45 , Processed in 0.164167 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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