Desenhar o lucro no candle que encerrou a transação

 

Olá pessoal,

estou tentando criar um elemento que escreva o lucro da ultima transação acima no candle que encerrou a transação.

Até agora fui capaz de chegar até aqui, mas ainda não consegui fazer com que isso faça o que preciso.


double UltimoResultado()
{
     double profit = 0;
     ulong  ticket;
     string CurrDate = TimeToString(TimeCurrent(), TIME_DATE);

     HistorySelect(StringToTime(CurrDate), TimeCurrent());
     for(int i = HistoryDealsTotal() - 1; i >= 0; i--) {
          ticket = HistoryDealGetTicket(i);
          if(ticket > 0) {
               if(HistoryDealGetString(ticket, DEAL_SYMBOL) == _Symbol && HistoryDealGetInteger(ticket, DEAL_MAGIC) == numeromagico) {
                    profit = HistoryDealGetDouble(ticket, DEAL_PROFIT);
                    ObjectCreate(_Symbol,"Profit",OBJ_TEXT,0,0,0);
                    ObjectSetInteger(0,"Profit",OBJPROP_FONTSIZE,8);
                    ObjectSetInteger(0,"Profit",OBJPROP_COLOR,clrWhite);
                    ObjectSetInteger(0,"Profit",OBJPROP_BGCOLOR,clrGreen);
                    ObjectSetString(0,"Profit",OBJPROP_TEXT,profit);
                    break;
               }
          }
     }
     return profit;
}


Como demonstração, seria esse meu objetivo:


 
diegotfcastro:

Olá pessoal,

estou tentando criar um elemento que escreva o lucro da ultima transação acima no candle que encerrou a transação.

Até agora fui capaz de chegar até aqui, mas ainda não consegui fazer com que isso faça o que preciso.



Como demonstração, seria esse meu objetivo:


Você sabe programar em C++?
 

Olá Flávio, não sou programador. Mas estou tentando criar um EA.

Acabei de ver que coloquei uma função booleana aff, nada a ver rs.

Vou tentar arrumar isso.

Obrigado

 
Conseguiu arrumar?
 

Leandro Guilhermano:
Conseguiu arrumar?


Não consegui deixar do jeito que quero, mas dei uma melhorada.

void DrawProfit()
{
     double profit = 0;
     ulong  ticket;
     string CurrDate = TimeToString(TimeCurrent(), TIME_DATE);

     HistorySelect(StringToTime(CurrDate), TimeCurrent());
     for(int i = HistoryDealsTotal() - 1; i >= 0; i--) {
          ticket = HistoryDealGetTicket(i);
          if(ticket > 0) {
               if(HistoryDealGetString(ticket, DEAL_SYMBOL) == _Symbol && HistoryDealGetInteger(ticket, DEAL_MAGIC) == numeromagico) {
                    profit = HistoryDealGetDouble(ticket, DEAL_PROFIT);
                    ObjectCreate(_Symbol,StringFormat("Profit %s",profit),OBJ_TEXT,0,0,0);
                    ObjectSetInteger(0,StringFormat("Profit %s",profit),OBJPROP_FONTSIZE,8);
                    ObjectSetInteger(0,StringFormat("Profit %s",profit),OBJPROP_COLOR,clrWhite);
                    ObjectSetInteger(0,StringFormat("Profit %s",profit),OBJPROP_BGCOLOR,clrGreen);
                    ObjectSetString(0,StringFormat("Profit %s",profit),OBJPROP_TEXT,profit);
                    break;
               }
          }
     }
}
 

No forum russo, consegui algumas ajudas. Mas ainda nao consegui fazer esse tal do "Draw Profit"


input ulong MagicNumber = 999;

void OnTick()
  {
      DrawProfit();
  }
//+------------------------------------------------------------------+
void DrawProfit()
{
     double profit = 0;
     ulong  ticket;
     string CurrDate = TimeToString(TimeCurrent(), TIME_DATE);

     HistorySelect(StringToTime(CurrDate), TimeCurrent());
     for(int i = HistoryDealsTotal() - 1; i >= 0; i--) {
          ticket = HistoryDealGetTicket(i);
          if(ticket > 0) {
               if(HistoryDealGetString(ticket, DEAL_SYMBOL) == _Symbol && HistoryDealGetInteger(ticket, DEAL_MAGIC) == MagicNumber) {
                    profit = HistoryDealGetDouble(ticket, DEAL_PROFIT);
                    long  closePos = HistoryDealGetInteger(ticket, DEAL_TIME);
                    int shift= iBarShift (_Symbol ,Period() ,closePos);
                    string name = (string) ticket;
                    ObjectCreate (0 ,name, OBJ_TEXT , 0 ,shift,profit);
                    ObjectSetInteger(0,name,OBJPROP_FONTSIZE,8);
                    ObjectSetInteger(0,name,OBJPROP_COLOR,clrWhite);
                    ObjectSetInteger(0,name,OBJPROP_BGCOLOR,clrGreen);
                    ObjectSetString(0,name,OBJPROP_TEXT,(string)profit);
               }
          }
     }
}
 

Nova atualização, mas ainda está diferente do objetivo


void DrawProfit(int MagicNumber)
  {
   long   dealTime   = 0;
   double dealPrice  = 0.0;
   double dealProfit = 0.0;
   ulong  ticket     = 0;
   string CurrDate   = TimeToString(TimeCurrent(), TIME_DATE);

   HistorySelect(StringToTime(CurrDate), TimeCurrent());
   for(int i = HistoryDealsTotal() - 1; i >= 0; i--)
     {
      ticket = HistoryDealGetTicket(i);
      if(ticket == 0)
         continue;
      if(HistoryDealGetString(ticket, DEAL_SYMBOL) != _Symbol)
         continue;
      if(HistoryDealGetInteger(ticket, DEAL_MAGIC) != MagicNumber)
         continue;

      dealTime    = HistoryDealGetInteger(ticket, DEAL_TIME);
      dealPrice   = HistoryDealGetDouble(ticket, DEAL_PRICE);
      dealProfit  = HistoryDealGetDouble(ticket, DEAL_PROFIT)-HistoryDealGetDouble(ticket, DEAL_SWAP)-HistoryDealGetDouble(ticket, DEAL_COMMISSION);
      string name = (string)ticket;

      ObjectCreate(0,name, OBJ_TEXT, 0, dealTime, dealPrice);
      ObjectSetInteger(0,name,OBJPROP_FONTSIZE,8);
      ObjectSetInteger(0,name,OBJPROP_COLOR,clrWhite);
      ObjectSetInteger(0,name,OBJPROP_BGCOLOR,clrGreen);
      ObjectSetString(0,name,OBJPROP_TEXT,(string)dealProfit);
     }
  }
 
diegotfcastro:

Nova atualização, mas ainda está diferente do objetivo


Se você não sabe programar está correndo um risco tremendo de tornar seu MT5 completamente instável, dado o seu código dos seus posts...

Sugiro que contrate alguêm para fazer isso, na área de Freelance...

;)

 
Flavio Jarabeck:

Se você não sabe programar está correndo um risco tremendo de tornar seu MT5 completamente instável, dado o seu código dos seus posts...

Sugiro que contrate alguêm para fazer isso, na área de Freelance...

;)

estou fazendo por hobby! Se eu contratar alguém será muito fácil!

não preciso viver de mercado, mas obrigado pelas dicas!