金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 27786|回复: 112

取交叉值问题,麻烦老师帮忙修正一下

[复制链接]

15

主题

136

帖子

136

积分

Rank: 2

等级: 标准版

注册:
2021-12-10
曾用名:
发表于 2022-2-16 14:54 | 显示全部楼层 |阅读模式
          Rsv := ( close-llv( low,9 ) )/( hhv( high,9 )-llv( low,9 ) )*100 ;
         
            K : sma( rsv,3,1 ) ;
            D : sma( k,3,1 ) ;   
            J := 3*k-2*d ;

我采用如下三种方式表述:
     
       RkdJx := ref( D,barslast( ref( cross( K,D ),1 ) ) ) ;         // 有闪烁和数值偏移向前
      
             Sx : ref( D,barslast( ref( cross( D,k ),1 ) ) ) ;        // 有闪烁和数值偏移向前

           rkd : ref( D,cross(D,K) ) ;    //  行不通


现在想取得KDJ 死叉的  D 值,我尝试过以下两种方法,发现如下两个问题,1、有指标数值闪烁( 容易造成信号闪烁 ) 问题,2、取值不准确,理应死叉那一根的数值,,而取到的是下一根,就是往后推一根的数值

麻烦老师帮忙修改或者给一个准确的取值方法,谢谢





补充内容 (2022-2-16 15:01):
  Sx : ref( D,barslast( ( cross( D,k ) ) ;       Sx 是这样表述的
回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-2-16 15:10 | 显示全部楼层
没必要用ref
RkdJx : ref(D,barslast( cross( K,D )));         // 有闪烁和数值偏移向前

直接取就行了。这样自然不会偏移了。

这种怎么可能会闪烁了,它始终取的最近一次满足条件时候的d值。  如果值变了,那就是说明 k,d又经历了一次上下穿的过程了。自然取值会变。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

15

主题

136

帖子

136

积分

Rank: 2

等级: 标准版

注册:
2021-12-10
曾用名:
 楼主| 发表于 2022-2-16 15:19 | 显示全部楼层
谢谢老师,可能是我这边表述不行
试过:
         RkdJx : ref( D,barslast( ref( cross( K,D ),1 ) ) ) ;              
         
             Sx : ref( D,barslast( ( cross( D,k ) ) ) ;        

           Rkd : ref( D,cross(D,K) ) ;   

这几种表述,都取不到准确值,在死叉的那根K线, 就是 要穿 不穿 的区间价格跳动的时候, 取值也跟着跳动,直到 下一根确定穿下去了,才固定值,但是已经是取到下一根了

晚上我开盘的时候,我再跟着行情 试试一下老师 给的表述  :RkdJx : ref(D,barslast( cross( K,D )));    谢谢老师
回复

使用道具 举报

20

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-2-16 15:28 | 显示全部楼层
我知道你的意思。行情变动时候就是无法稳定取值的。因为行情在变,而K线上始终取最新的c进行计算,因此也会影响到上下穿的判断从而影响到取值。  这时候是没有稳定的值给你取的呀。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

15

主题

136

帖子

136

积分

Rank: 2

等级: 标准版

注册:
2021-12-10
曾用名:
 楼主| 发表于 2022-2-16 17:18 | 显示全部楼层
技术009 发表于 2022-2-16 15:28
我知道你的意思。行情变动时候就是无法稳定取值的。因为行情在变,而K线上始终取最新的c进行计算,因此也会 ...

老师,还请教一个问题,就是取 KDJ  死叉区间 里边 J 的最低值问题,为什么我取到的的为什么不是平滑的线,表述是这样的:

    hhvkdj : hhv( ref( J,1 ),barslast( cross( K,D ) ) ) ;      // 求 上一个 金叉 以来, J 的最高值是多少

麻烦老师帮忙修改一下,实现计算 每一个金叉区间里 J 的最高值是多少,谢谢了
回复

使用道具 举报

34

主题

9187

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2022-2-16 18:07 | 显示全部楼层
n1:sumbars(k>d and ref(k<d,1),1);//金叉
n2:sumbars(k<d and ref(k>d,1),1);//死叉



上一个死叉的最低价:ref(llv(j,n2),n1);
上一个金叉的最高价:ref(hhv(j,n1),n2);

死叉:llv(j,n2);
金叉:hhv(j,n1);

IF k>d then BEGIN
        hhj:=金叉;
        llj:=上一个死叉的最低价;
END

IF k<d then BEGIN
        llj:=死叉;
        hhj:=上一个金叉的最高价;
END

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

使用道具 举报

15

主题

136

帖子

136

积分

Rank: 2

等级: 标准版

注册:
2021-12-10
曾用名:
 楼主| 发表于 2022-2-16 18:16 | 显示全部楼层
技术006 发表于 2022-2-16 18:07
n1:sumbars(k>d and ref(kd then BEGIN
        hhj:=金叉;
        llj:=上一个死叉的最低价;

老师,有没有表述较为简单的那种,像我写那种 可以直接用在策略当中的,不会造成太多运算负担,像这个表述太复杂的了
回复

使用道具 举报

34

主题

9187

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

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

使用道具 举报

15

主题

136

帖子

136

积分

Rank: 2

等级: 标准版

注册:
2021-12-10
曾用名:
 楼主| 发表于 2022-2-16 18:55 | 显示全部楼层

谢谢老师帮忙
回复

使用道具 举报

15

主题

136

帖子

136

积分

Rank: 2

等级: 标准版

注册:
2021-12-10
曾用名:
 楼主| 发表于 2022-2-18 15:32 | 显示全部楼层
老师帮忙进一步修改一下代码

  
      runmode : 0 ;
      
     variable :  G_start = 0, G_num = 0  ;
  
// 父源指标组

                Diff : ema( close,12 ) - ema( close,26 ) ;

                Dea  : ema( diff,9 ) ;

                Macd : 2 * ( diff - dea ), colorstick;

          if  cross( 0,macd ) then begin

                 G_start := 1 ;
                   G_num := 0 ;

             end

         if g_start = 1 and macd < 0 then G_num := G_num+1 ;

              if macd > 0 and G_start = 1 then begin

                 G_start := 0 ;
            
                end

              K_num := G_num  ;

现在我想计算一下 macd < 0 区间当中的 KDJ 指标的 D 最低值

          Rsv := ( close-llv( low,9 ) )/( hhv( high,9 )-llv( low,9 ) )*100 ;
         
            K := sma( rsv,3,1 ) ;
            D := sma( k,3,1 ) ;   
             J := 3*k-2*d ;
            
            
            llvD : if( macd < 0,llv( D, K_num ),0 ) ;

然后得出的就是这样的图, macd 小于 0 的时候,就是准确得出,macd > 0 时,就归零

   现在想请教一下老师绘图方面的,, 就是  macd < 0 的时候开始 绘制(计算) D 的最低值, 一旦  macd > 0 时,就不进行绘制, 指标上也不显示 D 值, 也不归 0 ,

就是只要求 macd 小于 0 才计算,显示出来, 不满足条件就不显示D值
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 19:46 , Processed in 0.277623 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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