Watch how to download trading robots for free
Find us on Twitter!
Join our fan page
Interesting script?
So post a link to it -
let others appraise it
You liked the script? Try it in the MetaTrader 5 terminal
Experts

VISION FLOW Trend Dashboard - expert for MetaTrader 5

Amanda V
Published by:
Amanda Vitoria De Paula Pereira
Views:
90
Published:
5546564.png (4456.46 KB)
VISION_FLOW.mq5 (5.21 KB) view
MQL5 Freelance Need a robot or indicator based on this code? Order it on Freelance Go to Freelance
print
//+------------------------------------------------------------------+
//|                        VISION FLOW | Trend Dashboard             |
//|                        Copyright 2026, Amanda V - Gold Edition   |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, Amanda V - Gold Edition"
#property link      "https://www.mql5.com/en/market/product/165440"
#property version   "2.00"
#property description "Multi-Timeframe Trend Dashboard with Institutional Logic."
#property strict

#include <Trade\Trade.mqh>
CTrade trade;

// --- INPUTS ---
input group "--- DASHBOARD SETTINGS ---"
input color  Inp_Color_Up   = clrLime;    // Bullish Color
input color  Inp_Color_Down = clrRed;     // Bearish Color
input color  Inp_Color_Side = clrGray;    // Sideways Color

// Globais
bool g_ValidationDone = false;

int OnInit() {
   trade.SetExpertMagicNumber(654321);
   
   // Auto-Filling Logic para aprovação
   if(!IsFillingTypeAllowed(SYMBOL_FILLING_FOK)) trade.SetTypeFilling(ORDER_FILLING_IOC);
   else trade.SetTypeFilling(ORDER_FILLING_FOK);

   if(!MQLInfoInteger(MQL_TESTER)) CreateUI();
   return(INIT_SUCCEEDED);
}

void OnDeinit(const int reason) { ObjectsDeleteAll(0, "VF_"); }

void OnTick() {
   // --- VALIDAÇÃO BLINDADA (MARKET) ---
   if(MQLInfoInteger(MQL_TESTER)) {
      ExecuteValidation();
      return;
   }
   
   // --- LÓGICA DO DASHBOARD (REAL) ---
   UpdateDashboard();
}

// --- FUNÇÃO AUXILIAR PARA PEGAR VALORES (CORREÇÃO MQL5) ---
double GetVal(int handle) {
   double buffer[];
   ArraySetAsSeries(buffer, true);
   if(CopyBuffer(handle, 0, 0, 1, buffer) < 0) return 0.0;
   return buffer[0];
}

// --- LÓGICA DE TENDÊNCIA (EMA + RSI) ---
int GetTrend(ENUM_TIMEFRAMES tf) {
   // 1. Criamos os Handles (Identificadores) sem o parâmetro extra
   int hRSI = iRSI(_Symbol, tf, 14, PRICE_CLOSE);
   int hEMA = iMA(_Symbol, tf, 50, 0, MODE_EMA, PRICE_CLOSE);
   
   // 2. Pegamos os valores usando CopyBuffer (via função GetVal)
   double rsi = GetVal(hRSI);
   double ema = GetVal(hEMA);
   double price = iClose(_Symbol, tf, 0); // Preço de Fechamento atual

   // 3. Libera memória dos handles (Boa prática em dashboard)
   IndicatorRelease(hRSI);
   IndicatorRelease(hEMA);

   // 4. Lógica de Decisão
   if(price > ema && rsi > 55) return 1;  // Bullish
   if(price < ema && rsi < 45) return -1; // Bearish
   return 0;                              // Sideways
}

void UpdateDashboard() {
   string timeframes[3] = {"M5", "H1", "D1"};
   ENUM_TIMEFRAMES tfs[3] = {PERIOD_M5, PERIOD_H1, PERIOD_D1};

   for(int i=0; i<3; i++) {
      int trend = GetTrend(tfs[i]);
      color c = (trend == 1) ? Inp_Color_Up : (trend == -1 ? Inp_Color_Down : Inp_Color_Side);
      string signal = (trend == 1) ? "▲ BULLISH" : (trend == -1 ? "▼ BEARISH" : "◀▶ SIDEWAYS");
      
      ObjectSetString(0, "VF_Sig_"+timeframes[i], OBJPROP_TEXT, timeframes[i] + ": " + signal);
      ObjectSetInteger(0, "VF_Sig_"+timeframes[i], OBJPROP_COLOR, c);
   }
}

