金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 176|回复: 2

如何根据数组元素在K线上进行高低点标记?

[复制链接]

3

主题

6

帖子

6

积分

Rank: 1

等级: 新手上路

注册:
2025-6-6
曾用名:
发表于 2025-6-17 08:38 | 显示全部楼层 |阅读模式

通过python代码计算缠论高低点,然后将缠论高低点保存到了pel语言的czsc_bars数组中,数组元素的索引值和barpos的取值一一对应,当数组元素值是1时表示高点,-1时表示低点,其余元素值是0;在最后一根K线时,如何根据数组元素的高低点在K线上标记"●";下面是我的代码,最后在渲染高低点标记时不生效;问题:如何正确的进行高低点标记?

[PEL] 复制代码
N:=5;

WARNING_DISABLE:11;//禁止提醒

//调用缠论技术指标,获取最后一笔的顶底分型
Py_Import czsc_ind_v2;

size:=DATACOUNT+1;

//数组定义,数组元素取值:-1表示低点,1表示高点,无信号0
VARIABLE:czsc_bars[size]:=0;

//触发Python中的Handle_bar方法
FIREPYHANDLEBAR;

//是否最后一根K线
czsc_bars_end:=GETPYTHONVAL('czsc_bars_end'); 
//高点索引:最近一个高点索引,若倒数3根K线是高点,则返回3
high_index:=GETPYTHONVAL('high_bar_index'); 
//低点索引:最近一个低点索引,若倒数5根K线是低点,则返回5
low_index:=GETPYTHONVAL('low_bar_index');

//默认设置成0
czsc_bars[BARPOS]:=0;

//设置高点元素的值,设置为1
if HIGH_INDEX > 0 THEN BEGIN
	index:=BARPOS-HIGH_INDEX;
	czsc_bars[index]:=1;
	MSGOUT(HIGH_INDEX > 0, NUMTOSTR(BARPOS, 0)&': index = '&NUMTOSTR(index, 0)&' : val = '&NUMTOSTR(czsc_bars[index], 0));
END	

//设置高点元素的值,设置为-1
if low_index > 0 THEN BEGIN
	index:=BARPOS-low_index;
	czsc_bars[index]:=-1;
	MSGOUT(low_index > 0, NUMTOSTR(BARPOS, 0)&': index = '&NUMTOSTR(index, 0)&' : val = '&NUMTOSTR(czsc_bars[index], 0));
END	

//问题渲染高低点不生效,如何根据数组元素中的1和-1进行正确的渲染?
if czsc_bars_end=1 then BEGIN
	MSGOUT(czsc_bars_end=1, NUMTOSTR(czsc_bars[BARPOS], 0));
	
	for index=1 to DATACOUNT-1 do begin
		if czsc_bars[index] > 0 THEN BEGIN
			MSGOUT(index > 0, 'high index ='&NUMTOSTR(index, 0));
			//这里渲染高点不生效,如何正确的渲染?
			drawtext(index > 0 and BARPOS=index, H[index]+50, '●', COLORGREEN), ALIGN0;
		END	
		
		if czsc_bars[index] < 0 THEN BEGIN
			MSGOUT(index > 0, 'low index ='&NUMTOSTR(index, 0));
			//这里渲染低点不生效,如何正确的渲染?
			drawtext(index > 0 and BARPOS=index, L[index]-50, '●', COLORRED), ALIGN0;
		END		
	end
		
END	

回复

使用道具 举报

21

主题

1万

帖子

1万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
FireScript
发表于 2025-6-17 11:29 | 显示全部楼层
这个方式是错误的。

你要处理的是在py中填充一个数组,你在PEL里是行不通的。你在py模块里填充好,pel做调用就行了。
金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

3

主题

6

帖子

6

积分

Rank: 1

等级: 新手上路

注册:
2025-6-6
曾用名:
 楼主| 发表于 2025-6-17 15:05 | 显示全部楼层
技术009 发表于 2025-6-17 11:29
这个方式是错误的。

你要处理的是在py中填充一个数组,你在PEL里是行不通的。你在py模块里填充好,pel做 ...

帮忙回复一下这个帖子,我在微信群里的提问:https://www.weistock.com/bbs/for ... &extra=page%3D1

我想从python模块里面返回一个数组到pel中使用,数组里面就是3种类型的值,0/1/2; 我应该用下面哪种方案

方案一: 先在pel里面定义一个数组,传进py,在python里面赋值,最后返回pel中使用
方案二: 在python里面直接定义list,赋值后,然后在pel里面直接获取出来使用


我其实自己2个方案我自己都试了,没试成功;官方我也仔细研究了,也没有例子,只能提问了;大模型也试了,给的例子都不行;最好能提供一个示例写法,非常感谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-30 21:01 , Processed in 0.159179 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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