Sobre o Spread

 

preciso de ajuda com um código.

É o seguinte, eu quero colocar em um OBJ_LABEL uma função que que me mostre apenas o maior Spread.

Tipo, se o Spread estiver em 12 pontos o meu OBJ_LABEL vai mostrar 12, mas se o Spread sobe pra 15 pontos o OBJ_LABEL também vai pra 15, mas quando o Spread voltar para 12 eu não quero que meu OBJ_LABEL volte, assim eu posso ver qual foi o maior Spread do ativo enquanto esse OBJ_LABEL estiver no gráfico.

Se alguém puder ajudar, coloca um código aqui como exemplo na resposta.

Valeu.

 

Olá Diego,


publica o código que você já fez, aí posso tentar dar uma sugestão.

Att. Rogério

 
Rogerio Giannetti Torres:

Olá Diego,


publica o código que você já fez, aí posso tentar dar uma sugestão.

Att. Rogério


O código é simples, apenas uma variável int spread=Ask-Bid/Point e escrevo isso em um OBJ_LABEL que foi criado.

na verdade o que eu peço nesse post eu não consegui fazer porque não me veio nenhuma ideia na cabeça sobre como fixar isso em outra variável.

eu preciso de um indicador que me mostre a propagação do spread fixando o maior spread em um OBJ_LABEL.

 

Diego,

não sei se entendi bem o seu problema, mas se você quer o maior spread do período o código é esse.


CChartObjectLabel m_label;
int spread,maior_spread;

maior_spread=INT_MIN;
...
...


spread=Ask-Bid/Point;

if(spread>maior_spread)
 {
 maior_spread = spread;
 m_label.Description(IntegerToString(maior_spread));
}
 
Rogerio Giannetti Torres:

Diego,

não sei se entendi bem o seu problema, mas se você quer o maior spread do período o código é esse.


Ainda não é isso Rogerio, mas obrigado por tentar ajudar.

Tentei fazer um loop mas tambem não deu.

O código é esse ai...




//+------------------------------------------------------------------+

//|                                                          spd.mq4 |

//|                                                   Copyright 2017 |

//|                                                                  |

//+------------------------------------------------------------------+

#property copyright "Copyright 2017"

#property link      ""

#property version   "1.00"

#property strict

#property indicator_chart_window

//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+

int OnInit()

  {

//--- indicator buffers mapping

   ObjectCreate(0,"max_spread",OBJ_LABEL,0,0,0);

//---

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Custom indicator iteration function                              |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

   ObjectDelete(0,"max_spread");

   EventKillTimer();

  }

//+------------------------------------------------------------------+

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[])

  {

//---

   int Spread = (Ask-Bid)/Point;

   int maior_spread=0;

   for(maior_spread=0;maior_spread<1;maior_spread++);

   int max_spread=0;

      if(Spread>maior_spread)max_spread=maior_spread+Spread;

      if(Spread<max_spread)"";

   

   ObjectCreate("max_spread", OBJ_LABEL, 0, 0, 0);

   ObjectSet("max_spread", OBJPROP_CORNER, 2);

   ObjectSet("max_spread", OBJPROP_YDISTANCE, 70);

   ObjectSet("max_spread", OBJPROP_XDISTANCE, 3);

   ObjectSetText("max_spread",max_spread, 11, "Arial", clrWhite);

//--- return value of prev_calculated for next call

   return(rates_total);

  }

//+------------------------------------------------------------------+


Razão: