Sabem de algum indicador Renko sobre o gráfico principal, que apareçam as ordens Enviadas

 

Se  souberem de algum INDICADRO Renko sobre o grafico principal, que APAREÇAM as ORDENS Enviadas.....

Eu ja baixei o [Produto do Mercado], mas ao entrar na Operação, se pudessemos VER ELAS, num Grafico de RENKO, ajudaria bastante

Se souberem como, me deem um help por favor

 
fabriziog17:

Se  souberem de algum INDICADRO Renko sobre o grafico principal, que APAREÇAM as ORDENS Enviadas.....

Eu ja baixei o [Produto do Mercado], mas ao entrar na Operação, se pudessemos VER ELAS, num Grafico de RENKO, ajudaria bastante

Se souberem como, me deem um help por favor

contrata uma plataforma com isso que vai ser melhor, se voce opera de maneira manual o mt5 não é pra voce

 
fabriziog17Se  souberem de algum INDICADRO Renko sobre o grafico principal, que APAREÇAM as ORDENS Enviadas..... Eu ja baixei o [Produto do Mercado], mas ao entrar na Operação, se pudessemos VER ELAS, num Grafico de RENKO, ajudaria bastante Se souberem como, me deem um help por favor

Sua solicitação foi atendida - indicador publicado hoje com a utilidade que você queria! 😊

Base de código

Mostrar posições no gráfico personalizado (ou gráfico padrão) para MT5

Ryan L Johnson , 02/06/2025 14:02

Este indicador é um utilitário que mostra os níveis de negociação rotulados em qualquer gráfico. Se você quiser substituir seus níveis de negociação nativos em um gráfico nativo, desative "Mostrar níveis de negociação" nas Propriedades do Gráfico F8 e anexe este indicador. Se você quiser mostrar os níveis de negociação em um Gráfico Personalizado (onde os níveis de negociação nativos não podem ser exibidos), basta anexar este indicador. BaseSymbol - especifique o Símbolo do qual os dados do nível de negociação serão extraídos - útil para Símbolos Personalizados exclusivos. TextBarsBack - especifique o número de barras anteriores no histórico a partir da barra atual, onde os rótulos dos níveis serão desenhados. Observação: embora o número mágico seja referenciado no código, ele não está incluído atualmente nas linhas de negociação. Se você estiver executando vários EAs no mesmo Símbolo, poderá editar o código para mostrar os números mágicos e, em seguida, executar várias instâncias do indicador em um gráfico. Você também pode editar os tamanhos de fonte e o espaçamento do texto nas propriedades do objeto, conforme necessário para diferentes resoluções de tela.

 
Ricardo Rodrigues Lucca #:

contrata uma plataforma com isso que vai ser melhor, se voce opera de maneira manual o mt5 não é pra voce

Eu ja ja tenho outra plataforma tbem... O MT5 é praticamente gratis, na automação, tenho robô nele. Sempre foi bom ,pra automaçoes
 
Vinicius Pereira De Oliveira #:

Sua solicitação foi atendida - indicador publicado hoje com a utilidade que você queria! 😊


Vlw Vinicius, irei experimentar.....
 
Vinicius Pereira De Oliveira #:

Sua solicitação foi atendida - indicador publicado hoje com a utilidade que você queria! 😊


oi Vinicius...testei, pena que vão aparecendo diversas ordens, no grafico do Renko.  As originais e as antigas, que não saem dali.. Dai o grafico, vai ficando cheio de ordens, e não dá pra apagar elas
 
fabriziog17 #oi Vinicius...testei, pena que vão aparecendo diversas ordens, no grafico do Renko.  As originais e as antigas, que não saem dali.. Dai o grafico, vai ficando cheio de ordens, e não dá pra apagar elas

