Mira cómo descargar robots gratis
¡Búscanos en Telegram!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Scripts

Broker Spec Inspector - script para MetaTrader 5

Seckin Erkut
Seckin Erkut
Algo Trading Systems Developer. I develop strategies and portfolios not by hypes but from solid academic literature.

I put my money where my mouth is, be sure to check the performance of my EAs through my signals.
| Spanish English Русский 中文 Deutsch 日本語 Português 한국어 Français Italiano Türkçe
Visualizaciones:
18
Ranking:
(2)
Publicado:
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
Todo operador que utilice sistemas automatizados acaba encontrándose con el error 130, «Stops no válidos», o con una orden que, sencillamente, nunca llega a aparecer. La reacción habitual es culpar al EA. La mayoría de las veces, el EA funciona correctamente y es el servidor el que está aplicando un límite contractual.
que nunca se muestra en la ventana de la terminal: el nivel de stop, el nivel de congelación o un paso mínimo de lotes que el cálculo del tamaño de tu posición no respeta. Estos límites varían según el símbolo y el bróker, y cambian sin
previo aviso. Este script los muestra.
Cárgalo en cualquier gráfico. Solo lee las especificaciones: nunca abre, modifica ni cierra nada, y no es necesario habilitar el trading algorítmico. Proporciónale una lista de símbolos separados por comas, o deja el campo de entrada vacío y recorrerá tu selección de «Market Watch».

QUÉ IMPRIME

Para cada símbolo: dígitos, punto, tamaño del tick y valor, tamaño del contrato, lote mínimo / paso / máximo, spread y si es variable, modo de ejecución, swap largo y corto, y el margen requerido para un lote mínimo en relación con tu margen libre actual. A continuación, la parte que responde a la pregunta en sí:

Advertencia sobre los corredores de bolsa

--- XAUUSD (bid 4402.15 / ask 4402.63) ---------------------
stops level 350 pts | freeze level 0 pts | EFFECTIVE band 351 pts
VERDICT: a stop/pending placed 100 pts from price would be REJECTED as 'Invalid price' (band is 351 pts)
buy at ask 4402.63: you asked SL 4401.63 -> nearest legal SL 4399.12 (moved out)
La última línea es la más útil. No solo te indica que un stop de 100 puntos no funciona con este valor; te indica el nivel exacto que el servidor aceptaría en su lugar.
LA NORMA
Dos límites distintos pueden rechazar una orden stop, y las herramientas que solo comprueban uno de ellos dan una respuesta errónea en la mitad de los brókers:
double MinStopDistance(const string sym)
{
long stops = SymbolInfoInteger(sym, SYMBOL_TRADE_STOPS_LEVEL);
long freeze = SymbolInfoInteger(sym, SYMBOL_TRADE_FREEZE_LEVEL);
long band = (stops > freeze ? stops : freeze) + 1;
return band * SymbolInfoDouble(sym, SYMBOL_POINT);
}

En esas cuatro líneas se condensan tres decisiones.
El ancho de banda es el mayor de los dos límites, ya que algunos servidores dejan el «freeze» en cero y aplican «stops», mientras que otros hacen lo contrario. Al elegir el mayor de los dos, se cubren ambos casos sin necesidad de saber en qué tipo de servidor te encuentras.
Se añade un punto, ya que muchos servidores siguen rechazando un nivel que se encuentre exactamente en el límite de la banda. La regla documentada es «más cercano que», la regla aplicada suele ser «más cercano que o igual a», y un punto no cuesta nada.
El resultado se muestra en unidades de PRECIO, no en puntos. Eso es lo que necesitas a la hora de establecer el nivel de stop real, y elimina la confusión entre puntos y pips que provoca un error de un factor de diez en los símbolos de 5 dígitos.
ÚSALO EN TU PROPIA EA
La segunda función es la que merece la pena copiar. Toma el nivel de stop que desees y devuelve el más cercano que el servidor acepte, en el lado correcto del precio:
double LegalStopLoss(const string sym, const bool isBuy,
const double price, const double wanted)
{
double dist = MinStopDistance(sym);
int digits = (int)SymbolInfoInteger(sym, SYMBOL_DIGITS);
double sl = wanted;
if(isBuy) { if(price - sl < dist) sl = price - dist; }
else { if(sl - price < dist) sl = price + dist; }
return NormalizeDouble(sl, digits);
}

Una parada que ya es legal vuelve sin cambios, por lo que es seguro hacer pasar todas las paradas por ella. Incorporar el cálculo existente solo cuesta una línea:
double sl = LegalStopLoss(_Symbol, true, ask, ask - atr * 1.5);
Esto cobra mayor importancia cuando la volatilidad es elevada en relación con la banda. Un stop ATR que resulta adecuado para el EUR/USD puede quedar dentro de la banda en el oro o en un índice durante una sesión tranquila, que es precisamente cuando el rechazo te pilla por sorpresa, porque el mismo código funcionó ayer.

NOTAS SOBRE LA INTERPRETACIÓN DE LOS RESULTADOS

Un ancho de banda elevado no significa que el bróker esté poniendo trabas. Normalmente refleja cómo se fija el precio y se cubre el símbolo, y es la razón por la que un EA de scalping que funciona en un servidor deja de funcionar en otro sin que se haya cambiado ni una sola línea de código.
Compara antes de migrar. La exportación a CSV está activada por defecto y guarda el archivo «BrokerSpecs.csv» en la carpeta «MQL5\Files», con una fila por símbolo en la que se incluyen el rango, la distancia mínima de stop y el nivel legal más cercano. Ejecuta el script en dos brókers, compara los archivos uno al lado del otro y, en un minuto, podrás ver las diferencias que te habrían costado una semana de depuración.
Comprueba el margen antes de ajustar el tamaño de la posición. La columna de margen corresponde a un lote mínimo. Si esa cifra ya se acerca a tu margen libre, el tamaño de tu posición tiene un límite máximo que aún no has calculado.

Los símbolos deben aparecer en «Market Watch» y deben haber registrado al menos un tick. Si un símbolo no muestra datos de ticks, abre su gráfico una vez y vuelve a ejecutar la operación.


Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/76178

Session Opening Range Breakout EA Session Opening Range Breakout EA

Un asesor experto que mide los máximos y mínimos de un intervalo de apertura de sesión definido y, a continuación, opera la ruptura confirmada de ese rango con un tamaño de posición basado en el riesgo y un límite de una operación por sesión.

Reverse RSI Bands Reverse RSI Bands

«Reverse RSI Bands» es un indicador adelantado que aplica un análisis matemático inverso a la fórmula del RSI. Traza bandas de precios objetivo precisas directamente en el gráfico principal, mostrando exactamente a qué precio el RSI alcanzará los niveles de sobrecompra o sobreventa que hayas especificado, en tiempo real.

Custom Simple Moving Average Custom Simple Moving Average

Una media móvil adaptativa de dos etapas (media base + suavizado secundario) que cambia de color en función de la pendiente y marca con flechas los cruces entre el precio y la media.

Accelerator Oscillator (AC) Accelerator Oscillator (AC)

El indicador Acceleration/Deceleration (AC, Aceleración/Desaceleración) mide la aceleración y la desaceleración de la fuerza impulsora del mercado.