Flutter金融市场技术分析插件tradingview_ta的使用

发布于 1周前 作者 htzhanglong 来自 Flutter

Flutter金融市场技术分析插件 tradingview_ta 的使用

简介

tradingview_ta 是一个非官方的TradingView API包装器,允许您获取技术分析数据。它现在由新的管理团队维护。

Stock Image

重要提示

  • 保持 tradingview_ta 更新以获取新功能和错误修复:flutter pub add tradingview_ta

特性

  • 支持多个符号
  • 获取多符号与多个时间间隔的数据
  • 指标(仅支持TradingView内置指标,不支持Pine Script/自定义指标)

安装

使用 Pub.dev (稳定版本,推荐)

flutter pub add tradingview_ta

使用 GitHub (最新版本)

git clone https://github.com/AbdAlftahSalem/dart-tradingview-ta.git

示例代码

以下是一个完整的示例,演示如何使用 tradingview_ta 插件来获取技术分析数据:

import 'package:flutter/material.dart';
import 'package:tradingview_ta/tradingview_ta.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  List<Map<String, dynamic>> _analysisData = [];
  List<Map<String, dynamic>> _multiIntervalAnalysisData = [];
  List<Map<String, dynamic>> _supportAndResistantData = [];

  [@override](/user/override)
  void initState() {
    super.initState();
    _fetchData();
  }

  Future<void> _fetchData() async {
    // 初始化 TradingViewTA 实例
    TradingViewTA tradingViewTA = TradingViewTA(
      tradingView: TradingViewModel(
        screener: "crypto",
        symbols: ["BINANCE:BTCUSDT", "BINANCE:ETHUSDT"],
        interval: Intervals.INTERVAL_1_HOUR,
      ),
    );

    // 获取单个时间间隔的技术分析数据
    _analysisData = await tradingViewTA.getAnalysis();
    print("Single Interval Analysis: $_analysisData");

    // 获取多个时间间隔的技术分析数据
    _multiIntervalAnalysisData = await tradingViewTA.getAnalysisWithMultiFrame(
      intervals: [
        Intervals.INTERVAL_1_MONTH,
        Intervals.INTERVAL_1_HOUR,
      ],
    );
    print("Multi Interval Analysis: $_multiIntervalAnalysisData");

    // 获取支撑位和阻力位数据
    _supportAndResistantData = await tradingViewTA.getSupportAndResistant();
    print("Support and Resistant Data: $_supportAndResistantData");

    setState(() {});
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('TradingView TA Example'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text('Single Interval Analysis:', style: TextStyle(fontSize: 18)),
            SizedBox(height: 8),
            Expanded(
              child: ListView.builder(
                itemCount: _analysisData.length,
                itemBuilder: (context, index) {
                  var data = _analysisData[index];
                  return ListTile(title: Text(data.toString()));
                },
              ),
            ),
            SizedBox(height: 16),
            Text('Multi Interval Analysis:', style: TextStyle(fontSize: 18)),
            SizedBox(height: 8),
            Expanded(
              child: ListView.builder(
                itemCount: _multiIntervalAnalysisData.length,
                itemBuilder: (context, index) {
                  var data = _multiIntervalAnalysisData[index];
                  return ListTile(title: Text(data.toString()));
                },
              ),
            ),
            SizedBox(height: 16),
            Text('Support and Resistant Data:', style: TextStyle(fontSize: 18)),
            SizedBox(height: 8),
            Expanded(
              child: ListView.builder(
                itemCount: _supportAndResistantData.length,
                itemBuilder: (context, index) {
                  var data = _supportAndResistantData[index];
                  return ListTile(title: Text(data.toString()));
                },
              ),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter金融市场技术分析插件tradingview_ta的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter金融市场技术分析插件tradingview_ta的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,关于在Flutter中使用tradingview_ta插件来进行金融市场技术分析,这里提供一个简单的代码案例来展示其基本用法。tradingview_ta是一个用于获取TradingView技术指标的Flutter包。请确保您已经在pubspec.yaml文件中添加了依赖项,并运行了flutter pub get来安装它。

首先,确保您的pubspec.yaml中包含以下依赖:

dependencies:
  flutter:
    sdk: flutter
  tradingview_ta: ^最新版本号  # 请替换为实际的最新版本号

然后,您可以创建一个Flutter应用来使用这个插件。以下是一个简单的示例,展示如何获取并显示一些技术指标,比如移动平均线(SMA)。

import 'package:flutter/material.dart';
import 'package:tradingview_ta/tradingview_ta.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  late TradingViewTA tradingViewTA;
  late List<double> historicalPrices;

  @override
  void initState() {
    super.initState();
    // 初始化tradingview_ta实例
    tradingViewTA = TradingViewTA();

    // 示例历史价格数据,这里应该是从API或数据源获取的实时价格数据
    historicalPrices = [
      150.0, 152.5, 151.0, 153.2, 154.5, 155.0, 156.8, 157.5, 158.0, 159.2
    ];

    // 获取技术指标,例如10期简单移动平均线(SMA)
    List<double> sma10 = tradingViewTA.sma(historicalPrices, 10);

    // 打印结果(实际应用中,您可能希望将这些数据绑定到UI组件上)
    print("SMA 10: $sma10");

    // 注意:由于SMA需要至少10个数据点来计算第一个值,所以sma10列表的长度会比historicalPrices少
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter TradingView TA Example'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Text(
                'Historical Prices:',
                style: TextStyle(fontSize: 20),
              ),
              ...historicalPrices.asMap().entries.map((entry) {
                return Text('Price ${entry.key + 1}: \$${entry.value.toStringAsFixed(2)}');
              }).toList(),
              SizedBox(height: 20),
              Text(
                'SMA 10:',
                style: TextStyle(fontSize: 20),
              ),
              // 注意:这里只显示能够计算出的SMA值,实际应用中需要处理边界情况
              ...(sma10.length > 0
                  ? sma10.asMap().entries.map((entry) {
                      int index = entry.key + 10; // 因为SMA需要10个数据点来计算第一个值
                      return Text('SMA 10 at Price $index: \$${entry.value.toStringAsFixed(2)}');
                    }).toList()
                  : [Text('Not enough data to calculate SMA 10.')]),
            ],
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们:

  1. 初始化了TradingViewTA实例。
  2. 创建了一个示例历史价格数据列表。
  3. 使用sma方法计算了10期简单移动平均线(SMA)。
  4. 将历史价格和SMA结果打印到控制台,并在UI中显示出来。

请注意,这个示例是为了教学目的而简化的。在实际应用中,您可能需要从API获取实时价格数据,并处理更多的边界情况和错误。此外,由于SMA需要至少period个数据点来计算第一个值,因此输出的SMA列表长度会比输入的历史价格列表短。在UI中显示这些数据时,需要考虑到这一点。

回到顶部