Bootstrap

金融工程--pine-script 入门

背景

脚本基本组成

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

趋势指标与策略

常见的趋势类指标:均线类(MAs)、支撑/压力位(Support/Resistance)、趋势线(Trend Lines)、趋势通道(Trend Channels)、一目均衡表(Ichimoku)和
艾略特波浪(ElliotWave)。
注意趋势类指标不能直接产生交易,需要通过交易策略来执行。指标+策略的量化逻辑。

均线指标

策略实现

实现马丁格尔策略

初始化变量:定义初始资本、初始头寸大小、止损百分比、止盈百分比以及当前资本和当前头寸大小等变量。

更新头寸:创建一个函数来更新头寸大小、止损价格和止盈价格。在马丁格尔策略中,每次亏损后头寸大小会加倍。

开仓函数:定义一个函数来开启新的交易,记录入场价格,并更新头寸大小和止损止盈价格。

平仓函数:定义一个函数来关闭当前的交易,并更新资本和头寸大小。

策略入口和出口:定义策略的入场条件和出场条件。入场条件可以是一个简单的移动平均线交叉,例如短期移动平均线穿过长期移动平均线。

策略循环:在策略循环中,根据入场和出场条件来执行开仓和平仓函数。

策略信息:在图表上显示策略信息,例如当前资本。

主函数:调用策略循环和策略信息函数,开始执行脚本。

马丁格尔策略具有高风险,因为它涉及在每次亏损后增加头寸大小,这可能导致在一系列亏损后迅速耗尽资本。因此,这种策略不推荐用于实际交易。

网格交易策略

SMA策略

//@version=4
strategy("sma", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value=99, initial_capital=10000, currency=currency.USD)

strategy.risk.allow_entry_in((strategy.direction.long))

fast = input(defval = 7, title = 'fast', type=input.integer)
slow = input(defval = 28, title = 'slow', type=input.integer)

SMA_fast = sma(close, fast)
SMA_slow = sma(close, slow)

start = timestamp(2010, 1, 30, 0, 0)

plot(SMA_fast,title = "fast",color = color.orange)
plot(SMA_slow,title = "slow",color = color.green)

longCondition = crossover(SMA_fast, SMA_slow)
if (longCondition) and (time > start)
    strategy.entry("Enter", strategy.long)

shortCondition = crossover(sma(close, 14), sma(close, 28))
if (shortCondition) and (time > start)
    strategy.entry("My short entry id", strategy.short)


项目化

pinescript的运行平台如何才能使用python或者调用模型?
虽然 Pine Script 本身的功能强大,能够编写各种技术指标和策略,但它并不具备直接集成深度学习模型的能力。Pine Script 主要用来处理时间序列数据(如股票和加密货币的价格),并缺乏如 Python 那样广泛的机器学习和深度学习库(如 TensorFlow、PyTorch 等)。

  1. 使用 TradingView 的 Webhook 功能与 Python 交互:
    TradingView 提供了 Webhook 功能,可以在满足某些条件时向外部服务发送 HTTP 请求。您可以使用 Webhook 触发 Python 脚本的执行,从而在 Python 中运行深度学习模型并作出交易决策。

步骤:

在 TradingView 设置 Webhook:在 TradingView 上编写 Pine Script 代码,并在特定条件下使用 alertcondition 设置警报。配置警报时,可以选择使用 Webhook URL。
设置 Python Web 服务器:在 Python 中,可以使用 Flask 或 FastAPI 设置一个 Web 服务器来接收 TradingView 的 Webhook 请求。
处理 Webhook 并运行深度学习模型:当 Webhook 请求到达时,可以在 Python 脚本中加载您的深度学习模型,并使用接收到的数据来进行预测或策略执行。
示例代码:
TradingView Pine Script:

//@version=5
strategy("Deep Learning Webhook Strategy", overlay=true)

// 定义一个简单的信号
longCondition = ta.crossover(close, ta.sma(close, 14))
if longCondition
    alert("Buy Signal Triggered", alert.freq_once)

Python Flask Web Server:

from flask import Flask, request
import json

app = Flask(__name__)

@app.route('/webhook', methods=['POST'])
def webhook():
    data = json.loads(request.data)
    print(f"Webhook received: {data}")
    
    # 在此处调用您的深度学习模型
    # 例如: 模型预测方向并生成交易信号
    # prediction = your_model.predict(data)
    
    return "Webhook processed!", 200

if __name__ == '__main__':
    app.run(port=5000)
  1. 使用 TradingView 的 Pine Connector 或量化平台:
    目前市场上也有一些服务和平台,可以帮助将 TradingView 与 Python 或其他高级编程语言连接。例如:

Pine Connector:可以将 TradingView 信号通过 WebSocket 或 API 发送到外部平台(如 Python 程序)。
量化平台:一些量化平台(如 QuantConnect、Zipline、Backtrader)提供了基于 Python 的框架,用于实现更复杂的策略和深度学习模型。这些平台允许您通过 API 获取 TradingView 提供的市场数据,并将数据输入到 Python 模型中。
3. 直接从 TradingView 导出数据到 Python:
如果您想要在 Python 中完全控制策略和模型,您可以定期从 TradingView 导出历史数据,并将这些数据用于训练和评估深度学习模型。一旦模型训练完成,您可以用新数据实时更新模型并生成交易信号。

步骤:
在 TradingView 上导出历史数据:使用 TradingView 提供的功能下载数据,或者通过 API 提供的方式获取数据。
使用 Python 进行深度学习建模:使用 Pandas、TensorFlow、PyTorch 等库处理和训练模型。
生成实时信号:模型训练完成后,可以将新数据输入模型,生成实时交易信号,并通过 Webhook 或其他方式通知。

总结
虽然 Pine Script 本身不能直接运行深度学习模型,但可以通过 TradingView 的 Webhook 功能与 Python 脚本进行交互。通过这种方式,您可以利用 TradingView 提供的实时数据和信号触发机制,在 Python 中运行更复杂的深度学习模型。这种方法可以让您充分利用 TradingView 的强大图表和信号功能,同时将深度学习能力扩展到交易策略中。

参考文档

网页端工具
https://gitcode.com/gh_mirrors/tr/tradingview-assistant-chrome-extension/overview?utm_source=artical_gitcode&index=top&type=card&webUrl&isLogin=1

官方文档
https://www.tradingview.com/pine-script-docs/

教程
https://courses.theartoftrading.com/courses/pine-script-basics-course

;