Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
- Publicado por:
- Visualizaciones:
- 25
- Publicado:
-
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
//+------------------------------------------------------------------+ //| Muñequito institucional (cabeza, traje, corbata, maletin) | //+------------------------------------------------------------------+ void DrawMascot(int x,int y,color mood) { // cabeza Lbl("m_head",x,y-4,"l",C'255,214,170',26,"Wingdings"); // pelo Rect("m_hair",x+5,y+2,14,4,C'40,40,40'); // cuerpo (traje) Rect("m_body",x+2,y+24,22,26,C'30,34,48'); // camisa Rect("m_shirt",x+10,y+24,6,16,clrWhite);Instalación1. Descarga el indicador.2. Abre MetaTrader 5.3. Añade el «MSB Pro ALGO Neon Account Dashboard» a cualquier gráfico.4. El panel mostrará automáticamente la información actual de la cuenta.// corbata (color segun sesgo) Rect("m_tie",x+11,y+27,4,18,mood); // brazos Rect("m_armL",x-3,y+26,5,18,C'30,34,48'); Rect("m_armR",x+24,y+26,5,18,C'30,34,48'); // maletin Rect("m_case",x+26,y+42,14,10,C'110,70,30'); Rect("m_caseH",x+30,y+39,6,3,C'110,70,30'); // piernas Rect("m_legL",x+4,y+50,8,12,C'20,22,32'); Rect("m_legR",x+14,y+50,8,12,C'20,22,32'); } //+------------------------------------------------------------------+ //| Cambio porcentual de un simbolo | //+------------------------------------------------------------------+ double Chg(string sym) { if(!SymbolSelect(sym,true)) return EMPTY_VALUE; double c[]; ArraySetAsSeries(c,true); if(CopyClose(sym,InpStrTF,0,InpStrBars+1,c)<InpStrBars+1) return EMPTY_VALUE; if(c[InpStrBars]==0) return EMPTY_VALUE; return (c[0]-c[InpStrBars])/c[InpStrBars]*100.0; } // promedio ignorando pares no disponibles double AvgSigned(const double &v[],const double &s[],int n) { double sum=0; int k=0; for(int i=0;i<n;i++) if(v[i]!=EMPTY_VALUE){ sum+=v[i]*s[i]; k++; } return k>0 ? sum/k : 0.0; } void ComputeStrength(double &xau,double &usd,double &eur,double &gbp) { double eurusd=Chg("EURUSD"+InpSuffix); double gbpusd=Chg("GBPUSD"+InpSuffix); double usdjpy=Chg("USDJPY"+InpSuffix); double usdchf=Chg("USDCHF"+InpSuffix); double usdcad=Chg("USDCAD"+InpSuffix); double audusd=Chg("AUDUSD"+InpSuffix); double nzdusd=Chg("NZDUSD"+InpSuffix); double eurgbp=Chg("EURGBP"+InpSuffix); double gold =Chg(InpGoldSymbol); // USD: sube cuando los pares XXXUSD bajan y los USDXXX suben double vu[8]={eurusd,gbpusd,usdjpy,usdchf,usdcad,audusd,nzdusd,gold}; double su[8]={-1,-1,1,1,1,-1,-1,-1}; usd=AvgSigned(vu,su,8); // EUR: vs USD y vs GBP double ve[2]={eurusd,eurgbp}; double se[2]={1,1}; eur=AvgSigned(ve,se,2); // GBP: vs USD y vs EUR double vg[2]={gbpusd,eurgbp}; double sg[2]={1,-1}; gbp=AvgSigned(vg,sg,2); // ORO: contra USD xau=(gold!=EMPTY_VALUE)?gold:0.0; } void DrawStrengthRow(string id,int y,string name,double val,double maxAbs) { int cx=PW-85; // centro de la barra int maxLen=50; color col=(val>=0)?InpBuyColor:InpSellColor; int len=(maxAbs>0)?(int)MathRound(MathAbs(val)/maxAbs*maxLen):0; if(len<1) len=1; Lbl("s_"+id+"_n",10,y,name,clrWhite,9,"Arial Bold"); Rect("s_"+id+"_bg",cx-maxLen,y+3,maxLen*2,8,C'45,50,66'); Rect("s_"+id+"_bar",(val>=0)?cx:cx-len,y+3,len,8,col); Lbl("s_"+id+"_v",PW-32,y,StringFormat("%+.2f",val),col,8); }