Oi, Fabrizio, que pena que ainda não funcionou... Mas, na página de discussão do código, você pode descrever com detalhes as suas observações sobre esse indicador (escreva em inglês, senão seu comentário será removido), inclusive anexar capturas de tela demonstrando as falhas que você identificou. Além disso, você pode deixar a sua avaliação do código, descrevendo os aspectos que considera positivos e negativos do mesmo. O autor é bastante ativo no fórum em inglês, e acredito que ele vai ter interesse em manter seu código funcionando adequadamente, caso as falhas sejam confirmadas.

 

Na solução (provisória) abaixo, foi implementada a limpeza automática dos objetos a cada atualização... Então, o indicador fica constantemente limpando e redesenhando os objetos. Como OnCalculate() é chamado com altíssima frequência, ocorre um certo “tremor visual”, mas, pelo menos, não deve mais ficar "sujeira" no gráfico. 😊 Segue para testes:

//+------------------------------------------------------------------+
//|            Baseado em código de Ryan Lawrence Johnson            |
//|                https://www.mql5.com/en/code/60023                |
//+------------------------------------------------------------------+
#property copyright "© 2025, Ryan Lawrence Johnson."
#property link      "https://www.mql5.com/en/users/rjo/seller"
#property version   "4.01"
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots   0

#include <Trade\OrderInfo.mqh>
#include <Trade\DealInfo.mqh>
#include <Trade\HistoryOrderInfo.mqh>

COrderInfo orderInfo;
CDealInfo dealInfo;
CHistoryOrderInfo historyOrderInfo;

//--- input parameters
input string BaseSymbol = "GBPJPY";
input int    TextBarsBack = 100;

string direction;
string text = "text";
string pending;
long   pos_id, ord_id;
string pos_id_str, ord_id_str;

//+------------------------------------------------------------------+
//| Função para apagar todos os objetos de trade do gráfico          |
//+------------------------------------------------------------------+
void DeleteAllTradeObjects()
  {
   string prefixes[] = {"BUY", "SELL", "SL", "TP",
                        "BUY LIMIT", "BUY STOP", "BUY STOP LIMIT",
                        "SELL LIMIT", "SELL STOP", "SELL STOP LIMIT"
                       };

   for(int i = 0; i < ArraySize(prefixes); i++)
     {
      ObjectsDeleteAll(0, prefixes[i]);
     }
  }

//+------------------------------------------------------------------+
int OnInit()
  {
   return INIT_SUCCEEDED;
  }

//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   DeleteAllTradeObjects();
  }

//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   DeleteAllTradeObjects(); // limpa antes de redesenhar

