资源加载中... loading...

编程语言

在优宽量化交易平台,可以用哪些编程语言实现我的策略呢? 支持的编程语言 优宽量化交易平台支持JavaScriptTypeScriptPythonC++PINEMy语言Blockly可视化编写设计策略。

JavaScript

支持JavaScript语言,集成了以下JavaScript库:

程序异常报错、接口业务报错 在JavaScript语言策略中,发生程序异常报错或接口业务报错时,错误日志将显示策略代码中发生错误的具体行号,方便策略调试与BUG排查。

TypeScript

支持TypeScript语言,在策略创建时依然设置为JavaScript策略,然后在策略代码开头写入// @ts-check或者点击策略编辑区域右上角的按钮「TypeScript」,即可切换到TypeScript。平台将自动识别代码为TypeScript,并为您提供相应的编译和类型检查支持:

  • 类型安全:TypeScript的静态类型检查功能可以帮助您在编写代码时发现潜在的错误,提高代码质量。
  • 代码自动补全:TypeScript的类型系统使得您在编写代码时可以更快地找到所需的属性和方法,提高开发效率。
  • 更清晰的代码结构:使用TypeScript,您可以更好地组织和维护您的代码,使其易于阅读和理解。
  • 强大的面向对象编程特性:TypeScript提供了诸如接口、类、泛型等强大的面向对象编程特性,帮助您编写更加健壮、可重用的策略代码。

Python

  • 设置Python策略程序使用的Python解释器

    使用Python编写的策略,回测或实盘时如果托管者所在系统环境同时安装了Python2和Python3,可以在策略开始第一行设置策略运行时启动的Python版本。例如:#!python3#!python2,这样系统就会自动查找解释器。也可以指定绝对路径,例如:#!/usr/bin/python3

  • 基于Python的策略安全性

    在优宽量化交易平台上开发策略,策略只有优宽量化交易平台账户的持有者可见。并且在优宽量化交易平台上可以实现策略代码的完全本地化,例如把策略封装成一个Python库,在策略代码中加载,这样就实现了策略代码本地化。

    Python代码的安全性:

    因为Python是开源且极易被反编译的语言,如果策略非自用而是出租,担心策略泄漏可让策略运行于自己布署的托管者上并以子账号或全托管管理这种形式出租。

    Python策略代码加密:

    默认情况下,Python策略代码作者自用时不加密,租出给他人使用时加密。在Python策略开头编辑如下代码,可以指定自用或者租出Python策略运行时是否加密策略代码。支持策略代码加密的Python版本为:Python 2.7版本、Python 3.5版本、Python 3.6版本。

    • 策略作者自己运行、通过注册码给他人使用时,均加密策略代码:

      使用代码#!python为指定Python解释器版本,之后使用逗号,间隔。输入加密指令encrypt。如果不指定Python版本,可以直接添加#!encrypt

      #!python,encrypt
      

      #!encrypt
      
    • 策略作者自己运行、通过注册码给他人使用均不加密策略代码:

      #!python,not encrypted
      

      或者

      #!not encrypted
      

    判断Python策略代码加密是否生效,使用代码os.getenv('__FMZ_ENV__'),返回字符串"encrypt"说明已经生效。仅实盘有效,回测不会加密Python策略代码。

    #!encrypt
    def main():
        ret = os.getenv('__FMZ_ENV__')
        # 打印变量ret为字符串encrypt或者ret == "encrypt"为真,即代表加密生效
        Log(ret, ret == "encrypt")
    

C++

平台支持C++编程语言,支持C++ 11标准。C++语言的策略会预先编译然后执行,回测系统中C++语言的策略是在回测系统的C++回测服务器上运行;实盘运行环境中C++语言的策略编译通过后基于托管者运行。 使用C++编程语言和C++ 11标准,您可以在优宽量化交易平台上开发强大且高效的交易策略。利用C++的现代特性,您可以构建灵活、可扩展的交易算法,实现自动化交易。

集成了以下C++库:

My语言(麦语言)

平台支持My语言(麦语言)编写、设计策略,兼容文华麦语言的大部分语法、指令、函数。My语言鼓励积木式编程,将复杂算法拆解成函数。通过简洁的语法、专用数据结构和强大金融函数库,支持复杂金融逻辑应用。以模块化方式构建应用,提升效率和可维护性。

My语言策略范例:基于平移布林通道的系统

M := 12;        // 参数范围 1, 20
N := 3;         // 参数范围 1, 10
SDEV := 2;      // 参数范围 1, 10
P := 16;        // 参数范围 1, 20
// 该策略为趋势跟踪交易策略,适用较大周期,如日线。
// 该模型仅用作模型开发案例,依此入市,风险自负。
////////////////////////////////////////////////////////
// 平移BOLL通道计算
MID:=MA(C,N);               // 计算中轨
TMP:=STD(C,M)*SDEV;         // 计算标准差
DISPTOP:=REF(MID,P)+TMP;    // 平移BOLL通道上轨
DISPBOTTOM:=REF(MID,P)-TMP; // 平移BOLL通道下轨
// 系统入场
H>=DISPTOP,BPK;
L<=DISPBOTTOM,SPK;
AUTOFILTER;

PINE语言

平台支持、兼容Trading View的PINE语言脚本。PINE语言是一种轻巧却功能强大的策略设计编程语言,用于创建可进行回溯测试、实盘交易的指标和策略,蓬勃发展的社区更创作了超过10万个PINE脚本。

用户能够轻松地获取和应用各种技术分析和交易策略;可以借助社区脚本快速实现自己的交易想法,无需从零开始编写代码,从而大大缩短了开发周期;帮助新手和经验丰富的交易员学习和理解不同的技术指标、策略和编程概念。

PINE语言策略范例:超级趋势策略

strategy("supertrend", overlay=true)

[supertrend, direction] = ta.supertrend(input(5, "factor"), input.int(10, "atrPeriod"))

plot(direction < 0 ? supertrend : na, "Up direction", color = color.green, style=plot.style_linebr)
plot(direction > 0 ? supertrend : na, "Down direction", color = color.red, style=plot.style_linebr)

if direction < 0
    if supertrend > supertrend[2]
        strategy.entry("entry long", strategy.long)
    else if strategy.position_size < 0
        strategy.close_all()
else if direction > 0
    if supertrend < supertrend[3]
        strategy.entry("entry short", strategy.short)
    else if strategy.position_size > 0
        strategy.close_all()

Blockly可视化

平台支持Blockly可视化方式编程。借助Blockly编辑器,用户可以通过拼接图形块(类似积木)来表达代码概念。如变量、逻辑表达式、循环等,这种方式使得编程过程不再需要过多关注繁琐的语法细节,而是可以直接按照编程原则进行操作。通过图形块的排列组合,用户能够轻松理解编程逻辑,实现创意想法。非常适合培养策略设计兴趣,以便快速入门程序化、量化交易。

欢迎使用优宽量化交易平台 支持的协议