输入/搜索内容
欢迎使用优宽量化交易平台
编程语言
JavaScript
TypeScript
Python
C++
My语言(麦语言)
PINE语言
Blockly可视化
Workflow工作流
支持的协议
密钥安全性
实盘
策略库
托管者
部署托管者
一键租用托管者
手动部署托管者
托管者操作注意事项
全局指定IP地址
命令行版本托管者程序的参数
实盘数据迁移
托管者监控
交易所
策略编辑器
回测系统
策略入口函数
策略框架与API函数
模板类库
策略参数
交互控件
商品期货
期权交易
股票证券
C++策略编写说明
JavaScript策略编写说明
内置库
扩展API接口
MCP 服务
交易终端
数据探索
Alpha因子分析工具
调试工具
远程编辑
完整策略的导入与导出
多语言支持
实盘、策略分组
实盘展示
策略分享与出租
实盘消息推送
实盘报错、异常退出的常见原因
交易所特殊说明、兼容记录

模板类库是优宽量化交易平台中可复用的代码模块,属于策略代码的一种类别。优宽量化交易平台支持模板类库功能的编程语言包括:JavaScriptPythonC++Blockly可视化。创建策略时,如果将类别设置为模板类库,系统会在当前登录账号的策略库中创建一个模板类库。创建完成后,该类别无法再修改为普通策略。

创建模板类库页面

导出函数是模板类库的接口函数,可被引用该模板类库的策略调用。

示例

  • 不同编程语言的模板类库编写格式有所不同,以下是导出函数在模板类库中声明和实现的示例代码:

    javascript
    /* -- 策略引用该模板以后直接用 $.Test() 调用此方法 -- main 函数在策略中不会触发, 只做为模板调试的入口 */ $.Test = function() { Log('Test') } function main() { $.Test() }
    python
    def Test(): Log("template call") # 导出Test函数, 主策略可以通过ext.Test()调用 ext.Test = Test
    c++
    // 策略引用该模板以后直接用 ext::Test() 调用此方法 void Test() { Log("template call"); }
  • Blockly可视化方式编写的策略可通过JavaScript语言的模板类库实现类库功能,请使用以下格式编写。

    javascript
    /*blockly { "type": "ext_testA", "message0": "testA|testA", "template": "function(){return 99;}()", "order": "ORDER_ATOMIC", "output": "Number" },{ "type": "ext_MA", "message0": "MA 周期 %1| MA Period %1", "args0": [{ "type": "input_value", "check": "Number" }], "template": "(function(){var r = exchange.GetRecords(); return (!r || r.length < %1) ? false : TA.MA(r, %1); })()", "order": "ORDER_ATOMIC", "output": null, "colour": 85 } */

模板类库可以设置自己的界面参数,这些参数在模板类库代码中以全局变量的形式使用。

例如,我们设置了一个模板类库的参数:

模板参数

策略代码中参数的变量名策略界面上显示的参数名称类型默认值
param1模板参数1数字型(number)99

示例

  • 用于测试param1参数的模板类库代码:

    javascript
    $.SetParam1 = function(p1) { param1 = p1 } $.GetParam1 = function() { Log("param1:", param1) return param1 }
    python
    def SetParam1(p1): global param1 param1 = p1 def GetParam1(): Log("param1:", param1) return param1 ext.SetParam1 = SetParam1 ext.GetParam1 = GetParam1
    c++
    void SetParam1(float p1) { param1 = p1; } float GetParam1() { Log("param1:", param1); return param1; }
  • 引用上述模板类库示例的策略代码,使用模板类库的导出函数获取参数param1并修改参数param1

    javascript
    function main () { Log("调用$.GetParam1:", $.GetParam1()) Log("调用$.SetParam1:", "#FF0000") $.SetParam1(20) Log("调用$.GetParam1:", $.GetParam1()) }
    python
    def main(): Log("调用ext.GetParam1:", ext.GetParam1()) Log("调用ext.SetParam1:", "#FF0000") ext.SetParam1(20) Log("调用ext.GetParam1:", ext.GetParam1())
    c++
    void main() { Log("调用ext::GetParam1:", ext::GetParam1()); Log("调用ext::SetParam1:", "#FF0000"); ext::SetParam1(20); Log("调用ext::GetParam1:", ext::GetParam1()); }

策略引用模板类库时,需要当前登录的优宽量化交易平台账号的策略库中有可用的模板类库。在策略编辑页面的模板栏中勾选需要引用的模板,保存策略后即可完成引用。

模板引用截图