//--- Mostrar posições abertas
   int positions = PositionsTotal();
   for(int i = 0; i < positions; i++)
     {
      string symbol = PositionGetSymbol(i);
      if(symbol == "" || symbol != BaseSymbol)
         continue;

      pos_id = PositionGetInteger(POSITION_IDENTIFIER);
      pos_id_str = (string)pos_id;
      double price = PositionGetDouble(POSITION_PRICE_OPEN);
      double lots  = PositionGetDouble(POSITION_VOLUME);
      double sl    = PositionGetDouble(POSITION_SL);
      double tp    = PositionGetDouble(POSITION_TP);
      ENUM_POSITION_TYPE type = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);

      direction = (type == POSITION_TYPE_BUY) ? "BUY" : "SELL";

      //--- Linha da posição
      ObjectCreate(0, direction + " " + pos_id_str, OBJ_HLINE, 0, 0, price);
      ObjectSetInteger(0, direction + " " + pos_id_str, OBJPROP_COLOR, clrLimeGreen);
      ObjectSetInteger(0, direction + " " + pos_id_str, OBJPROP_STYLE, STYLE_DOT);

      //--- Texto da posição
      ObjectCreate(0, direction + text + " " + pos_id_str, OBJ_TEXT, 0, iTime(NULL, 0, TextBarsBack), price);
      ObjectSetString(0, direction + text + " " + pos_id_str, OBJPROP_TEXT,
                      direction + "   " + (string)lots + " lots   price " + DoubleToString(price, _Digits) + "   ticket# " + pos_id_str);
      ObjectSetInteger(0, direction + text + " " + pos_id_str, OBJPROP_COLOR, clrWhite);
      ObjectSetString(0, direction + text + " " + pos_id_str, OBJPROP_FONT, "Arial");
      ObjectSetInteger(0, direction + text + " " + pos_id_str, OBJPROP_FONTSIZE, 8);

      //--- SL
      if(sl > 0)
        {
         ObjectCreate(0, "SL " + pos_id_str, OBJ_HLINE, 0, 0, sl);
         ObjectSetInteger(0, "SL " + pos_id_str, OBJPROP_COLOR, clrRed);
         ObjectSetInteger(0, "SL " + pos_id_str, OBJPROP_STYLE, STYLE_DASHDOT);

         ObjectCreate(0, "SL" + text + " " + pos_id_str, OBJ_TEXT, 0, iTime(NULL, 0, TextBarsBack), sl);
         ObjectSetString(0, "SL" + text + " " + pos_id_str, OBJPROP_TEXT,
                         "SL   " + (string)lots + " lots   price " + DoubleToString(sl, _Digits) + "   ticket# " + pos_id_str);
         ObjectSetInteger(0, "SL" + text + " " + pos_id_str, OBJPROP_COLOR, clrWhite);
         ObjectSetString(0, "SL" + text + " " + pos_id_str, OBJPROP_FONT, "Arial");
         ObjectSetInteger(0, "SL" + text + " " + pos_id_str, OBJPROP_FONTSIZE, 8);
        }

      //--- TP
      if(tp > 0)
        {
         ObjectCreate(0, "TP " + pos_id_str, OBJ_HLINE, 0, 0, tp);
         ObjectSetInteger(0, "TP " + pos_id_str, OBJPROP_COLOR, clrRed);
         ObjectSetInteger(0, "TP " + pos_id_str, OBJPROP_STYLE, STYLE_DASHDOT);

         ObjectCreate(0, "TP" + text + " " + pos_id_str, OBJ_TEXT, 0, iTime(NULL, 0, TextBarsBack), tp);
         ObjectSetString(0, "TP" + text + " " + pos_id_str, OBJPROP_TEXT,
                         "TP   " + (string)lots + " lots   price " + DoubleToString(tp, _Digits) + "   ticket# " + pos_id_str);
         ObjectSetInteger(0, "TP" + text + " " + pos_id_str, OBJPROP_COLOR, clrWhite);
         ObjectSetString(0, "TP" + text + " " + pos_id_str, OBJPROP_FONT, "Arial");
         ObjectSetInteger(0, "TP" + text + " " + pos_id_str, OBJPROP_FONTSIZE, 8);
        }
     }

