🏆 APEX CONTEST ⚠️ SIN CONEXIÓN

Total Alumnos

0

👨‍🎓

Posiciones Activas

0

📈

Rendimiento General

$0.00

💵

Win Rate Promedio

0%

🎯

Ranking de Rentabilidad

🔍
Rango Email Estudiante Balance Actual PNL Neto Total Rentabilidad (%) Win Rate Trades Posiciones Detalle
Cargando ranking de estudiantes...

Gestión de Alumnos del Concurso

🔍
Email Estudiante Fecha Registro Última Actividad Balance Inicial Acciones
Cargando base de datos...

🔌 Integración con TradingView

💡 ¿Cómo funciona el Webhook del Concurso?

El servidor local recibe alertas en tiempo real de TradingView mediante peticiones HTTP POST al endpoint del Webhook. Para que sea 100% automático, la plantilla utiliza la función alert() incorporada de Pine Script. Tus estudiantes solo deben pegar la URL del Webhook al crear la alerta y seleccionar "Cualquier llamada a la función alert()" (Any alert() function call). ¡No necesitan configurar ningún texto o JSON en el mensaje de la alerta!

1. Endpoint URL del Webhook

Configura este enlace como la dirección del Webhook en la alerta de TradingView:

cargando_url_webhook...

2. Código Base en Pine Script (Estrategia Automática)

Tus estudiantes pueden agregar esta plantilla Pine Script v6 a sus estrategias. Detecta automáticamente las entradas, salidas, stop loss y take profit en tiempo real y despacha las estadísticas al servidor local sin intervención manual:

//@version=6
// URL del Webhook: https://lyndon-ciderlike-nondynamically.ngrok-free.dev/webhook?token=${settings.webhookToken}

strategy("Plantilla Concurso TradingView - Apex", overlay=true, margin_long=100, margin_short=100)

// CONFIGURACIÓN DEL ESTUDIANTE
student_email = input.string("estudiante@correo.com", title="Tu Email Registrado")
quantity_multiplier = input.float(1.0, title="Multiplicador de Contratos")

// Parámetros de Stop Loss y Take Profit en PIPS (o ticks para futuros, 0 para desactivar)
sl_pips = input.int(100, title="Stop Loss (Pips/Ticks)")
tp_pips = input.int(200, title="Take Profit (Pips/Ticks)")

// ==========================================
// 💡 TUS CONDICIONES DE ENTRADA Y SALIDA
// ==========================================
// Reemplaza "false" por tus propios indicadores o condiciones de trading.
// Por ejemplo:
// buy_condition = ta.crossover(ta.sma(close, 9), ta.sma(close, 21))
// sell_condition = ta.crossunder(ta.sma(close, 9), ta.sma(close, 21))

buy_condition = false
sell_condition = false

// Ejecutar las órdenes en la estrategia
if buy_condition
    strategy.entry("Long", strategy.long, qty=quantity_multiplier)

if sell_condition
    strategy.entry("Short", strategy.short, qty=quantity_multiplier)

// Configurar SL y TP en la estrategia
long_sl = sl_pips > 0 ? strategy.position_avg_price - (sl_pips * syminfo.mintick) : na
long_tp = tp_pips > 0 ? strategy.position_avg_price + (tp_pips * syminfo.mintick) : na
short_sl = sl_pips > 0 ? strategy.position_avg_price + (sl_pips * syminfo.mintick) : na
short_tp = tp_pips > 0 ? strategy.position_avg_price - (tp_pips * syminfo.mintick) : na

if strategy.position_size > 0
    strategy.exit("Exit Long", "Long", stop=long_sl, limit=long_tp)

if strategy.position_size < 0
    strategy.exit("Exit Short", "Short", stop=short_sl, limit=short_tp)

// ==========================================
// ⚙️ ENVÍO AUTOMÁTICO DE WEBHOOKS
// ==========================================
// Esta sección detecta cambios de posición en la estrategia y despacha 
// las alertas en formato JSON al webhook sin que el estudiante deba escribir nada.

