TradeShield Position Manager Library
- Bibliotecas
-
AL MOOSAWI ABDULLAH JAFFER BAQER
To trade successfully we need to go through the proven path that others had gone and reached!
Here are 17 quotes from such successful investors:
1- Limit your size in any position so that fear does not become the prevailing instinct guiding your judgment.
Joe Vidich - Versión: 1.0
- Activaciones: 10
Pruébalo antes de decidirte: incorpora el EA de demostración gratuito en el Strategy Tester con el modo visual activado, abre unas cuantas operaciones manuales y observa cómo el panel dorado de TradeShield lee cada dato de la cesta que devuelve la biblioteca, tick a tick.
Una biblioteca compilada que se encarga de las operaciones que tu Asesor Experto ya ha abierto, de modo que tu propio código pueda centrarse en cuándo entrar, y no en las docenas de pequeñas reglas que determinan si el servidor acepta un cambio de stop o un cierre.
Por qué se llama TradeShield
Abrir una posición es una sola línea de código. Protegerla es donde fallan la mayoría de los EA: un stop desplazado dentro del nivel de stops del bróker, una modificación enviada mientras la posición está congelada, un cierre parcial que deja un saldo por debajo del lote mínimo, un bucle de trailing que capta las operaciones de otro EA porque solo comprobó el símbolo. Cada uno de estos casos supone una solicitud rechazada en el registro, una validación de mercado fallida o, peor aún, una cuenta real en la que dos robots se disputan las mismas posiciones. TradeShield interpone un escudo entre tu lógica y el servidor de operaciones: cada solicitud se normaliza, se comprueba con respecto a los límites propios del símbolo y solo entonces se envía, con reintentos cuando estos tienen sentido.
Aislamiento de «magic number», integrado en cada llamada
Cada función de cesta toma el símbolo y el número mágico como parámetros y solo lee o modifica las posiciones que coinciden con ambos. Ejecuta el mismo EA en el EURUSD y el XAUUSD con números mágicos diferentes, o tres robots distintos en un mismo símbolo, y cada uno gestionará estrictamente sus propias operaciones. No hay estado compartido, ni variables globales ni archivos, por lo que no se produce ninguna fuga de información entre gráficos.
Qué incluye: 26 funciones en seis grupos
1. Seguridad y mantenimiento. TS_Version devuelve la versión de la biblioteca para tus registros. TS_LastError devuelve un resultado en lenguaje sencillo de la última llamada —«OK», «SL de compra dentro del nivel de stops», «El saldo quedaría por debajo del mínimo», «Error al cerrar, código de retorno...»— listo para imprimirse o mostrarse en una línea de estado en el gráfico. TS_TradeAllowed comprueba la conexión, el botón «AutoTrading» de la terminal, el permiso del programa, el indicador de trading con expertos de la cuenta y el modo de negociación del símbolo en una sola llamada; todas las funciones de negociación la ejecutan en primer lugar, por lo que no se envía nada cuando no está permitido operar.
2. Normalización. TS_NormalizePrice redondea cualquier precio al tamaño de tick del símbolo (no solo sus dígitos, lo cual es importante en índices y metales). TS_NormalizeVolume redondea el volumen al paso de volumen más bajo, lo limita al máximo y devuelve 0 cuando está por debajo del mínimo, de modo que nunca se envía un lote no válido.
3. Lectura de la cesta. TS_CountPositions, TS_BasketVolume y TS_BasketProfit (beneficio más swap) funcionan con todas las posiciones, ya sean solo compras o solo ventas. TS_AveragePrice proporciona el precio de entrada ponderado por volumen de un lado. TS_BreakevenPrice proporciona el precio al que la cesta de ese lado, swap incluido, está exactamente en equilibrio —el nivel que realmente necesita un EA de rejilla o de promediado—. TS_LockedProfit indica cuál es el rendimiento garantizado de la cesta si se activan todos los stop loss, y TS_CountProtected indica cuántas posiciones ya tienen su stop en el nivel de entrada o más allá de este.
4. Límites del bróker. TS_StopsLevelPoints y TS_FreezeLevelPoints exponen SYMBOL_TRADE_STOPS_LEVEL y SYMBOL_TRADE_FREEZE_LEVEL. TS_StopsLevelOK indica si un SL y un TP propuestos para una compra o una venta están lo suficientemente alejados del precio de cierre actual. TS_FreezeLevelOK indica si una posición puede modificarse o cerrarse en este momento, o si su stop o objetivo actual se encuentra dentro de la zona de congelación.
5. Gestión de los stop. TS_ModifySLTP es la envoltura segura sobre la que se basa el resto de la biblioteca: normaliza ambos precios, devuelve un resultado de éxito sin enviar nada cuando no hay cambios (se acabaron los errores de «sin cambios»), valida los niveles de stop y de congelación, envía la solicitud y vuelve a intentarla en caso de recotizaciones, cambios de precio, tiempos de espera agotados y servidores ocupados. TS_MoveToBreakeven desplaza el stop hasta el precio de entrada más un margen de seguridad de tu elección una vez que se alcanza una distancia de activación, y nunca desplaza el stop hacia atrás. TS_TrailFixed sigue una distancia fija en puntos, comenzando tras un umbral de beneficios y moviéndose únicamente en los pasos que tú definas, de modo que el servidor no se sature con cada tick. TS_ATR devuelve el ATR de la última barra cerrada de forma segura, y TS_TrailATR sigue una distancia igual al ATR multiplicado por un coeficiente, de modo que el stop se adapta a la volatilidad.
6. Cierre. TS_ClosePosition cierra una operación con el modo de ejecución que admite el símbolo. TS_PartialClose cierra un porcentaje de una posición, redondeado al paso de volumen, y rechaza la operación de forma clara cuando la parte o el resto quedarían por debajo del lote mínimo. TS_CloseAll cierra todas las posiciones de un símbolo y un «magic», opcionalmente solo de un lado. TS_CloseBasketAtProfit y TS_CloseBasketAtLoss cierran toda la cesta en el momento en que su resultado alcanza un objetivo de ganancias o un límite de pérdidas.
El EA de demostración y su panel
Las capturas de pantalla muestran TradeShieldDemo, un pequeño asesor experto incluido en la biblioteca. Es únicamente de monitorización: nunca abre, modifica ni cierra una operación. Lee toda la información a través de la biblioteca y la representa en una tarjeta compacta de color dorado sobre fondo negro situada en la esquina superior izquierda, dejando libre el lado derecho y la escala de precios. Filas: posiciones por lado, volumen, beneficio de la cesta por lado y neto, precios medios, precios de equilibrio, la regla de equilibrio con el número de posiciones ya protegidas, distancias fijas y de seguimiento ATR, los niveles de stop y de congelación del bróker, y una nueva fila «Shield Lock» que muestra el dinero ya bloqueado por tus stops actuales. Debajo, una breve lista de las posiciones abiertas marca cada una como «NO SL», un precio de stop o «BE OK». La tarjeta ajusta automáticamente el tamaño de su texto y se reduce para adaptarse a cualquier pantalla. Sus ajustes: número mágico a vigilar (0 = operaciones manuales), umbral de equilibrio y puntos de bloqueo, inicio y distancia del trailing fijo, marco temporal del ATR, período y multiplicador, número de filas de posiciones, así como la esquina del panel, los desplazamientos y el tamaño de la fuente.
Cómo utilizarla
1. Copia TradeShieldLib.ex5 en la carpeta MQL5\Libraries de tu terminal.
2. En tu EA, añade un bloque #import "TradeShieldLib.ex5" ... #import con las funciones que necesites (firmas a continuación).
3. Llámalas desde OnTick u OnTimer, siempre con tu propio símbolo y «magic», por ejemplo:
TS_MoveToBreakeven(_Symbol, Magic, 150, 10);
TS_TrailATR(_Symbol, Magic, PERIOD_H1, 14, 2.0);
if(TS_CloseBasketAtProfit(_Symbol, Magic, -1, 50.0) > 0) Print("cesta cerrada con beneficio");
if(!TS_ModifySLTP(ticket, sl, tp, 3)) Print(TS_LastError());
4. Compilar. Sin DLL, sin acceso a archivos, sin recursos adicionales, y funciona en cuentas de cobertura y de compensación, con cualquier símbolo y cualquier divisa de cuenta.
Firmas de las funciones
lado: -1 = todo, 0 = compras, 1 = ventas.
string TS_Version()
string TS_LastError()
bool TS_TradeAllowed(string symbol)
double TS_NormalizePrice(string symbol, double price)
double TS_NormalizeVolume(string symbol, double lots)
int TS_CountPositions(string symbol, long magic, int side)
double TS_BasketProfit(string symbol, long magic, int side)
double TS_BasketVolume(string symbol, long magic, int side)
double TS_AveragePrice(string symbol, long magic, int side)
double TS_BreakevenPrice(string symbol, long magic, int side)
double TS_LockedProfit(string symbol, long magic, int side)
int TS_CountProtected(string symbol, long magic, int side)
int TS_StopsLevelPoints(string symbol)
int TS_FreezeLevelPoints(string symbol)
bool TS_StopsLevelOK(string symbol, bool isBuy, double sl, double tp)
bool TS_FreezeLevelOK(ulong ticket)
bool TS_ModifySLTP(ulong ticket, double sl, double tp, int retries)
bool TS_ClosePosition(ulong ticket)
bool TS_PartialClose(ulong ticket, double percent)
int TS_CloseAll(string symbol, long magic, int side)
int TS_CloseBasketAtProfit(string symbol, long magic, int side, double targetMoney)
int TS_CloseBasketAtLoss(string symbol, long magic, int side, double maxLossMoney)
int TS_MoveToBreakeven(string symbol, long magic, int triggerPts, int lockPts)
int TS_TrailFixed(string symbol, long magic, int startPts, int distPts, int stepPts)
double TS_ATR(string symbol, ENUM_TIMEFRAMES tf, int period)
int TS_TrailATR(string symbol, long magic, ENUM_TIMEFRAMES tf, int period, double mult)
Notas sobre los parámetros
magic: el número mágico exacto de las posiciones que se van a gestionar (0 para operaciones manuales). triggerPts / lockPts: beneficio en puntos que activa el umbral de equilibrio y los puntos de beneficio en los que el stop se bloquea. startPts / distPts / stepPts: beneficio necesario antes de que comience el trailing, distancia que se mantiene por detrás del precio y el movimiento mínimo antes de que se actualice el stop. mult: multiplicador del ATR. percent: porcentaje de la posición que se va a cerrar (100 = la totalidad). targetMoney / maxLossMoney: objetivo de beneficio y límite de pérdida de la cesta en la divisa de la cuenta, ambos números positivos; 0 los desactiva. retries: número de veces que se reenvía una modificación tras una recotización o un tiempo de espera agotado.
Expectativas realistas
TradeShield no decide cuándo entrar o salir del mercado; eso sigue siendo tarea de tu estrategia. Lo que sí hace es asegurarse de que las acciones de protección y cierre que solicita tu estrategia se calculen correctamente, respeten los límites de tu bróker y se mantengan dentro de tu propio «número mágico». Pruébalo en el Strategy Tester con el EA de demostración y tu propio EA utilizando los datos de tu bróker antes de operar en vivo.
Si TradeShield te ahorra tiempo de desarrollo o evita que tu EA tenga problemas de validación, una reseña sincera en esta página significaría mucho: es la forma más útil de indicar a otros desarrolladores si merece la pena añadir esta biblioteca a su caja de herramientas.
