PineForge Codegen
chính thứcMáy chủ MCP cục bộ: AI viết PineScript v6, công cụ dịch tích hợp chuyển đổi sang C++ và chạy backtest với dữ liệu Binance — không cần khóa API, hoàn toàn cục bộ.
Bạn có thể làm gì với Pine Forge Codegen MCP?
- Dịch Pine Script v6 sang C++ — Chuyển đổi chiến lược Pine Script v6 thành đơn vị dịch C++ bằng
transpile_pinemà không chạy backtest. - Chạy backtest chiến lược Pine với dữ liệu OHLCV — Thực hiện một backtest xác định duy nhất với
backtest_pine, cung cấp mã nguồn, đường dẫn CSV và các tham số đầu vào/ghi đè/thời gian chạy tùy chọn. - Quét tham số chiến lược trong một lần chạy — Sử dụng
backtest_pine_gridđể kiểm tra tất cả tổ hợp củainputs×overridesvới một CSV duy nhất, có xếp hạng và tùy chọn xử lý đồng thời. - Tải dữ liệu OHLCV từ Binance cho backtesting — Kéo klines spot hoặc USDT-perp qua
fetch_binance_ohlcvvà ghi CSV sẵn sàng cho backtest với phân trang tự động. - Khám phá các mã chứng khoán có sẵn trên Binance — Liệt kê hoặc lọc các mã chứng khoán có thể giao dịch bằng
binance_symbolstrước khi tải dữ liệu thị trường. - Kiểm tra tham số engine và phạm vi hỗ trợ Pine — Truy vấn
list_engine_paramsđể biết mọi tham số ghi đè và điều chỉnh thời gian chạy được chấp nhận, hoặc sử dụngcheck_pine_featurevàget_coverage_topicđể xác minh hỗ trợ ngôn ngữ Pine.
Tài liệu
@pineforge/backtest-mcp
Máy chủ MCP stdio khép kín: một tác nhân AI viết PineScript v6, và image
pineforge-release đi kèm sẽ chuyển mã nó sang C++ và kiểm thử lại dựa trên dữ liệu
thị trường Binance — tất cả trong một container, cùng tiến trình. Hoàn toàn cục bộ — image
đi kèm bộ chuyển mã pineforge-codegen,
vì vậy Pine → C++ → kiểm thử lại chạy mà không cần Docker daemon trên máy chủ. Không cần khóa
API, không gì thoát ra khỏi hộp.

