IDE: parâmetros, validação e histórico
Parâmetros com sliders para ajustar e otimizar, o diagnóstico ao vivo, as versões automáticas e a caixa de segurança.

Esta página cobre três coisas que tornam o IDE confortável e seguro: parâmetros ajustáveis com sliders, o diagnóstico ao vivo que avisa sobre erros enquanto você digita, e o histórico de versões automáticas que salva seu progresso. No final você encontrará também tudo que precisa saber sobre a caixa de segurança (sandbox) onde seu código é executado.
Parâmetros com Parameter()
Quando você declara um atributo de classe com `Parameter(...)`, o TradingNote o detecta automaticamente e cria um slider no painel direito do IDE. Assim você pode ajustar valores sem tocar no código, e esses mesmos parâmetros ficam prontos para serem varridos pelo otimizador quando chegar a hora.
class MiEstrategia(Strategy):
rsi_period = Parameter(14, min_val=5, max_val=50, step=1, label="Periodo RSI")
sl_atr = Parameter(1.5, min_val=0.5, max_val=5.0, step=0.1, label="Stop Loss (ATR)")| Argumento | O que define |
|---|---|
| Primeiro (posicional) | Valor padrão do parâmetro. |
| min_val | Mínimo do slider. |
| max_val | Máximo do slider. |
| step | Incremento entre valores do slider. |
| label | Rótulo visível no painel de parâmetros. |
Agrupar parâmetros
Você pode organizar os sliders em seções com um comentário especial imediatamente antes do grupo. O IDE reconhece a sintaxe `# ── Nome ──` e cria um cabeçalho visual que separa os parâmetros no painel.
class MiEstrategia(Strategy):
# ── Entrada ──
rsi_period = Parameter(14, min_val=5, max_val=50, step=1, label="Periodo RSI")
# ── Salida ──
sl_atr = Parameter(1.5, min_val=0.5, max_val=5.0, step=0.1, label="Stop (ATR)")
tp_atr = Parameter(3.0, min_val=0.5, max_val=10.0, step=0.1, label="Target (ATR)")Use Parameter() para tudo que queira poder ajustar. Mais tarde, esses mesmos parâmetros são os que o otimizador vai variar para encontrar a melhor configuração, então quanto mais você declarar desde o início, mais margem de melhoria terá.
Diagnóstico ao vivo
Enquanto você digita, a aba de Diagnóstico (painel inferior do IDE) marca problemas na hora, sem que você precise executar nada. Quando tudo está correto, aparece o estado verde «código limpo»; se houver algo errado, você verá contadores de erros e avisos com a linha exata.
- Imports ou funções proibidas (acesso fora do sandbox).
- Ausência da classe Strategy como classe base.
- Ausência do método obrigatório on_bar().
- Indentação inválida (mistura de espaços e tabs).
- Parênteses, aspas ou chaves sem fechar.
Histórico de versões
Você não precisa salvar manualmente. O IDE salva automaticamente a cada 1,5 segundos aproximadamente e, se houve mudanças, cria um snapshot automático a cada ~30 segundos. São mantidas até 100 versões por arquivo. Na aba Histórico você pode ver todas as versões anteriores com seu timestamp e restaurar qualquer uma com um único clique.
Se você quebrar algo, abra a aba Histórico e volte para uma versão que funcionava. Nada se perde: o IDE salva silenciosamente enquanto você programa.
A caixa de segurança (sandbox)
Seu código é executado de forma isolada por segurança: sem acesso à internet, sem disco, sem bibliotecas do sistema operacional. Isso protege a plataforma e todos os outros usuários. A tabela abaixo resume o que é permitido e o que é bloqueado.
| Permitido | Bloqueado |
|---|---|
| `from strategy_base import Strategy, Parameter` | Módulos de sistema: os, sys, subprocess, socket, requests, urllib, threading, multiprocessing, pickle, sqlite3 e similares. |
| Importar seus próprios arquivos do projeto (ex. `from helpers import minha_funcao`). | Funções built-in perigosas: open(), eval(), exec(), compile(), __import__(), input(). |
| Python puro: cálculos, if/for, listas, dicionários, classes próprias... | Atributos de introspecção: __class__, __globals__, __subclasses__() e similares. |
Se você ver um erro de «import bloqueado» ou «função bloqueada», não é um bug da plataforma: é o sandbox funcionando corretamente. Resolva implementando a lógica com Python puro ou com a API da Strategy, que já cobre os casos de uso comuns.
Projetos com vários arquivos
Você pode dividir sua estratégia em vários arquivos .py (por exemplo main.py e helpers.py) e pastas, e importar entre eles normalmente usando caminhos relativos. O ponto de entrada obrigatório é sempre main.py.
# helpers.py
def es_sesion_londres(hora_utc):
return 7 <= hora_utc < 16
# main.py
from strategy_base import Strategy, Parameter
from helpers import es_sesion_londres
class MiEstrategia(Strategy):
def on_bar(self):
if not es_sesion_londres(self.current_bar.hour):
return
# ... lógica de tradingPublicar como algoritmo
Quando sua estratégia estiver pronta, pressione «Salvar como algoritmo». Lembre-se de que o IDE não executa o código: ao salvar, a estratégia passa para «Meus Algoritmos» como um novo algoritmo, e é aí que você faz o backtest, ajusta seus parâmetros para encontrar os melhores, valida estatisticamente (DSR, Walk-Forward, Multiverso) e, se passar, adiciona a um portfólio ou leva ao live trading.
A iteração é a chave: ajuste um slider, execute o backtest, veja o resultado e repita. A cada rodada você afina um pouco mais a estratégia. O histórico automático permite experimentar sem medo de perder o que já funcionava.