在发明者量化平台如何使用My语言实现Dual Thrust交易算法

发布时间:2021-12-17 17:23:37 作者:柒染
来源:亿速云 阅读:206
# 在发明者量化平台如何使用My语言实现Dual Thrust交易算法

## 一、Dual Thrust算法简介

Dual Thrust是由Michael Chalek在1980年代开发的一种经典趋势跟踪策略,其核心思想是通过动态计算价格通道的上下轨,实现突破交易。该策略具有以下特点:

1. **多空对称**:通过相同的逻辑计算多头和空头触发阈值
2. **自适应波动率**:基于历史价格波动动态调整通道宽度
3. **趋势跟踪**:在突破时进场,适合趋势性行情

## 二、发明者量化平台环境准备

在FMZ(发明者量化)平台使用My语言实现前,需完成以下准备:

1. **注册账号**:访问FMZ官网完成注册
2. **创建机器人**:在"策略库"点击"新建策略"
3. **选择语言**:在编辑界面选择"My语言"(类JavaScript语法)
4. **绑定交易所**:配置API密钥并选择交易品种(如BTC/USDT)

```javascript
// 示例:基础框架代码
function main() {
    exchange.SetCurrency("BTC_USDT") // 设置交易对
    while(true) {
        onTick() // 主逻辑函数
        Sleep(60000) // 1分钟轮询
    }
}

三、关键参数定义

策略需要配置以下核心参数:

// 参数配置区
var N = 5       // 计算周期
var K1 = 0.5    // 多头系数
var K2 = 0.5    // 空头系数
var Lots = 0.1  // 交易数量

四、核心算法实现

1. 计算价格范围

function calculateRange() {
    var hh = TA.Highest(high, N)  // N周期最高价
    var hc = TA.Highest(close, N) // N周期收盘最高
    var lc = TA.Lowest(close, N)  // N周期收盘最低
    var ll = TA.Lowest(low, N)    // N周期最低价
    
    var range = Math.max(hh - lc, hc - ll)
    return {
        upper: open + K1 * range, // 上轨
        lower: open - K2 * range  // 下轨
    }
}

2. 交易信号生成

function checkSignal() {
    var bars = exchange.GetRecords()  // 获取K线数据
    if (!bars || bars.length < N) return
    
    var currentClose = bars[bars.length-1].Close
    var range = calculateRange()
    
    if (currentClose > range.upper && !position) {
        Log("触发多头信号")
        return "buy"
    }
    if (currentClose < range.lower && position) {
        Log("触发空头信号")
        return "sell"
    }
}

五、完整策略实现

function main() {
    exchange.SetContractType("swap")  // 设置为永续合约
    exchange.SetMarginLevel(10)      // 设置杠杆
    
    while(true) {
        var signal = checkSignal()
        var position = _C(exchange.GetPosition)
        
        if (signal == "buy") {
            exchange.Buy(-1, Lots)
        } else if (signal == "sell") {
            exchange.Sell(-1, Lots)
        }
        
        LogStatus(_D(), "最新价格:", _C(exchange.GetTicker).Last)
        Sleep(60000)
    }
}

// 包含前文所有函数...

六、策略优化方向

  1. 动态参数调整
// 根据波动率自动调整系数
var atr = TA.ATR(14)
K1 = 0.3 + atr * 0.01 
  1. 过滤机制
// 添加均线过滤
var ma = TA.MA(close, 20)
if (close < ma) return // 只做多头上方交易
  1. 仓位管理
// 动态仓位计算
Lots = _N(Account.Balance * 0.01 / close, 3) 

七、回测注意事项

  1. 选择高波动性品种(如加密货币、股指期货)
  2. 测试不同周期组合(N=3~10)
  3. 检查滑点影响(建议设置0.1%滑价)
  4. 注意参数过拟合风险

八、实盘部署建议

  1. 先进行3个月模拟盘测试
  2. 初始使用最小交易单位
  3. 设置每日最大亏损限额
  4. 定期检查策略适应性

”`

提示:完整代码需在FMZ平台回测验证,实际使用时需根据交易品种特性调整参数。建议结合止损机制(如追踪止损)增强策略稳定性。

推荐阅读:
  1. AI量化交易(一)——量化交易简介
  2. python语言有哪些就业方向

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

my

上一篇:MongoDB数据库常用表达式有哪些

下一篇:如何进行springboot配置templates直接访问的实现

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》