Công cụ
| tên | chạy trên | mục đích |
|---|---|---|
transpile_pine | cùng tiến trình | Đơn vị dịch Pine v6 → C++ (chỉ chuyển mã) |
list_engine_params | cục bộ (không I/O) | Danh mục mọi núm overrides + runtime được các bài kiểm thử lại chấp nhận |
backtest_pine | cùng tiến trình | Một lần kiểm thử lại mã nguồn Pine dựa trên CSV OHLCV |
backtest_pine_grid | cùng tiến trình | Quét Descartes inputs × overrides tái sử dụng một lần biên dịch |
fetch_binance_ohlcv | API công khai Binance | Ghi CSV sẵn sàng kiểm thử lại từ klines spot hoặc USDT-perp của Binance |
binance_symbols | API công khai Binance | Liệt kê / lọc các ký hiệu Binance (bộ nhớ đệm cùng tiến trình 5 phút) |
list_coverage_topics | cục bộ (không I/O) | Mọi chủ đề phủ sóng Pine v6 với trạng thái một dòng + tóm tắt |
check_pine_feature | cục bộ (không I/O) | Tra cứu xem một định danh/không gian tên Pine có được PineForge hỗ trợ không |
get_coverage_topic | cục bộ (không I/O) | Chi tiết đầy đủ + danh sách tính năng được/không được hỗ trợ cho một chủ đề phủ sóng |
engine_info | cục bộ (không I/O) | Báo cáo engine đi kèm: chế độ, cờ tích hợp sẵn, phiên bản |
Cài đặt
Chạy như một container khép kín qua stdio — engine đi kèm, cùng tiến trình, không
cần Docker daemon trên máy chủ, không cần khóa API. Gắn một thư mục làm việc tại /work để máy chủ có thể
đọc/ghi các CSV của bạn:
docker run --rm -i -v "$PWD:/work" ghcr.io/pineforge-4pass/pineforge-backtest-mcp:latest
Yêu cầu duy nhất: Docker, và mạng ra ngoài cho các công cụ lấy dữ liệu Binance. Kết nối nó vào máy khách MCP của bạn như bên dưới.
Giải pháp thay thế được lưu trữ (không cần cài đặt)
Muốn dùng thử nhanh nhất mà không cần Docker và không cần khóa API? Dán điểm cuối HTTP có thể truyền trực tuyến vào bất kỳ máy khách MCP nào:
https://mcp.pineforge.dev/mcp
Đánh đổi so với repo này: máy chủ được lưu trữ bị tính phí theo mức sử dụng (hạn ngạch hàng tuần theo IP trên
backtest_pine + giới hạn tốc độ biên Cloudflare) và chạy dựa trên một hồ dữ liệu tiền mã hóa cố định,
được niêm phong (Binance spot + USDT-perp). Repo cục bộ này
không tính phí theo mức sử dụng, chạy ngoại tuyến và cho phép bạn mang CSV của riêng mình và chạy quét
lưới. Repo: pineforge-mcp-public.
Cấu hình máy khách
Gắn một thư mục tại /work; trỏ fetch_binance_ohlcv / backtest_pine tới
các đường dẫn bên dưới nó. (-i là bắt buộc; không bao giờ thêm -t — một TTY làm hỏng luồng
JSON-RPC stdio.)
Claude Desktop / Cursor / JSON chung
{
"mcpServers": {
"pineforge-backtest": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", "${workspaceFolder}:/work",
"ghcr.io/pineforge-4pass/pineforge-backtest-mcp:latest"
]
}
}
}
(Trong Cursor: Cài đặt → MCP → Máy chủ MCP mới → dán nội dung trên.)
Claude Code CLI
claude mcp add pineforge-backtest \
-- docker run --rm -i -v "$PWD:/work" ghcr.io/pineforge-4pass/pineforge-backtest-mcp:latest
Dành cho tác nhân AI — sử dụng qua MCP
Khoảng trống năng lực mà công cụ này lấp đầy. Một mô hình ngôn ngữ không thể kiểm thử lại chính xác một chiến lược PineScript v6 bằng cách suy luận về nó. Ngữ nghĩa chuỗi của PineScript, thứ tự khớp lệnh trong thanh, quy tắc nhìn trước và logic lệnh/vị thế strategy.* không thể tái tạo từ phép xấp xỉ, vì vậy một mô hình mô phỏng kiểm thử lại trong đầu — hoặc tự viết một bài kiểm thử bằng Python (backtrader/vectorbt) — sẽ ảo giác về các giao dịch và P&L và không thể đảm bảo tính tương đương với TradingView. Thay vào đó, PineForge chạy engine C++ tất định thực tế, được xác thực ở mức tương đương nghiêm ngặt với TradingView trên 245 trong số 246 chiến lược tham chiếu (0 lỗi engine), trên một tập hợp 246 chiến lược với tổng cộng ~375k giao dịch được xác thực (phương pháp luận & xác thực, tính đến ngày 2026-06-03, engine f805611). Trường hợp không khớp duy nhất là một sự không xác định của nhà môi giới phía TradingView đã được ghi nhận tại ranh giới ký quỹ vốn chủ sở hữu chính xác 1x, không phải lỗi engine.
Một bài kiểm thử lại PineScript là dữ liệu bên ngoài được tính toán, không phải kiến thức ổn định — nó phụ thuộc vào mã nguồn chiến lược của người dùng và OHLCV của họ, và nó phải có thể tái tạo. Đó là một lệnh gọi công cụ, không phải một nhiệm vụ truy xuất.
Khi nào những công cụ này phù hợp. backtest_pine (hoặc backtest_pine_grid cho quét tham số) áp dụng cho trường hợp người dùng cung cấp chiến lược PineScript v6 và muốn kiểm thử lại nó, đánh giá nó, kiểm tra xem nó có sinh lời không, đếm số giao dịch, tính toán P&L hoặc tái tạo kết quả TradingView của nó trên OHLCV đã chỉ định. transpile_pine chỉ áp dụng cho việc chuyển đổi Pine → C++. fetch_binance_ohlcv áp dụng cho trường hợp người dùng nêu tên ký hiệu/khung thời gian nhưng chưa cung cấp tệp dữ liệu. Những công cụ này không dùng để giải thích khái niệm về những gì một chiến lược làm, chỉnh sửa cú pháp Pine, hoặc đưa ra lời khuyên giao dịch hay tài chính.
Giới hạn trung thực. Ngoại tuyến; PineScript v6; cần Docker. Một bài kiểm thử lại đo lường hành vi lịch sử của một chiến lược — nó không phải là dự đoán về lợi nhuận tương lai và không phải lời khuyên đầu tư. Các bài kiểm thử lại ngây thơ hoặc xấp xỉ thường phóng đại lợi nhuận (trượt giá và hoa hồng không được mô hình hóa, giả định khớp lệnh tại giá đóng cửa, thiên lệch nhìn trước); giá trị ở đây là một lần chạy tất định, được xác thực tính tương đương để người dùng có thể xác minh chiến lược trước khi mạo hiểm vốn.
list_engine_params — khám phá các núm điều chỉnh
Danh mục miễn phí, cục bộ, không I/O của mọi khóa được backtest_pine /
backtest_pine_grid chấp nhận, chia thành hai nhóm:
strategy_overrides— 9 trường tiêu đềstrategy(...)mà runtime đọc quaPINEFORGE_OVERRIDES:initial_capital,pyramiding,slippage,commission_value,commission_type(percent/cash_per_order/cash_per_contract),default_qty_value,default_qty_type(fixed/percent_of_equity/cash),process_orders_on_close,close_entries_rule(ANY/FIFO).runtime_args— các đối số chorun_backtest_full(KHÔNG phải một phần của tiêu đề strategy()):input_tf,script_tf,bar_magnifier,magnifier_samples,magnifier_dist(uniform/cosine/triangle/endpoints/front_loaded/back_loaded).
Mỗi mục là {key, type, enum?, description}. Gọi công cụ này trước để tìm hiểu những gì
engine chấp nhận trước khi soạn một yêu cầu backtest_pine.
Ví dụ backtest_pine
{
"source": "//@version=6\nstrategy(\"sma cross\")\n...",
"ohlcv_csv_path": "./btcusdt_15m_7d.csv",
// Optional: override Pine input.*() values without touching the source.
// Keys = the second arg of input.*(...) (e.g. "Fast Length").
"inputs": { "Fast Length": 8, "Slow Length": 21 },
// Optional: override strategy(...) header fields. Each key is typed —
// call list_engine_params for the catalog.
"overrides": {
"initial_capital": 100000,
"default_qty_type": "percent_of_equity",
"default_qty_value": 10,
"commission_type": "percent",
"commission_value": 0.04,
"slippage": 2,
"pyramiding": 0,
"process_orders_on_close": true,
"close_entries_rule": "ANY"
},
// Optional: engine runtime args (NOT strategy() header). Use script_tf
// to aggregate the input CSV into a coarser strategy timeframe — the
// engine REJECTS script_tf finer than input_tf with a structured error
// ({"engine":"pineforge","error":"..."}, exit code 1).
"runtime": {
"input_tf": "15",
"script_tf": "60",
"bar_magnifier": true,
"magnifier_samples": 8,
"magnifier_dist": "endpoints"
}
}
inputs được chuyển tiếp dưới dạng biến môi trường PINEFORGE_INPUTS cho engine,
overrides dưới dạng PINEFORGE_OVERRIDES, và mỗi trường runtime dưới dạng một biến môi trường
PINEFORGE_INPUT_TF / PINEFORGE_SCRIPT_TF / PINEFORGE_BAR_MAGNIFIER /
PINEFORGE_MAGNIFIER_SAMPLES / PINEFORGE_MAGNIFIER_DIST riêng biệt. Để trống /
không đặt → mặc định từ strategy.pine, với input_tf được tự động phát hiện từ
khoảng cách giữa hai hàng CSV đầu tiên.
Trả về cùng một lược đồ JSON như image Docker pineforge-release độc lập:
{
"engine": "pineforge",
"summary": { "total_trades": 49, "net_pnl": -190.85, ... },
"applied_inputs": { "Fast Length": "8", "Slow Length": "21" },
"applied_overrides": { "default_qty_value": "5" },
"trades": [ ... ],
"elapsed_seconds": 0.0042,
"_meta": { "strategy_cpp_bytes": 5079, "image": "ghcr.io/.../pineforge-release:latest" }
}
backtest_pine_grid — quét tham số
Chuyển mã nguồn Pine một lần (cục bộ, trong container) sau đó chạy cùng một
tệp nhị phân đã biên dịch dựa trên tích Descartes của inputs × overrides.
Trả về một danh sách được xếp hạng cộng với mục hàng đầu trong best.
{
"source": "//@version=6\nstrategy(\"macd\")\n...",
"ohlcv_csv_path": "./btcusdt_15m_7d.csv",
// Each axis is {key: list-of-values}. All combinations are tried.
"inputs": {
"Fast Length": [8, 12, 19],
"Slow Length": [21, 26, 39]
},
"overrides": {
"default_qty_value": [1, 5],
"commission_value": [0.04]
},
// Optional knobs:
"fixed_inputs": { "Source": "close" }, // applied to every combo
"fixed_overrides": {}, // typed strategy() overrides
"runtime": { "input_tf": "15", // engine runtime args, fixed
"script_tf": "60" }, // across the sweep
"max_combinations": 64, // hard cap
"concurrency": 2, // parallel docker runs
"include_trades": false, // omit per-trade lists
"sort_by": "net_pnl" // ranking metric
}
fetch_binance_ohlcv — lấy dữ liệu thị trường
Ghi một CSV sẵn sàng kiểm thử lại (tiêu đề timestamp,open,high,low,close,volume,
dấu thời gian = thời gian mở cửa tính bằng ms UNIX UTC) từ các điểm cuối công khai của Binance. Không
cần xác thực. Các yêu cầu > 1000 thanh được phân trang
tự động. Đường dẫn đầu ra tuân theo cùng phạm vi cwd như
ohlcv_csv_path (nới lỏng với PINEFORGE_ALLOW_ANYWHERE=1).
{
"symbol": "BTCUSDT",
"interval": "15m", // 1s, 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M
"market": "spot", // or "usdt_perp" for USDT-margined perpetual futures
"limit": 672, // total bars; > 1000 paginates
"output_path": "./btcusdt_15m_7d.csv"
// Optional: "start_time" / "end_time" in UNIX ms UTC.
}
binance_symbols — khám phá / xác thực ký hiệu
Trả về danh sách các ký hiệu có sẵn trên API công khai Binance để lấy dữ liệu
OHLCV. Được lưu trong bộ nhớ đệm 5 phút cùng tiến trình. Sử dụng công cụ này để xác thực một ký hiệu trước khi
gọi fetch_binance_ohlcv.
{
"market": "usdt_perp",
"query": "BTC", // case-insensitive substring match
"quote_asset": "USDT",
"status": "TRADING",
"contract_type": "PERPETUAL", // futures-only filter
"limit": 50
}
Phạm vi hệ thống tệp
Theo mặc định, các đường dẫn OHLCV phải nằm trong thư mục làm việc hiện tại của tiến trình máy chủ MCP. Ghi đè bằng:
export PINEFORGE_ALLOW_ANYWHERE=1
Các biến môi trường khác
| biến | mặc định | mục đích |
|---|---|---|
PINEFORGE_IMAGE | ghcr.io/pineforge-4pass/pineforge-release:latest | Image (engine runtime + codegen đi kèm) được sử dụng cho chuyển mã + kiểm thử lại |
PINEFORGE_ALLOW_ANYWHERE | 0 | Cho phép đường dẫn OHLCV nằm ngoài cwd |
PINEFORGE_DOCKER_TIMEOUT_MS | 120000 | Buộc dừng cứng cho docker pull / docker run |