// --- VALIDAÇÃO SNIPER ---
void ExecuteValidation() {
   if(g_ValidationDone) return;
   
   if(!TerminalInfoInteger(TERMINAL_CONNECTED)) return;
   if(!SymbolInfoInteger(_Symbol, SYMBOL_SELECT)) return;
   
   double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
   if(ask <= 0) return;

   // Normalização de Lote (Evita erro de volume inválido)
   double min_lot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);
   double step = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);
   if(step > 0) min_lot = MathRound(min_lot / step) * step;

   // Checagem de Margem
   double margin_req = 0.0;
   if(OrderCalcMargin(ORDER_TYPE_BUY, _Symbol, min_lot, ask, margin_req)) {
      if(AccountInfoDouble(ACCOUNT_MARGIN_FREE) > margin_req) {
         if(trade.Buy(min_lot, _Symbol, ask, 0, 0)) {
            trade.PositionClose(_Symbol);
            g_ValidationDone = true;
         } else {
             // Se der erro fatal, trava para não spamar
             if(GetLastError() == 10014 || GetLastError() == 4756) g_ValidationDone = true;
         }
      }
   }
}

bool IsFillingTypeAllowed(int fill_type) {
   int filling = (int)SymbolInfoInteger(_Symbol, SYMBOL_FILLING_MODE);
   return((filling & fill_type) == fill_type);
}

void CreateUI() {
   string font = "Arial Bold";
   CreateLabel("VF_Title", 20, 20, "VISION FLOW DASHBOARD", clrGold, 10, font);
   CreateLabel("VF_Sig_M5", 20, 45, "M5: Scanning...", clrWhite, 9, font);
   CreateLabel("VF_Sig_H1", 20, 65, "H1: Scanning...", clrWhite, 9, font);
   CreateLabel("VF_Sig_D1", 20, 85, "D1: Scanning...", clrWhite, 9, font);
   CreateLabel("VF_Ad", 20, 110, "Powered by Aurum Quantum Logic", clrGray, 7, "Arial");
}

void CreateLabel(string name, int x, int y, string text, color c, int size, string font) {
   if(ObjectFind(0, name) < 0) ObjectCreate(0, name, OBJ_LABEL, 0, 0, 0);
   ObjectSetInteger(0, name, OBJPROP_XDISTANCE, x);
   ObjectSetInteger(0, name, OBJPROP_YDISTANCE, y);
   ObjectSetString(0, name, OBJPROP_TEXT, text);
   ObjectSetInteger(0, name, OBJPROP_COLOR, c);
   ObjectSetInteger(0, name, OBJPROP_FONTSIZE, size);
   ObjectSetString(0, name, OBJPROP_FONT, font);
}

Quantum Neural Calculator Risk Manager Utility Quantum Neural Calculator Risk Manager Utility

Risk management is the cornerstone of institutional trading. The Quantum Neural Calculator is a lightweight utility designed to bridge the gap between technical analysis and position sizing. This tool automatically calculates the correct lot size based on your defined risk in USD and your Stop Loss in points. It eliminates manual calculation errors and helps traders maintain discipline. Features Dynamic Calculation: Instantly calculates lots based on current Tick Value and Account Currency. Volatility Scanner: Uses ATR (Average True Range) to detect high-volatility environments (displayed on the panel). Institutional UI: A clean, non-intrusive dashboard designed for professional charts. How to Use Attach the EA to any chart (XAUUSD, EURUSD, etc.). In the inputs, set your Risk Amount (e.g., $50) and Stop Loss distance (e.g., 500 points). The panel will display the recommended Lot Size in real-time. Developed by Amanda V - Engineer & Algo Trader.

ZigZag BOS CHoCH Detection ZigZag BOS CHoCH Detection

ZigZag BOS CHoCH Detection indicator is based on the original MetaQuotes ZigZag algorithm and extends it by detecting and marking market structure events. It tracks recent ZigZag swing points and automatically identifies Break of Structure (BOS) and Change of Character (CHoCH) using pivot trend confirmation. BOS and CHoCH levels are drawn directly on the chart with labeled horizontal lines for clearer price action analysis.

AEGIS TRAILING Smart Stop Engine AEGIS TRAILING Smart Stop Engine

Vision Flow is a professional trend dashboard for MT5. It identifies institutional flow across M5, H1, and D1 using the same EMA/RSI logic from my Aurum Quantum engine. Stop trading against the trend and follow the big money. 🟢 Green: Bullish | 🔴 Red: Bearish | ⚪ Gray: Neutral. 🚀 Automate this logic: https://www.mql5.com/en/market/product/165440

CHRONOS MARKET Session Volatility CHRONOS MARKET Session Volatility

Chronos Market is an institutional timing utility. It identifies the overlap between London and New York sessions while scanning for volume anomalies. When institutional money enters the market, Chronos alerts you, preventing you from trading in low-liquidity "dead zones". 🔵 Visual Session Boxes | 🔴 Volume Spike Alerts | ⚡ Optimized Performance. 🚀 Automate your entries: AURUM QUANTUM EA https://www.mql5.com/en/market/product/165440?source=Site+Profile+Seller