Indicador de tendencia em varios tempos ao mesmo tempo - página 2

 
Posso estar enganado, mas as tendências são baseadas em um número x de períodos, e não ao tempo especificamente, de modo que se você estiver trabalhando no gráfico de 5 minutos você pode usar duas médias moveis uma de 48 períodos ( que seria 4 horas divididas em períodos de 5 minutos) e outra de 6 períodos que seria equivalente a 30 min no tempo gráfico de 5 minutos. Assim você tem uma media móvel rápida e outra mais lenta, refletindo as últimas 4 horas! 
 
Lima, o mercado é relativo pra cada um.
Se você soubesse ver a tendência, você estaria agora com um caminho para adquirir todo o dinheiro do mundo.
A gente tenta de várias formas, cada um dá seu jeito e vai adaptando.

Imagino que com estas médias o Ulisses esteja trilhando pra um caminho onde ele consiga ter uma noção da tendência, e consiga usar outras ferramentas para auxiliar nos trades dele.

Mas de toda forma sua dica foi deixada, e alguém será iluminado por ela.
 
Ulisses Orlando:

Lucas,


Muito bom .. voce é o cara .. Valeu mesmo.. era isso que eu queria.

Grande abraço


OBS: Estou em Brasíli-DF

abraços.

Olá, aqui é o Aguinaldo.
Você conseguiu fazer o indicador
Eu tenho para o indicador MTF TREND BAR para o MQL4 mas não funciona no MQL5.

grato Aguinaldo

 

Gostaria de saber como faço para reverter uma operação. por exemplo, eu vendi o xauusd, no tempo de h1, mas quero modificar diminuir o volume e o lucro máximo. eu posso fazer isso para diminuir a perda maior, porque não chega no preço que eu coloquei. é Swing trade.

 
limaalan:
Posso estar enganado, mas as tendências são baseadas em um número x de períodos, e não ao tempo especificamente, de modo que se você estiver trabalhando no gráfico de 5 minutos você pode usar duas médias moveis uma de 48 períodos ( que seria 4 horas divididas em períodos de 5 minutos) e outra de 6 períodos que seria equivalente a 30 min no tempo gráfico de 5 minutos. Assim você tem uma media móvel rápida e outra mais lenta, refletindo as últimas 4 horas! 
Muito TOP isso..eu já pensei em fazer isso, um dia que estava longe do pc...rs
Vim pra este tópico pq queria a mesma coisa que o Autor, vi que indicaram uma solução pra ele, e acabei vendo a sua também.

Vou testar as duas...

MUITO OBRIGADO
 
Lucas Tavares:

Achei um modelo que tem exatamente o que você quer, nem precisei alterar nada.

Aqui, neste artigo do próprio mql5, que explica o funcionamento do iMA, que é uma função que invoca a Média móvel, ele dá um exemplo de um código que apenas invoca a média móvel, mas que tem no parâmetro exatamente o que você quer, a opção de escolher o Timeframe.

https://www.mql5.com/en/docs/indicators/ima

Vou te ensinar a fazer isto sem precisar "ser um programado", coisa que também não sou, sou apenas curioso e auto didata.
no Mt5, aperta F4, vai abrir o metaquotes. Aperte CTRL+N, novo projeto de indicador.
Dê o nome que quiser para seu indicador, de next, e tanto faz o que colocar, quando abrir a janela com o texto pra digitar, apague tudo e cole isto :

Depois clique em compilar (F7), pronto, na sua lista de indicadores (CTRL+N) estará o indicador com o nome que você criou. Jogue uma vez no gráfico pra ser a média rápida, configure do jeito que quer, e depois jogue de novo pra ser a lenta.
Boa sorte no aprendizado, qualquer coisa to aqui, só pede ajuda rsrs

ola amigo top demais isso ai, queria saber se tem como usar no mt4 esse codigo ?

 
betobeto:

ola amigo top demais isso ai, queria saber se tem como usar no mt4 esse codigo ?

Creio que isto fará a função de ser uma média móvel, porém um pouco mais estilosa:

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2020, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, Szymon Palczyński"
#property link      "https://www.mql5.com/en/users/stiopa"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 3

#property indicator_label1  "Down Buffer"
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  clrRed
#property indicator_width1  2

#property indicator_label2  "Up Buffer"
#property indicator_type2   DRAW_HISTOGRAM
#property indicator_color2  clrBlue
#property indicator_width2  2

