Corre backtests PineScript offline, con tus datos
PineForge transpila PineScript v6 a C++ nativo y lo ejecuta en tu máquina mediante Docker. Prioridad al entorno local, reproducible a nivel de bytes, donde Docker esté disponible. Usa tu propio CSV OHLCV.
¿Por qué offline?
El backtest en el navegador destaca para iterar junto al gráfico. El modo sin conexión es lo adecuado cuando el siguiente paso es capital real: pista de auditoría, CI que valide cada commit y un resultado de hace dos meses que se reproduzca bit a bit hoy.
Ejecutar sin conexión te da lo que el motor en navegador no ofrece: resultados reproducible a nivel de bytes — misma entrada, misma salida, siempre. Fijas la versión del motor, registras resultados en el repositorio, comparas listas de operaciones entre commits y todo sin interfaz en CI. El CSV es tuyo; el binario es local; el informe es auditable.
Lista práctica: motor con versión fija para que un commit antiguo genere la misma lista hoy; ingesta de datos a medida para reconstrucciones de ticks de tu exchange, precios de equity «point-in-time» de tu proveedor o cualquier dato alternativo serializable a OHLCV; CI que haga fallar la compilación ante regresiones; portabilidad multi-bróker porque tu lógica es un archivo, no una plataforma.
Si alguna vez intentaste compartir un backtest y solo pudiste enviar una captura del gráfico, te falta ejecutar en modo sin conexión.
Cómo funciona
Tres pasos. De Pine fuente a JSON de trades: menos de dos minutos la primera vez; menos de treinta segundos después.
Paso 1 — Descarga el runtime. Una sola imagen de contenedor. Sin pip, sin clave, sin registro — la transpilación y el backtest corren dentro de ella, sin conexión. Gratis para trading personal.
Paso 2 — Transpila tu Pine a C++. Ejecuta el contenedor en modo solo transpilación y convierte tu PineScript v6 en un archivo fuente C++ completo, en local. No corre ningún intérprete de Pine en tiempo de ejecución — el motor lo compila a código máquina nativo.
docker run --rm --network=none \ -e PINEFORGE_TRANSPILE_ONLY=1 \ -v "$(pwd)/my_strategy.pine":/in/strategy.pine:ro \ ghcr.io/pineforge-4pass/pineforge-engine:latest > strategy.cpp
Paso 3 — Backtest. Monta tu CSV OHLCV junto al C++ generado y ejecuta el contenedor. El motor lee el archivo de datos, ejecuta la estrategia barra a barra y escribe un informe JSON en stdout.
docker run --rm --network=none \ -v "$(pwd)/strategy.cpp":/in/strategy.cpp:ro \ -v "$(pwd)/ohlcv.csv":/in/ohlcv.csv:ro \ ghcr.io/pineforge-4pass/pineforge-engine:latest > report.json
El JSON trae lista completa de trades con precios entrada/salida, índices de barra, tamaños y bloque resumen: net PnL, max drawdown, total trades, profit factor, Sharpe. Campos estables entre patches de la misma major — parsea tranquilo en scripts.
Eso es todo. Sin GUI, sin re-login de cuenta, sin cargar charts. Si tienes Docker, tienes backtests PineForge offline.
Qué puedes backtestear
Respuesta corta: todo lo serializable como OHLCV. PineForge no está cableado a ningún data vendor. Tú traes datos; el motor corre la estrategia.
Crypto desde tu exchange. Trades crudos de Binance, Bybit, Kraken o cualquier venue con REST/WebSocket. Agrega al timeframe que uses. Mete el CSV. Prueba el par y venue exactos que operarás.
Equities desde tu proveedor. Polygon, Norgate, BarChart, Tiingo — elige fuente, exporta precios ajustados point-in-time, backtest con tus fills reales y universo sin sesgo de supervivencia.
Reconstrucciones de ticks. ¿Level 2 y barras sintéticas de 1s desde ticks? Genera OHLCV desde ticks y pásalo. Al motor le da igual el origen de las barras.
Alt-data. Sentimiento, on-chain, funding, skew de opciones — si es serie temporal alineada al índice de barras, entra en Pine vía columnas custom y lo pruebas offline.
Las 246 estrategias de referencia de la galería se ejecutaron contra CSV de TradingView (para validación de paridad) y conjuntos de datos CSV personalizados (para pruebas de regresión). 245 de las 246 alcanzan el nivel canónico estricto-excelente (deriva de PnL ≤ 0.5% en la ventana de comparación). La 1 restante es una anomalía documentada del lado de TV — analizada a fondo, trazada al estado de TradingView. Cero bugs reales del motor.