패키지, 저장소 및 앱 카테고리 검색

패키지 상세v1.0.14

yahoo_finance_data_reader

일일 주식 가격을 얻기 위한 야후 파이낸스 데이터 리더입니다. 백테스트를 개발하는 데 사용할 수 있으며 야후 파이낸스의 모든 역사적 일일 데이터를 가져올 수 있습니다.

AndroidiOSmacOSWindowsLinux
30일 다운로드
962
좋아요
31
Pub 점수
160

패키지 설치

flutter pub add yahoo_finance_data_reader

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

Flutter/Dart 패키지로, Yahoo Finance에서 일일 주가 정보를 가져와 개발자가 백테스팅 도구 및 금융 분석 애플리케이션을 구축하기 위한 역사적 시장 데이터에 접근할 수 있도록 합니다. 이 패키지는 Android, iOS, macOS, Windows, Linux 등 여러 플랫폼을 지원하여 크로스플랫폼 사용에 유연합니다. Yahoo Finance의 공개 API와의 통합을 간소화하여 주식 및 기타 금융 상품의 포괄적인 역사적 가격 데이터를 원활하게 검색할 수 있습니다.

사용 사례

  • 트레이딩 전략 백테스팅
  • 재무 대시보드 구축
  • 역사적 주가 추세 분석
  • 투자 연구 도구 개발
  • 포트폴리오 추적 앱 만들기

주요 기능

  • 일일 과거 주가 정보를 가져옵니다
  • 다중 플랫폼 배포를 지원합니다
  • 데이터 검색을 위한 간단한 API
  • 야후 파이낸스와 통합
  • 실시간 및 과거 데이터 액세스를 가능하게 합니다

적합한 대상

  • 금융 앱 개발자
  • 수량 분석가
  • 트레이딩 전략 빌더
  • 데이터 기반 투자 도구
  • 시장 데이터가 필요한 플러터 프로젝트

고려 사항

  • 외부 야후 파이낸스 API의 안정성에 의존
  • 일일 세부 수준에 제한됨
  • 인터넷 연결이 필요합니다
  • 레이트 제한이 있을 수 있습니다
  • 데이터 정확성은 야후 파이낸스 출처에 달려 있습니다

원본 README

연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.

This project started as a migration of the pandas datareader functionality to read yahoo finance stock prices. In December of 2022 yahoo started to encrypt the data in the HTML, so I needed to investigate a way of evolving the package. And then found a yfinance package that used query2 of yahoo finance API, and started to use it

https://github.com/pydata/pandas-datareader/blob/main/pandas_datareader/yahoo/daily.py

This lib have a strong advantage on backtesting strategies as it can give all the dataframe in yahoo finance, this means that can get daily data on futures like NQ=F and ES=F since 2000 and it goes as far as getting data from 1927 on the SP500 yahoo finance symbol ^GSPC

Yahoo Finance data

Features

Get daily data from yahoo finance for the entire dataframe available

Getting started

Add the dependency to your pubspec.yaml:

yahoo_finance_data_reader: ^1.0.14

Usage

YahooFinanceResponse response = await YahooFinanceDailyReader().getDailyDTOs('GOOG');

You can also provide your own Dio instance when you need custom behavior like request caching or shared interceptors:

final dio = Dio()
  ..interceptors.add(DioCacheInterceptor(options: cacheOptions));

final reader = YahooFinanceDailyReader(dio: dio);
final response = await reader.getDailyDTOs('GOOG');

Additional information

To include in your app as a widget you can start with this future builder and debug your way until your desired result

class DTOSearch extends StatefulWidget {
  const DTOSearch({super.key});

  @override
  State<DTOSearch> createState() => _DTOSearchState();
}

class _DTOSearchState extends State<DTOSearch> {
  final TextEditingController controller = TextEditingController(
    text: 'GOOG',
  );
  late Future<YahooFinanceResponse> future;

  @override
  void initState() {
    super.initState();
    load();
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        const Text('Ticker from yahoo finance'),
        TextField(
          controller: controller,
        ),
        MaterialButton(
          onPressed: load,
          child: Text('Load'),
          color: Theme.of(context).primaryColor,
        ),
        Expanded(
          child: FutureBuilder(
            future: future,
            builder: (BuildContext context,
                AsyncSnapshot<YahooFinanceResponse> snapshot) {
              if (snapshot.connectionState == ConnectionState.done) {
                if (snapshot.data == null) {
                  return Text('No data');
                }

                YahooFinanceResponse response = snapshot.data!;
                return ListView.builder(
                    itemCount: response.candlesData.length,
                    itemBuilder: (BuildContext context, int index) {
                      YahooFinanceCandleData candle =
                      response.candlesData[index];

                      return _CandleCard(candle);
                    });
              } else {
                return const Center(
                  child: SizedBox(
                    height: 50,
                    width: 50,
                    child: CircularProgressIndicator(),
                  ),
                );
              }
            },
          ),
        ),
      ],
    );
  }

  void load() {
    future = YahooFinanceDailyReader().getDailyDTOs(controller.text);
    setState(() {});
  }
}

class _CandleCard extends StatelessWidget {
  final YahooFinanceCandleData candle;
  const _CandleCard(this.candle);

  @override
  Widget build(BuildContext context) {
    final String date = candle.date.toIso8601String().split('T').first;

    return Card(
      child: Container(
        margin: const EdgeInsets.all(10),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: [
                Text(date),
              ],
            ),
            const SizedBox(
              height: 10,
            ),
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: [
                Text('open: ${candle.open.toStringAsFixed(2)}'),
                Text('close: ${candle.close.toStringAsFixed(2)}'),
              ],
            ),
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: [
                Text('low: ${candle.low.toStringAsFixed(2)}'),
                Text('high: ${candle.high.toStringAsFixed(2)}'),
              ],
            ),
          ],
        ),
      ),
    );
  }
}

Like us on pub.dev

Package url: https://pub.dev/packages/yahoo_finance_data_reader

Instruction to publish the package to pub.dev

dart pub publish

카테고리

의존성

의존성 목록 5 개

소스 저장소

이 패키지를 사용하는 프로젝트