[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6P7YASHC0F5QYB6WC5NDD9B":3,"skill-same:01M6P7YASHC0F5QYB6WC5NDD9B":64},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":31,"linkOnly":32,"markdownContent":33,"markdownBody":34,"frontMatter":35,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":14,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":6,"ownerDescription":48,"updatedAt":49,"install":50,"resources":63},"01M6P7YASHC0F5QYB6WC5NDD9B","tvfetch-backtest",null,"Backtesting-focused variant — framework-aware data export","tarun-khatri\u002Ftvfetch","tarun-khatri","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F84188088?v=4","01M6P7XDZ6VAFCQS710Y2SMFZV","Tarun Khatri","01M6P7XE3MJ9TFN4FCJ1TNN2QA",0,"MIT","https:\u002F\u002Fgithub.com\u002Ftarun-khatri\u002Ftvfetch\u002Fblob\u002Fmain\u002Fvariants\u002Fbacktesting\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30],"backtest","tvfetch","tvfetch backtest","framework","data","Bash","read","write","export","backtesting","variant","data export","2026-11-10 10:12:30",false,"---\nname: tvfetch-backtest\nversion: 1.0.0\ndescription: Backtesting-focused variant — framework-aware data export\ntriggers:\n  - \u002Ftvfetch-backtest\n  - \u002Fbacktest\ntools:\n  - Bash\n  - Read\n  - Write\n---\n\n# tvfetch-backtest\n\nBacktesting-focused data fetching. When saving data, always asks which framework\nthe user targets and provides framework-specific code snippets.\n\n## Behavior\n\n1. Fetch OHLCV bars via `scripts\u002Flib\u002Ffetch.py`\n2. When saving or exporting, ask: **Which backtesting framework?**\n   - `backtrader`\n   - `freqtrade`\n   - `vectorbt`\n3. Output data in the framework's expected format with a ready-to-run code snippet\n\n## Framework Formats\n\n### backtrader\n\nSave as CSV with columns: `datetime,open,high,low,close,volume,openinterest`\n\n```python\nimport backtrader as bt\n\nclass MyStrategy(bt.Strategy):\n    def __init__(self):\n        self.sma = bt.indicators.SimpleMovingAverage(self.data.close, period=20)\n\n    def next(self):\n        if self.data.close[0] > self.sma[0] and not self.position:\n            self.buy()\n        elif self.data.close[0] \u003C self.sma[0] and self.position:\n            self.sell()\n\ncerebro = bt.Cerebro()\ndata = bt.feeds.GenericCSVData(\n    dataname='{{FILE_PATH}}',\n    dtformat='%Y-%m-%d',\n    datetime=0, open=1, high=2, low=3, close=4, volume=5, openinterest=6\n)\ncerebro.adddata(data)\ncerebro.run()\ncerebro.plot()\n```\n\n### freqtrade\n\nSave as JSON in freqtrade's OHLCV format:\n\n```python\n# Place in user_data\u002Fdata\u002F{{EXCHANGE}}\u002F{{PAIR}}-{{TIMEFRAME}}.json\n# Format: [[timestamp_ms, open, high, low, close, volume], ...]\n\n# freqtrade backtesting command:\n# freqtrade backtesting --strategy MyStrategy --timerange 20240101-20250101\n```\n\n### vectorbt\n\nSave as CSV, load with pandas:\n\n```python\nimport vectorbt as vbt\nimport pandas as pd\n\ndf = pd.read_csv('{{FILE_PATH}}', index_col='datetime', parse_dates=True)\nclose = df['close']\n\n# Example: SMA crossover\nfast_ma = vbt.MA.run(close, window=10)\nslow_ma = vbt.MA.run(close, window=30)\n\nentries = fast_ma.ma_crossed_above(slow_ma)\nexits = fast_ma.ma_crossed_below(slow_ma)\n\npf = vbt.Portfolio.from_signals(close, entries, exits, init_cash=10000)\nprint(pf.stats())\n```\n\n## Intent Parsing\n\n| User says | Action |\n|-----------|--------|\n| `BTC for backtrader` | Fetch 1D 365 bars, save as backtrader CSV |\n| `AAPL 1h 1000 vectorbt` | Fetch 60m 1000 bars, save as vectorbt CSV |\n| `get ETH data` | Fetch, then ask which framework before saving |\n| `backtest BTC sma crossover` | Fetch, save, generate strategy skeleton |\n\n## Rules\n\n- Always ask which framework before saving (unless already specified).\n- Include the framework code snippet with the correct file path filled in.\n- Default: 1D timeframe, 365 bars (one year of daily data).\n- For freqtrade, use millisecond timestamps. For others, use ISO dates.\n- If the user mentions a strategy, generate a minimal working skeleton for that framework.\n","# tvfetch-backtest\n\nBacktesting-focused data fetching. When saving data, always asks which framework\nthe user targets and provides framework-specific code snippets.\n\n## Behavior\n\n1. Fetch OHLCV bars via `scripts\u002Flib\u002Ffetch.py`\n2. When saving or exporting, ask: **Which backtesting framework?**\n   - `backtrader`\n   - `freqtrade`\n   - `vectorbt`\n3. Output data in the framework's expected format with a ready-to-run code snippet\n\n## Framework Formats\n\n### backtrader\n\nSave as CSV with columns: `datetime,open,high,low,close,volume,openinterest`\n\n```python\nimport backtrader as bt\n\nclass MyStrategy(bt.Strategy):\n    def __init__(self):\n        self.sma = bt.indicators.SimpleMovingAverage(self.data.close, period=20)\n\n    def next(self):\n        if self.data.close[0] > self.sma[0] and not self.position:\n            self.buy()\n        elif self.data.close[0] \u003C self.sma[0] and self.position:\n            self.sell()\n\ncerebro = bt.Cerebro()\ndata = bt.feeds.GenericCSVData(\n    dataname='{{FILE_PATH}}',\n    dtformat='%Y-%m-%d',\n    datetime=0, open=1, high=2, low=3, close=4, volume=5, openinterest=6\n)\ncerebro.adddata(data)\ncerebro.run()\ncerebro.plot()\n```\n\n### freqtrade\n\nSave as JSON in freqtrade's OHLCV format:\n\n```python\n# Place in user_data\u002Fdata\u002F{{EXCHANGE}}\u002F{{PAIR}}-{{TIMEFRAME}}.json\n# Format: [[timestamp_ms, open, high, low, close, volume], ...]\n\n# freqtrade backtesting command:\n# freqtrade backtesting --strategy MyStrategy --timerange 20240101-20250101\n```\n\n### vectorbt\n\nSave as CSV, load with pandas:\n\n```python\nimport vectorbt as vbt\nimport pandas as pd\n\ndf = pd.read_csv('{{FILE_PATH}}', index_col='datetime', parse_dates=True)\nclose = df['close']\n\n# Example: SMA crossover\nfast_ma = vbt.MA.run(close, window=10)\nslow_ma = vbt.MA.run(close, window=30)\n\nentries = fast_ma.ma_crossed_above(slow_ma)\nexits = fast_ma.ma_crossed_below(slow_ma)\n\npf = vbt.Portfolio.from_signals(close, entries, exits, init_cash=10000)\nprint(pf.stats())\n```\n\n## Intent Parsing\n\n| User says | Action |\n|-----------|--------|\n| `BTC for backtrader` | Fetch 1D 365 bars, save as backtrader CSV |\n| `AAPL 1h 1000 vectorbt` | Fetch 60m 1000 bars, save as vectorbt CSV |\n| `get ETH data` | Fetch, then ask which framework before saving |\n| `backtest BTC sma crossover` | Fetch, save, generate strategy skeleton |\n\n## Rules\n\n- Always ask which framework before saving (unless already specified).\n- Include the framework code snippet with the correct file path filled in.\n- Default: 1D timeframe, 365 bars (one year of daily data).\n- For freqtrade, use millisecond timestamps. For others, use ISO dates.\n- If the user mentions a strategy, generate a minimal working skeleton for that framework.\n",{"name":5,"tools":36,"version":39,"triggers":40,"description":7},[24,37,38],"Read","Write","1.0.0",[41,42],"\u002Ftvfetch-backtest","\u002Fbacktest","main","1c57615d7233b55b7aabf611c7f3edea18e29546","variants\u002Fbacktesting","https:\u002F\u002Fgithub.com\u002Ftarun-khatri\u002Ftvfetch","https:\u002F\u002Fgithub.com\u002Ftarun-khatri","Full Stack Web3 Developer | AI Agentic developer ","2026-04-09 04:00:53",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add tarun-khatri\u002Ftvfetch --skill tvfetch-backtest",{"tool":56,"command":57},"bunx","bunx skills add tarun-khatri\u002Ftvfetch --skill tvfetch-backtest",{"tool":59,"command":60},"pnpm","pnpm dlx skills add tarun-khatri\u002Ftvfetch --skill tvfetch-backtest","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ftarun-khatri\u002Ftvfetch\u002Fblob\u002Fmain\u002Fvariants\u002Fbacktesting\u002FSKILL.md",true,[],[65,78,90,95],{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":31},"01M6P7YGRDVKFCQYZFP4XKCDTN","tvfetch-quant","Quantitative analysis variant — always includes indicators and stats","https:\u002F\u002Fgithub.com\u002Ftarun-khatri\u002Ftvfetch\u002Fblob\u002Fmain\u002Fvariants\u002Fquant\u002FSKILL.md",[],[72,20,73,74,75,76,24,25,77,29],"tvfetch quant","quant","analysis","stats","indicators","quantitative analysis",{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":31},"01M6P7YD97WX3CSRFEKJ3JF7AK","tvfetch-minimal","Minimal data-only variant — fetch and print, nothing else","https:\u002F\u002Fgithub.com\u002Ftarun-khatri\u002Ftvfetch\u002Fblob\u002Fmain\u002Fvariants\u002Fminimal\u002FSKILL.md",[],[85,20,86,87,88,29,89,25,24,23],"tvfetch minimal","minimal","only","print","fetch",{"skillNo":91,"name":20,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":31},"01M6P7Y89C889E2M1YNT82H3GW","https:\u002F\u002Fgithub.com\u002Ftarun-khatri\u002Ftvfetch\u002Fblob\u002Fmain\u002Fskills\u002Ftvfetch\u002FSKILL.md",[],[20],{"skillNo":96,"name":20,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":105,"publishedAt":31},"01M6P7XJ40E2TN1CQH4NPABH9Y","Fetch TradingView market data — historical OHLCV bars, live price streams, symbol search, technical indicators, and statistical analysis for any symbol (stocks, crypto, forex, futures, indices, commodities). No API key required. Auto-activates for: candlestick data, OHLCV, historical prices, TradingView, backtesting data, fetch stock\u002Fcrypto\u002Fforex prices, live streaming, bar data, price history, RSI, MACD, SMA, EMA, moving average, Bollinger Bands, \"chart X\", \"get data for\", \"download prices\", \"how has X performed\", any trading symbol (BTC, AAPL, EURUSD, SPX, GOLD, ETH, SOL, etc.)","https:\u002F\u002Fgithub.com\u002Ftarun-khatri\u002Ftvfetch\u002Fblob\u002Fmain\u002FSKILL.md",[100],{"categoryNo":101,"categoryName":102,"taxonomyType":103,"taxonomyTypeDesc":104},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[20,24,106,107,74,108,109,89,110,111,112,113,114,115,116,117,118,28,119,120],"how","api","futures","streaming","search","analyze","market data","prices","streams","forex","chart","stock","get","binance","auto"]