Cómo crear un flujo de trabajo de análisis técnico y pruebas retrospectivas con pandas-ta-classic, señales estratégicas y métricas de rendimiento
entradas = df.index[(df[“pos”].diff() == 1)]sale = df.index[(df[“pos”].diff() == -1)]fig, (ax1, ax2, ax3) = plt.subplots( 3, 1, figsize=(13, 10), sharex=True, gridspec_kw={“height_ratios”: [3, 1, 2]}, ) ax1.plot(df.index, df[“close”]lw=1.1, color=”negro”, etiqueta=”Cerrar”) ax1.plot(df.index, df[“SMA_20″]lw=0.9, etiqueta=”SMA 20”) ax1.plot(df.index, df[“SMA_50″]lw=0.9, label=”SMA 50”) bbu, bbl = “BBU_20_2.0”, “BBL_20_2.0″ si bbu en df y bbl en df: ax1.fill_between(df.index, df[bbl]df[bbu]alfa=0,12, etiqueta=”Bollinger 20,2”) ax1.scatter(entradas, df.loc[entries, “close”]marcador=”^”, s=70, color=”verde”, zorder=5, etiqueta=”Entrada”) ax1.scatter(salidas, df.loc[exits, “close”]marcador=”v”, s=70, color=”rojo”, zorder=5, label=”Salir”) ax1.set_title(f”{TICKER} — precio, MA, Bollinger, señales”) ax1.legend(loc=”upper left”); ax1.grid(alfa=0.3) ax2.plot(df.index, df[“RSI_14″]lw=0.9, label=”RSI 14″) ax2.axhline(70, color=”red”, ls=”–“, lw=0.6) ax2.axhline(30, color=”green”, ls=”–“, lw=0.6) ax2.set_title(“RSI 14″); ax2.legend(loc=”superior izquierda”); ax2.grid(alfa=0.3) ax3.plot(df.index, (1 + df[“ret”]).cumprod(), lw=1.1, label=”Comprar y mantener”) ax3.plot(df.index, (1 + df[“strat_ret”]).cumprod(), lw=1.1, label=”Estrategia”) ax3.set_title(“Curvas de equidad ($1 inicio)”) ax3.legend(loc=”superior izquierda”); ax3.grid(alpha=0.3) plt.tight_layout(); plt.show() print(“\nModifique el TICKER, la lista de estrategias o la cuadrícula de barrido para seguir explorando.”)