金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 5670|回复: 14

思路求助

[复制链接]

55

主题

179

帖子

179

积分

等级: 免费版

注册:
2021-11-18
曾用名:
发表于 2022-8-25 14:23 | 显示全部楼层 |阅读模式
我有个思路,就是过去N根K线(需要用到过去2N根的数据),求出N根上的N周期均线。例如说,N=60,就在过去60根K上,先求得MA60的值。

然后我是要检测这个条件。这60条K线,不会出现连续1/3的K线(就是20条)都都一起出现在一侧。也就是说这条均线会把K线切得比较散,不会出现一边有连续1/3部分的情况
这个应该用什么思路写吗?
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-8-25 14:47 | 显示全部楼层
什么叫出现在一侧。收盘价在均线之上?  这种没啥意义吧。任意一个K必然是收盘价在均线上 或者下。这个1/3应该是很容易就有的吧。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

55

主题

179

帖子

179

积分

等级: 免费版

注册:
2021-11-18
曾用名:
 楼主| 发表于 2022-8-25 14:55 | 显示全部楼层
我就是要判断,不能有连续1/3的K线,都出现在均线的一侧(上或者下)。
起因是说,要这60K,比较散的分布在两侧的,所以提炼这个特征,要求一侧不能连续出现1/3的K线数量,但是不知道怎么具体描述。想求助
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-8-25 14:59 | 显示全部楼层
你先给出这个具体定义的。比如怎样才算在K线上,怎样才算在K线下侧,除了上下侧之外是否有其他情况。这些你都要提供的。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

55

主题

179

帖子

179

积分

等级: 免费版

注册:
2021-11-18
曾用名:
 楼主| 发表于 2022-8-25 15:07 | 显示全部楼层
movavg:=ma(c,60);

上侧就是C>=movavg,下侧就是C<movavg,没有其他情况

然后不考虑60根之前的数据。例如现在是第100根,则考察41~100根的任务,假如51~60在下侧,边缘的41~50是在上侧,但是20~40也是上侧,但20~40是不纳入考虑的。仅考虑41开始的部分





回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-8-25 15:22 | 显示全部楼层
是连续在均线上或者下?

但是这种 我连续2根也是连续呀。你是要找最长的那个连续的一段是否超过1/3?
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

55

主题

179

帖子

179

积分

等级: 免费版

注册:
2021-11-18
曾用名:
 楼主| 发表于 2022-8-25 15:36 | 显示全部楼层
是的,就是最长的连续,不能超过这根均线长度的1/3,这样能间接达到比较平均分布在两侧的需求。
回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2022-8-25 16:12 | 显示全部楼层
不是很好弄。

[PEL] 复制代码
ma60:ma(c,60);


VARIABLE:up:=0,down:=0;

if c>ma60 then 
begin 
up:=up+1;
down:=0;
end 



if c<ma60 then 
begin 
up:=0;
down:=down+1;
end 

show1:up;
show2:down;


只能用全局变量 记录连续周期数。但是你这个是要统计60周期内的。也不能直接对这个全局变量的值做统计,还要想办法 扣掉从60周期外延续过来的部分。先给出这一部分代码,后面的我再想想办法。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

55

主题

179

帖子

179

积分

等级: 免费版

注册:
2021-11-18
曾用名:
 楼主| 发表于 2022-8-25 16:28 | 显示全部楼层
那能不能说,记录当前的K的pos,然后从pos -40的位置开始到最后一个K(可能用 for语句?),每一个K都检查,向前回溯20个周期,是否都是同一侧?
这个我不知道在PEL里面该如何写
回复

使用道具 举报

55

主题

179

帖子

179

积分

等级: 免费版

注册:
2021-11-18
曾用名:
 楼主| 发表于 2022-8-25 17:14 | 显示全部楼层
VARIABLE:up:=0,down:=0;

N:=60;
movavg:=ma(close,N);
len:= Intpart(N/3);
mark := 1;

maN:ma(c,N);

if c>maN then
begin
up:=up+1;
down:=0;
end

if c<maN then
begin
up:=0;
down:=down+1;
end

check_len:= N-len;
/
//黄色光标停在这里,说语句缺少分号,是for语句有问题吗?

FOR i = 1 to check_len DO
BEGIN
        if ref(up,i)>=len or ref(down,i)>= len THEN
                BEGIN
                        mark :=0
                        break;
                END
END



补充内容 (2022-8-25 17:18):
我是按照版主的程序,然后想回溯当前的40根(里面用check_len表示),看看每根上面记录的数字,有没有大于20的,有的话,就设置mark=0.
那么结果就是mark=1时候,符合,mark=0时候,不符合

补充内容 (2022-8-25 17:49):
是  if ref(up,i)>=len or ref(down,i)>= len THEN   这里没有加括号
加上后就好了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-8 00:04 , Processed in 0.136048 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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