Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Olá, estou tentandoconverter um indicador de mql4 para mql5. Basicamente eu só preciso de uma notificação sólida na IFM quando aparece uma barra vermelha. Como anexar este código de som agora à nova mfi?
Anexei um exemplo da antiga versão de trabalho:
Diga-me da maneira correta, este é um cálculo Heiken Ashi
É um recorte do padrão
{
haOpen=(ExtOpenBuffer0[i-1]+ExtCloseBuffer0[i-1])/2; // <<<
haClose=(Open[i]+High[i]+Low[i]+Close[i])/4;
haHigh=MathMax(High[i],MathMax(haOpen,haClose));
haLow=MathMin(Low[i],MathMin(haOpen,haClose));
A questão surge: se Open deve ser procurado pela barra anterior, por que é procurado pela barra seguinte no código?
Provavelmente está correto desta maneira, ou estou entendendo algo errado:
Diga-me da maneira correta, este é um cálculo Heiken Ashi
É um recorte do padrão
{
haOpen=(ExtOpenBuffer0[i-1]+ExtCloseBuffer0[i-1])/2; // <<<
haClose=(Open[i]+High[i]+Low[i]+Close[i])/4;
haHigh=MathMax(High[i],MathMax(haOpen,haClose));
haLow=MathMin(Low[i],MathMin(haOpen,haClose));
A questão surge: se Open deve ser procurado pela barra anterior, por que é procurado pela barra seguinte no código?
Isto deve ser correto, ou estou entendendo algo errado?
Diga-me da maneira correta, este é um cálculo Heiken Ashi
É um recorte do padrão
{
haOpen=(ExtOpenBuffer0[i-1]+ExtCloseBuffer0[i-1])/2; // <<<
haClose=(Open[i]+High[i]+Low[i]+Close[i])/4;
haHigh=MathMax(High[i],MathMax(haOpen,haClose));
haLow=MathMin(Low[i],MathMin(haOpen,haClose));
A questão surge: se Open deve ser procurado pela barra anterior, por que é procurado pela barra seguinte no código?
Provavelmente da maneira correta, ou estou entendendo algo errado:
Para ver exatamente, qual índice tem a barra mais à direita e a mais à esquerda no gráfico, use este método simples:
Em qualquer indicador, no MetaEditor, colocar um ponto de parada na primeira operação dentro da OnCakculate() (passo 1):
Comece a depuração dos dados históricos. Assim que você iniciar a depuração em seu ponto de parada, a depuração fará uma pausa. Depois acrescente duas expressões à observação: "time[rates_total-1]" e "time[0]" (passos 2 e 3). Agora podemos ver facilmente que nesta situação (a matriz de tempo[] tem a direção de indexação padrão, o ArrayAsSeries não foi aplicado), o elemento time[rates_total-1] será a barra mais à direita no gráfico (passo 4).
Espero que este método simples e claro lhe ajude a verificar rapidamente a direção da indexação nos indicadores.
Em mql5, a direção da indexação de barras é feita por padrão. Portanto, [i-1] será a primeira barra da direita.
Eu compreendo, portanto não esqueço de usar o ArraySetAsSeries.
A questão é que tanto no código mql4 como no mql5 é aplicado o mesmo cálculo "i-1", por que subtrair se a fórmula diz barra anterior e não barra futura?
Para ver exatamente qual índice tem a barra mais direita e mais esquerda na tabela, use este truque simples:
Em qualquer indicador, no MetaEditor, colocar um ponto de parada na primeira operação dentro da OnCakculate() (passo 1):
Comece a depuração dos dados históricos. Assim que você iniciar a depuração em seu ponto de parada, a depuração fará uma pausa. Depois acrescente duas expressões à observação: "time[rates_total-1]" e "time[0]" (passos 2 e 3). Agora podemos ver facilmente que nesta situação (a matriz de tempo[] tem a direção de indexação padrão, o ArrayAsSeries não foi aplicado), o elemento time[rates_total-1] será a barra mais à direita no gráfico (passo 4).
Espero que este método simples e claro ajude a verificar rapidamente a direção da indexação nos indicadores.
Obrigado, eu não estava ciente disso.
Algum palpite sobre a exatidão dos cálculos?
Preciso fazer um alerta para o indicador CCI ARROWS.
Preciso que ele sinalize imediatamente após o aparecimento da flecha.
MT5
Olá a todos!!! Comecei a modificar o indicador no MT5, mas não consigo entender a função do iTime, não consigo colocá-lo para funcionar, alguém pode dopilizar o indicador para uma condição de trabalho?????
O indicador lê o arquivo, que está localizado na pasta MQL5\Filesevolution-dvoid.
Depois de baixá-lo, renomeá-lo para .csv
Obrigado de antemão.
Bom dia a todos, eu não sou um programador, mas um de meus amigos diz que no código do indicador Bill Williams'sMarket Facilitation Index (BW MFI) os cálculos não são feitos estritamente de acordo com a fórmula clássica: BW MFI = (ALTO - BAIXO) / VOLUME E, além disso, é utilizada alguma correção adicional de dados. Isto é de fato um erro, e conseqüentemente o indicador exibe dados incorretos!
Favor informar como corrigir este erro no indicador (remover a correção de dados adicionais) e receber
que funciona estritamente de acordo com a fórmula: BW MFI = (ALTO - BAIXO) / VOLUME ?????
//+------------------------------------------------------------------+
//| MarketFacilitationIndex.mq5 |
//| Copyright 2009, MetaQuotes Software Corp.
//|| http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp.
#link da propriedade "http://www.mql5.com"
//...- definições de indicadores
#janela_indicadora de propriedade_separarate_window
#property indicator_buffers 2
# indicadores de propriedade_plots 1
#indicador de propriedade_tipo1 DRAW_COLOR_HISTOGRAM
#Indicador de propriedade_color1 Cal,SaddleBrown,Blue,Pink
#largura_do_indicador de propriedade1 2
//--- parâmetro de entrada
input ENUM_APPLIED_VOLUME InpVolumeType=VOLUME_TICK; //volumes
//---- buffers
duplo ExtMFIBuffer[];
duplo ExtColorBuffer[];
//+------------------------------------------------------------------+
//| Função de inicialização do indicador personalizado |
//+------------------------------------------------------------------+
nulo OnInit()
{
//---- indicadores
SetIndexBuffer(0,ExtMFIBuffer,INDICADOR_DATA);
SetIndexBuffer(1,ExtColorBuffer,INDICADOR_COLOR_INDEX);
//--- nome para DataWindow
IndicatorSetString(INDICADOR_SHORTNAME, "BWMFI");
//... precisão do conjunto
IndicatorSetInteger(INDICADOR_DIGITOS,_Dígitos);
//----
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CalculateMFI(const int start,const int rates_total,
const double &high[],
const double &low[],
const long &volume[])
{
int i=start;
bool mfi_up=verdadeiro,vol_up=verdadeiro;
//--- calcular os primeiros valores de mfi_up e vol_up
if(i>0)
{
int n=i;
while(n>0)
{
if(ExtMFIBuffer[n]>ExtMFIBuffer[n-1]) { mfi_up=true; break; }
if(ExtMFIBuffer[n]<ExtMFIBuffer[n-1]) { mfi_up=falso; break; }
//--- se os valores mfi forem iguais, continuar
n--;
}
n=i;
while(n>0)
{
if(volume[n]>volume[n-1]) {vol_up=verdadeiro; break; }
if(volume[n]<volume[n-1]) { vol_up=falso; break; }
//--- se os volumes reais forem iguais, continuar
n--;
}
}
//---
while(i<rates_total && !IsStopped())
{
if(volume[i]==0)
{
if(i>0) ExtMFIBuffer[i]=ExtMFIBuffer[i-1];
senão ExtMFIBuffer[i]=0;
}
senão ExtMFIBuffer[i]=(high[i]-low[i])/_Point/volume[i];
//--- calcular mudanças
if(i>0)
{
if(ExtMFIBuffer[i]>ExtMFIBuffer[i-1]) mfi_up=verdadeiro;
if(ExtMFIBuffer[i]<ExtMFIBuffer[i-1]) mfi_up=false;
if(volume[i]>volume[i-1]) vol_up=verdadeiro;
if(volume[i]<volume[i-1]) vol_up=falso;
}
//... - definir cores
if(mfi_up && vol_up) ExtColorBuffer[i]=0.0;
if(!mfi_up && !vol_up) ExtColorBuffer[i]=1.0;
if(mfi_up && !vol_up) ExtColorBuffer[i]=2.0;
if(!mfi_up && vol_up) ExtColorBuffer[i]=3.0;
i++;
}
}
//+------------------------------------------------------------------+
//| Função de iteração de indicador personalizada |
//+------------------------------------------------------------------+
int OnCalculate(const int taxas_total,
const int prev_calculado,
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 start=0;
//---
if(start<prev_calculated) start=prev_calculated-1;
//--- calcular com carrapato ou com volumes reais
if(InpVolumeType==VOLUME_TICK)
CalculateMFI(start,rates_total,high,low,tick_volume);
senão
CalculateMFI(start,rates_total,high,low,volume);
//--- normalizar o último valor mfi
if(tarifas_total>1)
{
datetime ctm=TimeTradeServer(),lasttm=time[tarifas_total-1],nexttm=lasttm+datetime(PeriodSeconds());
if(ctm<nexttm && ctm>=lasttm && nexttm!=lasttm)
{
double correction_koef=double(1+ctm-lasttm)/double(nexttm-lasttm-lasttm);
ExtMFIBuffer[rates_total-1]*=correction_koef;
}
}
//---
retorno(taxas_total);
}
//+------------------------------------------------------------------+
Por favor, diga-me que tipo de código é este e como transformá-lo em um indicador MT5 ?
// Este é um indicador baseado em volume. Faça shure para usar a entrada de volume adequada.
Por favor, diga-me que tipo de código é este e como transformá-lo em um indicador MT5 ?
// Este é um indicador baseado em volume. Faça shure para usar a entrada de volume adequada.
BW MFI Barra de agachamento , 3 tampão ( se a memória servir)