Team Ai
Apppublic

diegobeyl/backtesting

sourceHugging Faceupdated 9mo agoView on Hugging Face
2likes
verify_sl_levels.py151 linesDownload Raw Back to analysis
1"""
2Script para verificar que los stops coinciden con soporte/resistencia
3"""
4
5import sys
6import os
7sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'backtesting_app', 'backtesting_app'))
8
9print("=" * 80)
10print("VERIFICACIÓN: Stop Loss vs Soporte/Resistencia")
11print("=" * 80)
12print()
13
14print("📋 LÓGICA DEL ALGORITMO FAST:")
15print()
16print("1. SEÑAL LONG (compra):")
17print("   - Se genera cuando: rompe resistencia hacia arriba")
18print("   - Stop Loss debe ser: SOPORTE actual")
19print("   - Razón: El soporte es el nivel que protege la posición long")
20print()
21print("2. SEÑAL SHORT (venta):")
22print("   - Se genera cuando: rompe soporte hacia abajo")
23print("   - Stop Loss debe ser: RESISTENCIA actual")
24print("   - Razón: La resistencia es el nivel que protege la posición short")
25print()
26
27print("=" * 80)
28print("CÓDIGO DEL ALGORITMO (fast_ariascampos.py líneas 258-278)")
29print("=" * 80)
30print()
31print("# LONG: cuando rompe resistencia")
32print("if resistenceBroken and tendency_antes == 0 and tendency == 1:")
33print("    signal = TradeSignal(")
34print("        signal_type='LONG',")
35print("        stop_loss=support,  ← CORRECTO: usa soporte")
36print("    )")
37print()
38print("# SHORT: cuando rompe soporte")
39print("if supportBroken and tendency_antes == 1 and tendency == 0:")
40print("    signal = TradeSignal(")
41print("        signal_type='SHORT',")
42print("        stop_loss=resistence,  ← CORRECTO: usa resistencia")
43print("    )")
44print()
45
46print("=" * 80)
47print("¿POR QUÉ PUEDE VERSE INCONGRUENCIA EN EL GRÁFICO?")
48print("=" * 80)
49print()
50
51print("PROBLEMA 1: TIMING - El Stop se toma AL MOMENTO de la señal")
52print("-" * 70)
53print()
54print("El stop loss se captura en la BARRA donde se genera la señal.")
55print("Pero el soporte/resistencia puede CAMBIAR en barras posteriores.")
56print()
57print("Ejemplo:")
58print()
59print("Barra 5: Rompe resistencia en $230")
60print("         Soporte en ese momento: $220")
61print("         → Señal LONG con stop en $220 ✅")
62print()
63print("Barra 6: Precio sube a $240")
64print("         Soporte sube a $225")
65print("         → Stop se actualiza a $225 (trailing)")
66print()
67print("Barra 7: Mirando el gráfico VES soporte en $225")
68print("         Pero el STOP INICIAL era $220")
69print("         → Puede parecer incongruente si miras la línea actual")
70print()
71
72print("PROBLEMA 2: DISPLAY - Tabla muestra 'Stop Inicial'")
73print("-" * 70)
74print()
75print("La tabla de trades muestra:")
76print("   'Stop Inicial': $220  ← El stop AL ENTRAR")
77print()
78print("Pero el gráfico muestra:")
79print("   Línea verde (soporte) en $225  ← El soporte ACTUAL (barra 7)")
80print()
81print("No coinciden porque son momentos diferentes.")
82print()
83
84print("PROBLEMA 3: LOOKBEHIND - Soporte puede estar barras atrás")
85print("-" * 70)
86print()
87print("Si lookbehind > 0, el soporte puede venir de barras anteriores:")
88print()
89print("Barra 5: Low = $220")
90print("Barra 6: Low = $225")
91print("Barra 7: Low = $230")
92print("         Con lookbehind=2, soporte = min($230, $225, $220) = $220")
93print()
94print("En el gráfico actual (barra 7) el low es $230,")
95print("pero el soporte usado es $220 (de 2 barras atrás).")
96print()
97
98print("=" * 80)
99print("SOLUCIÓN: AGREGAR COLUMNA 'SOPORTE/RESISTENCIA EN ENTRADA'")
100print("=" * 80)
101print()
102print("Para verificar la incongruencia, necesitamos agregar a la tabla:")
103print()
104print("Para LONG:")
105print("   - Stop Inicial: $220")
106print("   - Soporte en entrada: $220  ← Debería coincidir")
107print("   - Entrada: $230")
108print()
109print("Para SHORT:")
110print("   - Stop Inicial: $235")
111print("   - Resistencia en entrada: $235  ← Debería coincidir")
112print("   - Entrada: $225")
113print()
114
115print("=" * 80)
116print("CÓMO VERIFICAR")
117print("=" * 80)
118print()
119print("1. En la tabla de trades, mira:")
120print("   - Fecha Entrada")
121print("   - Stop Inicial")
122print()
123print("2. En el gráfico, busca la fecha de entrada")
124print()
125print("3. Mira qué valor tiene la línea verde/roja EN ESA FECHA")
126print("   - LONG → línea verde (soporte) debe coincidir con Stop Inicial")
127print("   - SHORT → línea roja (resistencia) debe coincidir con Stop Inicial")
128print()
129print("4. Si NO coinciden:")
130print("   - Verifica si hay lookbehind > 0 (mira barras anteriores)")
131print("   - Verifica si la señal se generó en la apertura de la barra")
132print("   - Puede haber un bug en la visualización del gráfico")
133print()
134
135print("=" * 80)
136print("ACCIÓN RECOMENDADA")
137print("=" * 80)
138print()
139print("Comparte:")
140print("1. Una captura de la tabla de trades (primera fila)")
141print("2. Una captura del gráfico en esa fecha específica")
142print("3. Los valores de:")
143print("   - Fecha Entrada")
144print("   - Dirección (LONG/SHORT)")
145print("   - Precio Entrada")
146print("   - Stop Inicial")
147print()
148print("Con esa info podré verificar si hay un bug real o es un problema")
149print("de interpretación del gráfico.")
150print()
151