KingData Open Platform
  • Open Platform Introduction
  • How to develop an indicator
    • Step1: Clone Repo
    • Step2: Write Definition.md
    • Step3: Write Logic Code
    • Step4: Write Template
    • Step5: Test and Pull Request
  • Examples
    • Demo with JSON data
    • Demo with HTML data
    • Demo with Socket Data
  • ⚠️ Attention && FAQ
    • How to store data
  • Related Links
  • API DOC
    • Integrate KingData content into your app
Powered by GitBook
On this page
  1. Examples

Demo with HTML data

Demonstrate what to do if the data source we crawl is HTML

Indicator: BTC MVRV Alert

import scrapy
import re

from crawlers.utils import SpiderBase, Tools
from crawlers.utils.group_alarm import catch_except
from jinja2 import Template


def minimal_regularity(pattern, string):
    comp = re.compile(pattern, re.S)
    return re.findall(comp, string)


class BtcMVRVSpider(SpiderBase):
    name = 'idx-btc-mvrv'
    url = 'https://charts.woobull.com/bitcoin-mvrv-ratio/'

    def start_requests(self):
        # error_back method is defined in SpiderBase
        yield scrapy.Request(url=self.url, errback=self.error_back)

    # Exceptions must be handled, only need to be declared, and the processing logic system has been processed uniformly
    @catch_except
    def parse(self, response, **kwargs):
        string = response.text
        for pattern in ['mvrv = .*?}', 'y:.*?]', r'\[.*\]']:
            # Get the desired data from html
            string = minimal_regularity(pattern, string)[0]
        btc_mv_rv = eval(string)[-1]
        params = {
            'mv_rv': round(btc_mv_rv, 2)
        }
        print(Template(self.alert_en_template()).render(params))
        print(Template(self.alert_cn_template()).render(params))

    # must be declare
    def alert_en_template(self):
        return """According to KingData monitoring, BTC current MVRV ratio is {{mv_rv}},{% if mv_rv < 1 %}theoretically the price is at bottom, marking late stage bear market accumulations.{% endif %}{% if mv_rv > 3.7 %} theoretically the price is at top, signaling late stage bull cycles.{% endif %}{% if 1<= mv_rv <= 3.7 %}Theoretically, MVRV values over '3.7' indicated price top and values below '1' indicated price bottom.{% endif %}
 (The above content is for your reference only and does not constitute investment advice. Invest at your own risk.)  """

    # must be declare
    def alert_cn_template(self):
        return """据 KingData 数据监控,BTC 当前 MVRV 比率为 {{mv_rv}},{% if mv_rv < 1 %}理论上价格见底,市场处在熊市晚期积累阶段。{% endif %}{% if mv_rv > 3.7 %}理论上价格见顶,市场处在牛市后期。{% endif %}{% if 1<= mv_rv <= 3.7 %}理论上,MVRV > 3.7 是价格见顶信号,MVRV < 1 是价格见底信号。{% endif %}
(以上内容仅作参考,不构成投资建议,风险自担。)"""

PreviousDemo with JSON dataNextDemo with Socket Data

Last updated 2 years ago