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
Sua solicitação foi atendida - indicador publicado hoje com a utilidade que você queria! 😊
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.Sua solicitação foi atendida - indicador publicado hoje com a utilidade que você queria! 😊
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); } //+------------------------------------------------------------------+

- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
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