使用4个空格进行缩进,不使用制表符(Tab)。在运算符两侧、逗号后面和冒号后面添加空格
变量、函数和类名使用小写字母和下划线分隔,如my_variable。常量使用大写字母和下划线分隔,如MY_CONSTANT
该demo以5日单均线为例,步骤如下:
第一步是先调用data_init方法定义了一个空列表,并指定了一条均线buffer_line1作为输出对象;第二步是调用了data_calculate方法计算5日均线。
x#单均线案例
#初始化设置默认参数
#指标定义一条均线作为输出对象
def data_init(self):
self.buffer_line1 = [];
self.init_buffer("buffer_line1", "buffer_line1", "MULTI_LINE", "rgba(255, 0, 0, 1)");
#定义均线的计算方法,本例中以5日均线计算方式为例
def data_calculate(self, rates_total, time, open, high, low, close, volume):
for i in range(rates_total):
if i >= 4:
self.buffer_line1[i] = sum(close[i-4:i+1]) / 5;
首先在期魔方策略界面中,先点击指标列表,再点击[新增]进入新增分类窗口,输入文件名和注释说明后点击[确定]后成功创建新文件夹
(1)策略->指标列表 -> 新增按钮->新增指标弹窗->填写好指标名称,选择语言为“python”->点击确定按钮
(2)第一次使用编辑器的用户需先下载编辑器
(3)策略页面出现下载中进度条
(4)下载完成后会自动解压
(5)编辑器下载完自动解压后,vscode编辑器会自动出现系统自带的基础编程代码框架
(6)您可以根据您的需求进行编写代码,编写完成后在空白处右键,点击[python编译],若提示[编译成功!]则为正常,若编译提示失败,那么需要根据报错原因去对代码行进行筛查以解决问题
(7)解决好问题后,再次选择编译以验证查看是否提示编译成功,成功后即可返回软件运行
(8)如遇到缺失模块,找到安装目录下coder文件夹所在的位置,复制路径,使用命令:“xx\期魔方\coder\python3116\python.exe -m pip install xx模块”
与创建python指标的步骤基本一致:
策略->指标列表 -> 新增按钮->新增指标弹窗->填写好指标名称,选择语言为“My-Language”->点击确定按钮
点击确定后可以在指标列表中找到刚才新增的my-Language指标
行情页面使用指标:
编译成功的指标,可在行情->指标->自编指标中查看并渲染到K线图上展示效果
一个行情可以加载多个指标,您只需要继续点击加载别的指标即可,并在我的加载或行情左上方查看您添加的具体指标
任务页面使用指标:
在任务->启动任务->指标标识->指标面板->选择指标,应用指标在任务实时行情K线中
按照指标框架,先导入外置参数,再通过2个主要的结构方法函数定义指标的输出对象并进行相应的计算:
xxxxxxxxxx
# 外置参数
from pydantic import BaseModel
class Params()
#定义指标输出对象
def data_init():
#计算逻辑代码实现
def data_calculate():
指标文件主要由2个结构性函数构成,这2个函数开发者必须编写
(1)data_init()
函数功能:
初始化函数,设置基本参数
函数说明:
自定义指标输出的对象(如案例中的self)并对其进行初始化,每次启动只调用一次
参数 | 说明 | 类型 | 必填 |
---|---|---|---|
buffer_code | 指标键名 | str | 是 |
buffer_name | 序列名称 | str | 是 |
buffer_type | 序列类型,参考DrawStyle | str | 是 |
color | K线颜色(rgba格式) | str | 是 |
(2)data_calculate(rates_total, time, open, high, low, close, volume)
函数功能: 根据K线数据计算所需要的指标输出对象的值
函数说明:
a. 该函数提供以下7个参数用于计算指标,计算指标的具体过程由开发者自己编写
b. 当K线数据更新时,该函数会被同步调用一次,接收到最新的K线数据
c. 根据开发者编写的逻辑计算出指标输出对象的值,详情参照使用案例
参数说明:
参数 | 说明 | 类型 | 必填 |
---|---|---|---|
rates_total | 数据长度 | int | 是 |
time | K线的时间集合 | list | 是 |
open | K线的开盘价 | list | 是 |
high | K线的最高价 | list | 是 |
low | K线的最低价 | list | 是 |
close | K线的收盘价 | list | 是 |
volume | K线的成交量 | list | 是 |
指标文件中的功能性函数已封装好,这2个函数开发者直接调用即可
(1)init_buffer()
函数功能:
指标的计算对象创建方法
函数说明:
a. 该函数提供以下4个参数
b. 该函数用于创建指标计算对象,所有被创建的指标计算对象才能在data_calculate()函数中使用
参数说明:
参数 | 说明 | 类型 | 必填 |
---|---|---|---|
buffer_code | 指标键名 | str | 是 |
buffer_name | 序列名称 | str | 是 |
buffer_type | 序列类型,参考DrawStyle | str | 是 |
color | K线颜色(rgba格式) | str | 是 |
(2)is_init()
函数功能:
指标的判断是否为初始化状态方法,无参数
函数说明:
a. 返回自定义对象是否为初始化状态,返回True为初始化未完成状态,False为初始化已完成状态
b. 用户需要根据自身业务需求选择使用全量数据计算或增量数据计算
DrawStyle
定义指标输出对象在图表上显示的类型,本例为MULTI_LINE,以下参数作为目前主要实现的功能类型,后续有待丰富
参数 | 说明 | 类型 | 必填 |
---|---|---|---|
MULTI_LINE | 线条 | str | 是 |
MULTI_BAR | 柱体 | str | 是 |
MULTI_TEXT | 文字 | str | 是 |
MULTI_SVGICON | SVG图标集合 | str | 是 |
COLOR_KLINEK | 彩色K线 | str | 是 |
双均线指标案例:
在默认指标代码框架中,输出两条线,一条为5日均线,另一条为10日均线:
xxxxxxxxxx
def data_calculate(self, rates_total, time, open, high, low, close, volume):
#填充5日均线和10日均线
if self.is_init(): #初始化,计算所有数据
for i in range(rates_total):
#计算5日均线
if i >= 4: #确保有足够的数据点来计算5日均线
self.buffer_line1[i] = sum(close[i-4:i+1]) /5
#计算10日均线
if i >= 9: #确保有足够的数据点来计算10日均线
self.buffer_line2[i] = sum(close[i-9:i+1]) / 10
else: # 非初始化,计算最后一根K线数据
self.buffer_line1[-1] = sum(close[-5:]) / 5
self.buffer_line2[-1] = sum(close[-10:]) /10
(1)在代码编写时,一定要注意编写格式的规范性问题,这样在自己编写想要实现的指标逻辑时,计算机语言才能读懂您的语言
(2)上面给出的指标框架中,变量、函数和类名在使用情景下,最好使用一眼看上去就能通俗易懂的名称,如苹果(apple)
(3)在编写指标代码之前,一定要区分好是用MY语言编写还是用Python语言编写,否则代码行可能会编译失败而无法正常运行