微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用颤动创建股票的蜡烛图 这将创建图表:以下函数处理从后端获取数据:

如何解决使用颤动创建股票的蜡烛图 这将创建图表:以下函数处理从后端获取数据:

鉴于从Yahoo-finance软件包收到的熊猫数据框中的数据,我正在尝试使用Flutter创建一个Web应用程序以显示股票的蜡烛图。

是否存在一种简便的方法来呈现这种图表,而无需从头开始创建图表小部件?

解决方法

您可以结合使用this软件包和Flask作为后端Web框架。

以下是您的飞镖代码应如下所示的示例:

这将创建图表:

child: KChartWidget(
                datas,isLine: isLine,mainState: MainState.NONE,secondaryState: SecondaryState.NONE,fixedLength: 2,timeFormat: TimeFormat.YEAR_MONTH_DAY,isChinese: false,bgColor: [
                  Color(0xFF121128),Color(0xFF121128),Color(0xFF121128)
                ],),

datas的类型应为List<KLineEntity>

以下函数处理从后端获取数据:

void getData(String period) async {
    String result = await getIPAddress('$period');
    try {
      List parseJson = convert.json.decode(result);
      datas = parseJson
          .map((item) => KLineEntity.fromJson(item))
          .toList()
          .cast<KLineEntity>();
      DataUtil.calculate(datas);
      showLoading = false;
      setState(() {});
    } on Exception catch (_) {
      setState(() {});
      print('Error');
    }
  }

  Future<String> getIPAddress(String period) async {
    String url = "http://127.0.0.1:5000/?stock_symbol=$stockSymbol";
    String result;
    var response = await http.get(url);
    if (response.statusCode == 200) {
      result = response.body;
    } else {
      print('Failed getting IP address');
    }
    return result;
  }

这是从后端获取数据的方式:

from flask import Flask,request,jsonify
from flask_cors import CORS,cross_origin
import requests
import yfinance as yf

app = Flask(__name__)
cors = CORS(app)
app.config['CORS_HEADERS'] = 'Content-Type'

@app.route('/',methods=['GET'])
@cross_origin()
def get_data_as_json():
    if request.method == 'GET':
        stock_symbol = str(request.args['stock_symbol'])

        stock_data = yf.Ticker(stock_symbol)
        data = stock_data.history(period="max",interval='1d')
        data = data[['Open','High','Low','Close','Volume']]

        r = requests.get('https://api.huobi.br.com/market/history/kline?period=1day&size=1&symbol=btcusdt')
        latest_ts = r.json()['data'][0]['id']

        temp = [ts for ts in range(latest_ts,latest_ts - 86400 * len(data),-86400)]
        temp.reverse()
        data['id'] = temp
        data['amount'] = 0.0
        data['count'] = 0.0

        data_renamed = data.rename(columns={'Open': 'open','High': 'high','Low': 'low','Close': 'close','Volume': 'vol'})
        data_renamed_as_json = data_renamed.to_json(orient="records")

        return data_renamed_as_json


if __name__ == '__main__':
    app.run(port=5000)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。