prev_pos = strategy.position_size[1]
curr_pos = strategy.position_size

if curr_pos != prev_pos
    string json_msg = ""
    
    if curr_pos > 0 and prev_pos <= 0 // Entrada a Compra (Long)
        json_msg := '{"email": "' + student_email + '", "symbol": "' + syminfo.ticker + '", "action": "buy", "price": ' + str.tostring(close) + ', "quantity": ' + str.tostring(math.abs(curr_pos)) + ', "sl": ' + str.tostring(long_sl) + ', "tp": ' + str.tostring(long_tp) + '}'
        
    else if curr_pos < 0 and prev_pos >= 0 // Entrada a Venta Corta (Short)
        json_msg := '{"email": "' + student_email + '", "symbol": "' + syminfo.ticker + '", "action": "sell", "price": ' + str.tostring(close) + ', "quantity": ' + str.tostring(math.abs(curr_pos)) + ', "sl": ' + str.tostring(short_sl) + ', "tp": ' + str.tostring(short_tp) + '}'
        
    else if curr_pos == 0 // Cierre total de posición (Flat)
        json_msg := '{"email": "' + student_email + '", "symbol": "' + syminfo.ticker + '", "action": "flat", "price": ' + str.tostring(close) + '}'
        
    else if (curr_pos > 0 and prev_pos > 0) or (curr_pos < 0 and prev_pos < 0) // Aumento o reducción parcial
        string act = curr_pos > prev_pos ? "buy" : "sell"
        float sl_val = curr_pos > 0 ? long_sl : short_sl
        float tp_val = curr_pos > 0 ? long_tp : short_tp
        json_msg := '{"email": "' + student_email + '", "symbol": "' + syminfo.ticker + '", "action": "' + act + '", "price": ' + str.tostring(close) + ', "quantity": ' + str.tostring(math.abs(curr_pos - prev_pos)) + ', "sl": ' + str.tostring(sl_val) + ', "tp": ' + str.tostring(tp_val) + '}'

    if json_msg != ""
        alert(json_msg, alert.freq_all)

⚙️ Configuración Global del Concurso

Capital virtual con el que los estudiantes iniciarán y con el que se calculará el porcentaje de rentabilidad.

Filtro de seguridad en la URL del Webhook para evitar ejecuciones externas fraudulentas.

🔑 Contraseña del Administrador

Cambia la clave por defecto "admin123" para proteger la administración del concurso de trading.


⚠️ Zona Peligrosa

Wipe total del concurso. Esto restablecerá los balances y vaciará el historial de absolutamente todos los estudiantes registrados de forma irreversible.

estudiante@correo.com

Monitoreo de Cuenta y Rendimiento del Concurso

Balance de Cuenta

$0.00

PnL Neto Acumulado

+$0.00

Win Rate

0.0%

Operaciones Totales

0

Métricas Clave

Fecha de Registro:-
Último Trade:-
Operaciones Ganadas:0
Operaciones Perdidas:0

📈 Posiciones Abiertas en Tiempo Real

Activo Tipo Precio Entrada Cantidad Stop Loss (SL) Take Profit (TP) R:R Inicial Fecha Entrada

📜 Bitácora Completa de Operaciones

Activo Operación Entrada Salida Cantidad Stop Loss (SL) Take Profit (TP) R:R Inicial PNL Neto Resultado Tiempo Retención
🏆

APEX CONTEST

MONITOREO DE TRADINGVIEW

Contraseña incorrecta
⚠️

¡Ejecución Incorrecta Detectada!

Has abierto este panel directamente haciendo doble clic desde tus carpetas (protocolo file://). Por limitaciones de seguridad de los navegadores modernos (CORS), las peticiones no funcionarán y no se cargarán los datos.

Para solucionarlo y ver los datos:
  1. Asegúrate de iniciar el servidor local haciendo doble clic en el archivo Iniciar_Servidor.bat.
  2. Una vez abierto el servidor, abre tu navegador e ingresa a: http://localhost:5000