#property indicator_type3   DRAW_NONE
//--- External Variable
input  int                intPeriod    = 6;            // MA Period
input  ENUM_MA_METHOD     intMethod    = MODE_SMMA;    // MA Method
input  ENUM_APPLIED_PRICE intAppliedTo = PRICE_MEDIAN; // MA Applied to
input bool alert=True;//Alert  
input bool push=False;//Push Notifications
input bool mail=False;//Email
input ENUM_TIMEFRAMES tf = PERIOD_CURRENT
double TempBuffer[];
double DownBuffer[];
double UpBuffer[];

bool   UpTrendAlert=false, DownTrendAlert=false,test;
string _intMethod[5] = {"Simple","Exponential","Smoothed","Linear Weighted"};
string _intAppliedTo[8] = {"Close price","Open price","High price","Low price","Median price","Typical price","Weighted price"};
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(intPeriod<3){
   Alert("This value means the incorrect set of input parameters. Must be intPeriod>=3");
   return(INIT_PARAMETERS_INCORRECT);
   }
   int DrawBeginIndex = intPeriod*2;
//--- indicator buffers mapping
   SetIndexBuffer(0,DownBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,UpBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,TempBuffer,INDICATOR_DATA);
   SetIndexDrawBegin(0,DrawBeginIndex);
   SetIndexDrawBegin(1,DrawBeginIndex);
   SetIndexDrawBegin(2,DrawBeginIndex);
//--- set indicator digits
   IndicatorDigits(_Digits);
   Comment("MA HISTOGRAM ("+(string)intPeriod+","+_intMethod[intMethod]+","+_intAppliedTo[intAppliedTo]+")");

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---

//--- check to have enough bars
   int limit = rates_total - intPeriod;
   if(rates_total <= limit)
      return(0);

//--- before the first run of OnCalculate
   limit = limit - prev_calculated;

   if(rates_total - prev_calculated == 0)
      limit = 1;  // after the first run of the OnCalculate
   else
      limit++;                                      // on the first tick of a new bar

//--- loop over bars to draw histogram
   for(int i=limit; i >= 0; i--)
     {
      //--- calculate sum
      double sum = 0.0;

      for(int j=0; j<intPeriod; j++)
         sum += iMA(_Symbol,tf,intPeriod,0,intMethod,intAppliedTo,i+j);

      //--- fill buffer to draw histogram
      TempBuffer[i] = sum / intPeriod;
      DownBuffer[i] = TempBuffer[i+1];

      DownBuffer[i]  = TempBuffer[i] - (TempBuffer[i] - DownBuffer[i])*2;
      UpBuffer[i] = TempBuffer[i] + (TempBuffer[i] - DownBuffer[i])*2;

      string Message;
      if(DownBuffer[0]<UpBuffer[0] && DownBuffer[1]>UpBuffer[1] && i==0 && !UpTrendAlert)
        {
         Message = StringConcatenate("MA HISTOGRAM  --> Change of trend. Up Trend. Symbol: "+Symbol()+" Price "+DoubleToStr(Open[0],Digits));
         if(alert)
            Alert(Message);
         if(push)
            SendNotification(Message);
         if(mail)
            SendMail("MA HISTOGRAM",Message);
         UpTrendAlert = true;
         DownTrendAlert = false;
        }
      if(DownBuffer[0]>UpBuffer[0] && DownBuffer[1]<UpBuffer[1] && i==0 && !DownTrendAlert)
        {
         Message = StringConcatenate("MA HISTOGRAM  --> Change of trend. Down Trend. Symbol: "+Symbol()+" Price "+DoubleToStr(Open[0],Digits));
         if(alert)
            Alert(Message);
         if(push)
            SendNotification(Message);
         if(mail)
            SendMail("MA HISTOGRAM",Message);
         UpTrendAlert = false;
         DownTrendAlert = true;
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
Lucas Tavares:
Creio que isto fará a função de ser uma média móvel, porém um pouco mais estilosa:

Oi Lucas, blz? Então, o código que vc enviou para mt5 funcionou perfeito, tb estava atrás desse indicador. Mas esse para o mt4 não, deram 8 erros qdo foi compilar, vc sabe o que pode ser? Eu estou querendo essa média móvel de diferentes tempos gráficos no mt4.

Desde já agradeço
Razão: