关于量化交易:基于TradingView进行交易策略回测

6次阅读

共计 1887 个字符,预计需要花费 5 分钟才能阅读完成。

基于 TradingView 进行交易策略回测

TradingView 大略是最业余、最弱小的图片工具, 不仅能够很不便的查看行情, 还能够图形化的查看策略回测后果。

首先看一下 TradingView 的界面(网页版)

左上部为 K 线图, 能够随便调整工夫周期以及增加各种指标, 除了内置指标, 还能够增加网友分享的指标、策略

左下部为编辑区, 能够编辑自定义的 Pine 脚本, 相干文档可参见:Pine 脚本语言参考手册

右上部为自选列表, 能够按不同的市场 (美股、港股、A 股) 增加自选

右下部为详情页面, 入选中某个标的时会显示相干详情

此外左侧边栏为画图工具, 右侧边栏为性能列表, 能够查看新闻、与网友交换等

交易策略

这里应用与后面在通达信中进行回测时雷同的策略:当 MACD 指标连涨三天且起涨点为近 20 天的最低值时买入; 当 MACD 指标连跌三天时卖出

交易评测

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © GreedyAlpha

// 1. 申明 Pine 脚本的版本
//@version=5
// 2. 定义策略, 包含策略名称、初始资金等, 残缺的参数列表能够在界面内按下 ⌘ 键后再用鼠标点击某个函数的形式跳转到文档页
strategy("MACD", overlay=true, initial_capital=10000, max_labels_count = 500)

// 3. 设置用于回测的工夫窗口
// 为与后面通达信回测时的工夫范畴雷同进行了相干设置
sYear = input.int(defval = 2020, title = "Start Year", minval = 2012)
sMonth = input.int(defval = 6, title = "Start Month", minval = 1, maxval = 12)
sDay = input.int(defval = 1, title = "Start Day", minval = 1, maxval = 31)
eYear = input.int(defval = 2022, title = "End Year", minval = 2012)
eMonth = input.int(defval = 6, title = "End Month", minval = 1, maxval = 12)
eDay = input.int(defval = 1, title = "End Day", minval = 1, maxval = 31)

windowFlag = time >= timestamp(sYear, sMonth, sDay, 00, 00) and time <= timestamp(eYear, eMonth, eDay, 23, 59)

// 4. 获取 MACD 指标
[_, _, histLine] = ta.macd(close, 12, 26, 9)

// 5. 在 TV 中没有通达信中的 upnday 函数, 因而这里自行实现
upnday(a, n) =>
    bool flag = true
    for i = 1 to n
        if a[i] >= a[i-1]
            flag := false
            break
    flag

// 6. 在 TV 中也没有通达信中的 downnday 函数, 因而也要自行实现
downnday(a, n) =>
    bool flag = true
    for i = 1 to n
        if a[i] <= a[i-1]
            flag := false
            break
    flag

// 7. 同样在 TV 中实现获取 N 天内最小值的函数
llv(a, n) =>
    float minV = a[0]
    for i = 1 to n
        if a[i] < minV
            minV := a[i]
    minV

// 8. 依照策略判断交易机会
longCondition = upnday(histLine, 3) and histLine[3] == llv(histLine, 20)
shortCondition = downnday(histLine, 3)

// 9. 设定初始资金为一万元
total = 10000

if windowFlag
    if longCondition
        // A 股中一手为一百股
        n = int(total/close/100)*100
        strategy.entry("MACD", strategy.long, n)
    if shortCondition
        // A 股中不能做空所以调用 close 平仓
        strategy.close("MACD")

评测报告

编辑实现后点击“增加到图表”即可看到策略的回测后果

左上部原来的 K 线图中会主动显示在指定工夫范畴内的策略交易点

右下部会显示策略的各种指标: 净利润、胜率、回撤、净值等

点击“交易清单”能够看到每一次建仓、平仓的执行工夫和仓位状况, 能够联合 K 线图以及 MACD 指标进行后续的优化

正文完
 0