金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
123
返回列表 发新帖
楼主: 代人发帖

如何取得之前第一个最高价>现在最低价*(1+N%)的值或周期?

[复制链接]

1

主题

15

帖子

15

积分

Rank: 1

等级: 新手上路

注册:
2023-4-15
曾用名:
发表于 2023-9-18 18:17 | 显示全部楼层
思路是這樣:
1.先設一个周期数ZQ(一般100以内,现假设30),求得这个周期的最高价QG1和最低价QD1;再求得这个最高价和最低价到当前的周期(ZG1ZQ和ZD1ZQ);
这两个周期的值大小不同,也是一个在前,一个在后。
A:
2.如果QG1ZQ>QD1ZQ,低点周期小,靠后。这时求得周期ZD1ZQ到当前的最高价为次高价YGJ,和最低价为次低价YDJ;
3.到这个次高价YGJ*(1-N3/100)>最低价QD1,则这个最低价QD1就可以确定为波谷 BG:=QD1;
4.波谷确定寻找波峰,当次高价YGJ*(1-N3/100)>次低价YDJ时,则波峰BF:=YGJ;
5.同时重设周期数为ZQ:=QD1ZQ;

B.
6.如果QG1ZQ<QD1ZQ,高点周期小,靠后;逻辑与前面一样:这时求得周期ZG1ZQ到当前的最低价为次低价YDJ,和最高价为次高价YGJ;
7.到这个次低价YDJ<(1-N3/100)*最高价QG1,则这个最高价QG1就可以确定为波谷峰BF:=QG1;
8.波峰确定寻找波谷,当次高价YGJ*(1-N3/100)>次低价YDJ时,则波谷BG:=YDJ;
9.同时重设周期数为ZQ:=QG1ZQ;
.....如此循环

老师,不知我说明白没有,这样的思路能实现吗?
回复

使用道具 举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-9-19 15:39 | 显示全部楼层
抱歉,实现不了您的需求
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

1

主题

15

帖子

15

积分

Rank: 1

等级: 新手上路

注册:
2023-4-15
曾用名:
发表于 2023-9-22 11:12 | 显示全部楼层
您好老师,这个怎么总显示-1去了?


为了解决我的需要,看来还是要用您这个方法。
可以找到“之前第一个最高价>现在最低价*(1+N%)的值和周期”,那也可以找到“之前第一个最低价>现在最高价*(1-N%)的值或周期”;

我要同时得到这两个就可以了。
老师,是不是这样改的?




另外,这种思路有什么参考价值吗?





麻烦您帮我写一下了,老师!!非常感谢!!!


补充内容 (2023-9-22 11:25):
现在showbarpos得到的是前面数过来的位置吧?能否逆序取得这个值到当前的周期数?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号? 微信登录

x
回复

使用道具 举报

37

主题

1万

帖子

6万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2023-9-25 14:23 | 显示全部楼层
抱歉,能力有限,实现不了你的需求。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-9-26 14:05 | 显示全部楼层
1.  23楼 那个代码那样修改是可以的。之所以返回-1,就是没有结果。你在小周期上,数据量不够你未必能找到 满足幅度的K。换到日线上应该明显点。

2.后面截图的其他平台的代码没什么借鉴意义的,它那个思路也只是找到最近的满足幅度的K。

3.  21楼那个思路的问题在于,我们PEL里代码执行是从历史位置到当前位置的。所以我们前面的确是采用循环找到符合 位置的K,但也仅仅如此了,我们无法对这个历史K位置做任何标记,比如标记为波峰或者波谷来作为后面计算的基础。所以这个才是其中一个绕不开的问题。而且这种统计也会随着最新K价格变动而不断变化的,我在今天判断出今天是高点,可能到明天按照最新价格判断,明天是更高点,所以这个波峰波谷在最新K的位置 本身就不稳定,没有确定性,这又是一个问题所在,实际交易时候这种情况你信号是不稳定的。

