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
Indicadores

Flujo Institucional - indicador para MetaTrader 5

daniel lasprilla
Publicado por:
Visualizaciones:
25
Publicado:
MQL5 Freelance ¿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ón
1. 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);   }

panel de ordenes




  • 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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 .

Instalación

1. Descarga el indicador.
2. Abre MetaTrader 5.
3. Añade el «flujo institucional» a cualquier gráfico.

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
panel de control

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

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 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 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) 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.