//--- Mostrar ordens pendentes
   int orders = OrdersTotal();
   for(int i = 0; i < orders; i++)
     {
      ulong ticket = OrderGetTicket(i);
      if(ticket == 0)
         continue;

      string osymbol = OrderGetString(ORDER_SYMBOL);
      if(osymbol != BaseSymbol)
         continue;

      ord_id = OrderGetInteger(ORDER_TICKET);
      ord_id_str = (string)ord_id;
      double price = OrderGetDouble(ORDER_PRICE_OPEN);
      double lots  = OrderGetDouble(ORDER_VOLUME_INITIAL);
      double sl    = OrderGetDouble(ORDER_SL);
      double tp    = OrderGetDouble(ORDER_TP);
      ENUM_ORDER_TYPE type = (ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE);

      switch(type)
        {
         case ORDER_TYPE_BUY_LIMIT:
            pending = "BUY LIMIT";
            break;
         case ORDER_TYPE_BUY_STOP:
            pending = "BUY STOP";
            break;
         case ORDER_TYPE_BUY_STOP_LIMIT:
            pending = "BUY STOP LIMIT";
            break;
         case ORDER_TYPE_SELL_LIMIT:
            pending = "SELL LIMIT";
            break;
         case ORDER_TYPE_SELL_STOP:
            pending = "SELL STOP";
            break;
         case ORDER_TYPE_SELL_STOP_LIMIT:
            pending = "SELL STOP LIMIT";
            break;
         default:
            continue;
        }

      //--- Linha
      ObjectCreate(0, pending + " " + ord_id_str, OBJ_HLINE, 0, 0, price);
      ObjectSetInteger(0, pending + " " + ord_id_str, OBJPROP_COLOR, clrGreen);
      ObjectSetInteger(0, pending + " " + ord_id_str, OBJPROP_STYLE, STYLE_DASHDOT);

      //--- Texto
      ObjectCreate(0, pending + text + " " + ord_id_str, OBJ_TEXT, 0, iTime(NULL, 0, TextBarsBack), price);
      ObjectSetString(0, pending + text + " " + ord_id_str, OBJPROP_TEXT,
                      pending + "   " + (string)lots + " lots   price " + DoubleToString(price, _Digits) + "   ticket# " + ord_id_str);
      ObjectSetInteger(0, pending + text + " " + ord_id_str, OBJPROP_COLOR, clrWhite);
      ObjectSetString(0, pending + text + " " + ord_id_str, OBJPROP_FONT, "Arial");
      ObjectSetInteger(0, pending + text + " " + ord_id_str, OBJPROP_FONTSIZE, 8);

      //--- SL
      if(sl > 0)
        {
         ObjectCreate(0, "SL " + ord_id_str, OBJ_HLINE, 0, 0, sl);
         ObjectSetInteger(0, "SL " + ord_id_str, OBJPROP_COLOR, clrRed);
         ObjectSetInteger(0, "SL " + ord_id_str, OBJPROP_STYLE, STYLE_DASHDOT);

         ObjectCreate(0, "SL" + text + " " + ord_id_str, OBJ_TEXT, 0, iTime(NULL, 0, TextBarsBack), sl);
         ObjectSetString(0, "SL" + text + " " + ord_id_str, OBJPROP_TEXT,
                         "SL   " + (string)lots + " lots   price " + DoubleToString(sl, _Digits) + "   ticket# " + ord_id_str);
         ObjectSetInteger(0, "SL" + text + " " + ord_id_str, OBJPROP_COLOR, clrWhite);
         ObjectSetString(0, "SL" + text + " " + ord_id_str, OBJPROP_FONT, "Arial");
         ObjectSetInteger(0, "SL" + text + " " + ord_id_str, OBJPROP_FONTSIZE, 8);
        }

      //--- TP
      if(tp > 0)
        {
         ObjectCreate(0, "TP " + ord_id_str, OBJ_HLINE, 0, 0, tp);
         ObjectSetInteger(0, "TP " + ord_id_str, OBJPROP_COLOR, clrRed);
         ObjectSetInteger(0, "TP " + ord_id_str, OBJPROP_STYLE, STYLE_DASHDOT);

         ObjectCreate(0, "TP" + text + " " + ord_id_str, OBJ_TEXT, 0, iTime(NULL, 0, TextBarsBack), tp);
         ObjectSetString(0, "TP" + text + " " + ord_id_str, OBJPROP_TEXT,
                         "TP   " + (string)lots + " lots   price " + DoubleToString(tp, _Digits) + "   ticket# " + ord_id_str);
         ObjectSetInteger(0, "TP" + text + " " + ord_id_str, OBJPROP_COLOR, clrWhite);
         ObjectSetString(0, "TP" + text + " " + ord_id_str, OBJPROP_FONT, "Arial");
         ObjectSetInteger(0, "TP" + text + " " + ord_id_str, OBJPROP_FONTSIZE, 8);
        }
     }

   return(rates_total);
  }
//+------------------------------------------------------------------+