- Delta y poder comprador/vendedor: una barra verde y roja con el porcentaje de compra contra venta, el delta de las últimas 20 barras y el delta de la vela actual. El panel indica quién domina.
- Zonas institucionales en el gráfico: rectángulos verdes (compra) y rojos (venta) donde hubo picos de volumen. Desaparecen cuando el precio las rompe.
- Niveles Gamma: líneas de Call Wall, Put Wall y Gamma Flip.
- Fuerza de ORO, USD, EUR y GBP: barras que se calculan con los pares mayores y XAUUSD. Puedes cambiar el timeframe y las barras de medición.
- Muñequito institucional: un personaje de traje con maletín. Su corbata y su etiqueta se ponen verdes cuando dominan los compradores y rojas cuando dominan los vendedores.
//+------------------------------------------------------------------+ //| Helpers de objetos | //+------------------------------------------------------------------+ void Rect(string name,int x,int y,int w,int h,color bg,color border=clrNONE) { string n=PFX+name; if(ObjectFind(0,n)<0) { ObjectCreate(0,n,OBJ_RECTANGLE_LABEL,0,0,0); ObjectSetInteger(0,n,OBJPROP_CORNER,CORNER_LEFT_UPPER); ObjectSetInteger(0,n,OBJPROP_BORDER_TYPE,BORDER_FLAT); ObjectSetInteger(0,n,OBJPROP_SELECTABLE,false); ObjectSetInteger(0,n,OBJPROP_HIDDEN,true); } ObjectSetInteger(0,n,OBJPROP_XDISTANCE,InpX+x); ObjectSetInteger(0,n,OBJPROP_YDISTANCE,InpY+y); ObjectSetInteger(0,n,OBJPROP_XSIZE,MathMax(w,1)); ObjectSetInteger(0,n,OBJPROP_YSIZE,h); ObjectSetInteger(0,n,OBJPROP_BGCOLOR,bg); ObjectSetInteger(0,n,OBJPROP_COLOR,border==clrNONE?bg:border); } void Lbl(string name,int x,int y,string text,color clr,int size=9,string font="Arial") { string n=PFX+name; if(ObjectFind(0,n)<0) { ObjectCreate(0,n,OBJ_LABEL,0,0,0); ObjectSetInteger(0,n,OBJPROP_CORNER,CORNER_LEFT_UPPER); ObjectSetInteger(0,n,OBJPROP_ANCHOR,ANCHOR_LEFT_UPPER); ObjectSetInteger(0,n,OBJPROP_SELECTABLE,false); ObjectSetInteger(0,n,OBJPROP_HIDDEN,true); } ObjectSetInteger(0,n,OBJPROP_XDISTANCE,InpX+x); ObjectSetInteger(0,n,OBJPROP_YDISTANCE,InpY+y); ObjectSetInteger(0,n,OBJPROP_COLOR,clr); ObjectSetInteger(0,n,OBJPROP_FONTSIZE,size); ObjectSetString(0,n,OBJPROP_FONT,font); ObjectSetString(0,n,OBJPROP_TEXT,text); }
//+------------------------------------------------------------------+ //| Zonas institucionales | //+------------------------------------------------------------------+ void DrawZones() { ObjectsDeleteAll(0,PFX+"Z_"); int n=MathMin(InpLookback,Bars(_Symbol,_Period)-2); if(n<20) return; MqlRates r[]; ArraySetAsSeries(r,true); if(CopyRates(_Symbol,_Period,0,n+1,r)<n+1) return; double avg=0; for(int i=1;i<=n;i++) avg+=(double)r[i].tick_volume; avg/=n; if(avg<=0) return; int drawn=0; datetime endT=r[0].time+PeriodSeconds()*8; for(int i=1;i<=n && drawn<InpMaxZones;i++) { double rng=r[i].high-r[i].low; if(rng<=0) continue; if((double)r[i].tick_volume < avg*InpVolMult) continue; double buy=(double)r[i].tick_volume*(r[i].close-r[i].low)/rng; double sell=(double)r[i].tick_volume-buy; bool isBuy=(buy>sell); // mitigacion: el precio cierra al otro lado de la zona datetime zEnd=endT; bool mitigated=false; for(int j=i-1;j>=0;j--) { if(isBuy && r[j].close<r[i].low) { mitigated=true; zEnd=r[j].time; break; } if(!isBuy && r[j].close>r[i].high){ mitigated=true; zEnd=r[j].time; break; } } if(mitigated && InpHideMitigated) continue; string nm=PFX+"Z_"+IntegerToString((long)r[i].time); ObjectCreate(0,nm,OBJ_RECTANGLE,0,r[i].time,r[i].high,zEnd,r[i].low); ObjectSetInteger(0,nm,OBJPROP_COLOR,isBuy?InpBuyColor:InpSellColor); ObjectSetInteger(0,nm,OBJPROP_FILL,true); ObjectSetInteger(0,nm,OBJPROP_BACK,true); ObjectSetInteger(0,nm,OBJPROP_SELECTABLE,false); ObjectSetInteger(0,nm,OBJPROP_HIDDEN,true); ObjectSetString(0,nm,OBJPROP_TEXT,isBuy?"Inst. COMPRA":"Inst. VENTA"); string tn=nm+"_t"; ObjectCreate(0,tn,OBJ_TEXT,0,r[i].time,r[i].high); ObjectSetString(0,tn,OBJPROP_TEXT,isBuy?"INST BUY":"INST SELL"); ObjectSetInteger(0,tn,OBJPROP_COLOR,isBuy?InpBuyColor:InpSellColor); ObjectSetInteger(0,tn,OBJPROP_FONTSIZE,7); ObjectSetInteger(0,tn,OBJPROP_SELECTABLE,false); ObjectSetInteger(0,tn,OBJPROP_HIDDEN,true); drawn++; } }
Límites a tener en cuenta:
- Las órdenes institucionales reales no existen en MT5. Ningún broker minorista las entrega. Lo que ves es una aproximación con volumen de ticks y absorción, por eso conviene confirmarlo con tu análisis.
- El gamma no sale de MT5. Viene de datos de opciones (GEX), que MT5 no tiene. Por eso los tres niveles son inputs que tú escribes, tomados de una fuente como SpotGamma o Barchart. Si dejas un input en 0, esa línea no se dibuja.
- El delta de la vela actual usa los flags reales de compra/venta si tu broker los envía. En las velas cerradas es una estimación según dónde cerró la vela.
- Nombres de símbolos: si tu broker usa sufijos (por ejemplo .a ), ponlos en el input InpSuffix . Si el oro se llama distinto, cambia InpGoldSymbol .
4. El panel mostrará automáticamente la información actual de la cuenta.
| panel | descripcion |
|---|---|
| InpLookback | zonas institucionales |
| InpVolMult | multiplicador de volumen |
| InpMaxZones | zonas marcadas |
| InpPowerBars | poder de las velas |
| InpBuyColor | color de compra |
| InpSellColor | color de venta |
| InpHideMitigated | ocultar zonas de compra o venta |
| InpCallWall | call wall |
| InpPutWall | put wall |
| InpGammaFlip | zona de gamma zero gamma |
| InpStrTF | tiempo de la fuerza |
| InpStrBars | medir la fuerza de las velas |
| InpSuffix | flujo de broker |
| InpGoldSymbol | símbolo operado |
| InpX | posición del panel x |
| InpY | posición del panel y |
Se a probado en mercado real
//--- Flujo / delta input int InpLookback = 300; // Barras para buscar zonas institucionales input double InpVolMult = 2.0; // Multiplicador de volumen para marcar zona institucional input int InpMaxZones = 12; // Maximo de zonas dibujadas input int InpPowerBars = 20; // Barras para medir poder comprador/vendedor input color InpBuyColor = clrLimeGreen; input color InpSellColor = clrTomato; input bool InpHideMitigated = true; // Ocultar zonas ya rotas por el precio //--- Gamma (manual: tomalos de tu fuente de opciones, ej. SpotGamma / Barchart / CBOE) input double InpCallWall = 0.0; // Call Wall (precio, 0 = desactivado) input double InpPutWall = 0.0; // Put Wall (precio, 0 = desactivado) input double InpGammaFlip = 0.0; // Gamma Flip / Zero Gamma (precio, 0 = desactivado) //--- Fuerza de divisas input ENUM_TIMEFRAMES InpStrTF = PERIOD_H1; // Timeframe para la fuerza input int InpStrBars = 24; // Barras hacia atras para medir la fuerza input string InpSuffix = ""; // Sufijo del broker (ej. ".a", "m") input string InpGoldSymbol = "XAUUSD"; // Simbolo del oro en tu broker //--- Panel input int InpX = 15; // Posicion X del panel input int InpY = 25; // Posicion Y del panel input int InpRefreshSec = 2; // Actualizacion (segundos) string PFX = "InstFlow_"; const int PW = 270; // ancho panel const int PH = 290; // alto panel
GDS Renko Replay Trainer
GDS Renko Replay Trainer es una herramienta educativa gratuita para practicar la toma de decisiones manuales en gráficos Renko históricos en MetaTrader 5. Carga un intervalo histórico, reproduce la evolución hacia adelante y realiza operaciones virtuales de COMPRA o VENTA. Puedes pausar, avanzar un tick o pasar al siguiente bloque Renko completado. Cada posición virtual tiene un stop loss y un take profit, y el entrenador registra los resultados de tu sesión. La herramienta crea bloques Renko de tamaño fijo a partir de ticks históricos de compra/venta, con una inversión clásica de dos bloques. Los ticks futuros no se utilizan para trazar el gráfico visible ni para ejecutar operaciones virtuales. Las operaciones de compra utilizan el precio de venta (Ask) para la entrada y el precio de compra (Bid) para la salida; las operaciones de venta utilizan los lados opuestos. Las órdenes introducidas en el panel esperan al siguiente tick válido reproducido. Los stop y los objetivos se comprueban en cada tick, incluidas las brechas de precios.
PropFirm Defense
Una biblioteca de 24 clases MQL5 que supervisa el cumplimiento de las normas de una empresa de inversión —recaída, pérdida diaria, consistencia en los pagos, número mínimo de días de negociación, periodo de restricción de noticias— en cualquier cuenta, y cierra todas las posiciones en caso de incumplimiento sin abrir nunca una posición propia.
Salida inteligente en caso de pérdidas: salida anticipada de posiciones con pérdidas (desviación adversa del ATR, tiempo en la operación, invalidación de la EMA, RSI, límite de pérdidas) con un registro en formato CSV
Cierra las posiciones con pérdidas de forma anticipada, antes de que se alcance el stop-loss completo, cuando una regla indica que la operación no va a recuperarse: movimiento adverso superior a N x ATR, pérdida prolongada, cambio de tendencia de la EMA, RSI en contra de la posición o un límite de capital. Nunca toca una posición con beneficios. El modo de solo observación registra lo que se cerraría sin cerrar nada. Cada salida se registra en un archivo CSV con la regla, la antigüedad y la desviación adversa máxima, de modo que las reglas se puedan ajustar a partir de los datos.
SMC Liquidity Sweep Scalper (Order Block EA with Live Win-Rate Tracking)
Un sistema de scalping basado en el «liquidity sweep» y el «order block», con un cálculo del tamaño de la posición basado en el ATR y un filtro de tendencia en un marco temporal superior. Cada operación se marca en el gráfico con la tasa de acierto histórica en tiempo real de ese tipo de configuración: un marcador actualizado, no solo casillas.