系统自带的zig函数 是系统底层实现的函数,差不多是你那个思路,你可以观察下它那个情况,它其实波峰波谷是不稳定的。

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

使用道具 举报

1

主题

15

帖子

15

积分

Rank: 1

等级: 新手上路

注册:
2023-4-15
曾用名:
发表于 2023-9-26 15:19 | 显示全部楼层
老师您好,谢谢您耐心解答!
您之前2楼提供的代码,我现在怎么调参数都还是显示-1,是为什么呢?我截图给您看看:
javascript:;



补充内容 (2023-9-26 15:29):
老师,就麻烦您写一个同时找到这两个的代码给我吧。谢谢了!
就是“找到“之前第一个最高价>现在最低价*(1+N%)的值和周期”,并找到“之前第一个最低价>现在最高价*(1-N%)的值或周期”
万分感谢!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号? 微信登录

x
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-9-26 15:42 | 显示全部楼层


模式不对吧。要逐K模式。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号? 微信登录

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

使用道具 举报

1

主题

15

帖子

15

积分

Rank: 1

等级: 新手上路

注册:
2023-4-15
曾用名:
发表于 2023-9-26 15:43 | 显示全部楼层
老师,麻烦您写一个同时找到这两个位置的代码给我吧,谢谢了!!

就是“显示“之前第一个最高价>现在最低价*(1+N%)的值和周期”,并同时显示“之前第一个最低价>现在最高价*(1-N%)的值和周期。
万分感谢!!!
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2023-9-26 15:48 | 显示全部楼层
[PEL] 复制代码
//n:=10;
//
//hlen:hhvbars(h,n),nodraw;
//h1:=hhv(h,n);
//
//l1_len:=n-hlen;
//
//left_lindex:0,nodraw; //最大值左侧最小值的k线位置
//left_minl:0,nodraw;//最大值左侧的最小值
//
//right_lindex:0,nodraw; //最大值右侧最小值的k线位置
//right_minl:0,nodraw;//最大值右侧的最小值
//
//
//v1:=llvbars(l,hlen);
//v2:=llv(l,hlen);
////要排除掉n根k内 第一个或者最后一个k是最大值的情况
//if hlen<n-1 and hlen>0  then 
//begin
//for i=l1_len+1 to  n-1 do 
//begin 
//if left_minl=0 then left_minl:= l[barpos-i];
//
//if l[barpos-i]<left_minl then 
//begin
//left_lindex:=i;
//left_minl:=l[barpos-i];	 
//end 	
//end
//
//right_lindex:=v1;tenterbars
//right_minl:=v2;
//end 

N:=3;
currentl:=rounds(l*(1+N/100),1);//做个小数点的处理,这样就能比较了。否则几乎不可能有相等的值。
 
ctr:=1;//控制循环
index:=barpos-1;//当前k的前一个位置
while ctr do
begin
if currentl<=H[index] or index<0 then
begin
ctr:=0;
end       
index:=index-1;
end
 
 
showbarpos1:index+1,nodraw;//返回的是满足条件的k线位置的序号。如果返回值是-1  说明前面没有找到这样的k线位置。
 
//对历史位置取值
r1:if(showbarpos1<>-1,h[showbarpos1],drawnull),nodraw;


M:=3;
currenth:=rounds(H*(1-M/100),1);
 
ctr:=1;//控制循环
index:=barpos-1;//当前k的前一个位置
while ctr do
begin
if currenth>=l[index] or index<0 then
begin
ctr:=0;
end       
index:=index-1;
end
 
 
showbarpos2:index+1,nodraw;//返回的是满足条件的k线位置的序号。如果返回值是-1  说明前面没有找到这样的k线位置。
 
//对历史位置取值
r2:if(showbarpos2<>-1,l[showbarpos2],drawnull),nodraw;
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-31 05:00 , Processed in 0.132192 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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