Indicadores de múltiplos períodos de tempo - página 108

 

inclinação do mtf

veja aqui alpha24seven

https://www.mql5.com/en/forum/173574

 

Obrigado Lodol2

Desculpe-me por ter perdido esses. Obrigado por trazê-los à minha atenção.

Tive alguns problemas de compilação. Nunca tinha visto este erro antes. Alguma idéia?

Veja o gráfico

Obrigado.

Arquivos anexados:
 

Concordo com tudo o que você disse, mas acho que não fui suficientemente claro.

A fórmula de keris não parece assim em tempo real (sem atualizar os gráficos!), parece mais aquela linha amarela; se você atualizar os gráficos, sim, tudo parece bem - mas então por que não usaremos simplesmente um segundo gráfico com o prazo mais alto... e confirmar que o indicador se move apenas no prazo mais alto?

a partir do momento que você traçar um indicador mtf em um período de tempo mais baixo, você tem outra forma de calcular a média de alguns dados nesse período de tempo (e não em um tf superior). nunca vai parecer com o original - mas pode ser aproximado. então a pergunta é, como encontrar a melhor fórmula para a aproximação mais próxima? e acho que isso responde sua pergunta... certo?

mladen:
A linha vermelha é a aproximação do MA que você está propondo

Magenta é a forma Keris do MTF MA

A linha dourada são os valores reais de um horizonte de tempo MA mais alto em um horizonte de tempo mais baixo

Como você pode ver, dificilmente há um valor correto do aproximado durante um período de tempo, enquanto a fórmula de Keris dá pelo menos um valor correto por período. De qualquer forma, a fórmula para a aproximação em Metatrader seria :

MAperiod=MAperiod*TimeFrame/Período()

Se você tentar aplicar esta aproximação aos indicadores derivados da média móvel (MACD, por exemplo), você acabará com grandes, e eu quero dizer grandes diferenças (eu vi uma diferença de 7-8% de um MACD de 4H em um período de 1H)

Uma contra pergunta: o que você acha que quantas pessoas tentaram abordagens diferentes para indicadores de múltiplos períodos de tempo?
 

Erro no Código

Eu descobri. Este código extra foi deixado no arquivo -- no final. Basta apagá-lo, compilá-lo e voilà'.

Excelente indicador BTW.

---

/*

drawLine voidLine (duplo nível, nome do cordel, cor Col )

{

ObjectDelete(nome);

ObjectCreate(name, OBJ_HLINE, WindowFind(name), Time[0], lvl,Time[0], lvl);

ObjectSet(nome, OBJPROP_STYLE, STYLE_DOT);

ObjectSet(nome, OBJPROP_COLOR, Col);

ObjectSet(nome,OBJPROP_WIDTH,1);

}

---

 

...

A linha amarela é a média móvel do "MTF real".

Não há necessidade de "atualizar" nenhum dos indicadores do quadro

Quanto ao resto, por favor, leia novamente esse post

cumprimentos

mladen

Scrat:
concordo com tudo o que você disse, mas acho que não fui suficientemente claro.

A fórmula de keris não parece assim em tempo real (sem atualizar os gráficos!), parece mais aquela linha amarela; se você atualizar os gráficos, sim, tudo parece bem - mas então por que não usaremos simplesmente um segundo gráfico com o prazo mais alto... e confirmar que o indicador se move apenas no prazo mais alto?

a partir do momento em que você traça um indicador mtf em um intervalo de tempo mais baixo, você tem outra maneira de calcular a média de alguns dados nesse intervalo de tempo (e não em um tf mais alto). nunca vai parecer com o original - mas pode ser aproximado. então a pergunta é, como encontrar a melhor fórmula para a aproximação mais próxima? e acho que isso responde à sua pergunta... certo?
 

Necessidade de Mtf para este Indi

Olá a todos,

Tenho querido ter a capacidade de traçar indicadores de diferentes períodos de tempo em meu gráfico

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

//| Fisher_m11.mq4 |

//| Copyright ฉ forexjr

//| Índice de /cam06/fisher |

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

#direitos autorais "Copyright ฉ 23.07.2006 MartinG"

#link de propriedade "http://home.arcor.de/cam06/fisher"

#janela_indicadora de propriedade_separarate_window

//# indicador de propriedade_mínimo -1

//# indicador de propriedade_máximo 1

#property indicator_buffers 3

#indicador de propriedade_color2 RoyalBlue

#indicador de propriedade_cores3 Vermelho

#largura_do_indicador de propriedade2 0,5

#largura_indicador de propriedade3 0,5

int LeftNum1=56;

int LeftNum2=56;

int ExternoFaixaPeríodos=35;

duplo preço externoSuave=0,3; // =0,67 bei Fisher_m10

duplo IndexSmoothing externo=0,3; // =0,50 bei Fisher_m10

string ThisName="Fisher_kuskus";

int DrawStart;

//---- buffers

duplo ExtMapBuffer1[];

duplo ExtMapBuffer2[];

duplo ExtMapBuffer3[];

duplo ExtMapBuffer4[];

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

//| Função de inicialização do indicador personalizado |

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

int init()

{

//---- indicadores

IndicatorBuffers(4);

SetIndexLabel(0, "Estrela");

SetIndexStyle(0,DRAW_NONE);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexStyle(2,DRAW_HISTOGRAM);

SetIndexBuffer(2,ExtMapBuffer3); SetIndexBuffer(2,ExtMapBuffer3);

SetIndexStyle(3,DRAW_NONE);

SetIndexBuffer(3,ExtMapBuffer4); SetIndexBuffer(3,ExtMapBuffer4);

string Text=EsteNome;

Text=Texto+" (rPeriods "+RangePeriods;

Text=Texto+", pSmooth "+DoubleToStr(PriceSmoothing,2);

Text=Text+", iSmooth "+DoubleToStr(IndexSmoothing,2);

Text=Texto+") ";

IndicatorShortName(Texto);

SetIndexLabel(1,NULL);

SetIndexLabel(2,NULL);

DrawStart=2*Períodos de Intervalo+4; // DrawStart= BarNumber calculado da esquerda para a direita

SetIndexDrawBegin(1,DrawStart);

SetIndexDrawBegin(2,DrawStart);

if (PriceSmoothing>==1,0)

{

PriceSmoothing=0,9999;

Alerta ("Fish61: PriceSmothing factor tem que ser menor 1!");

}

se (PriceSmoothing<0)

{

PriceSmoothing=0;

Alerta ("Fish61: PriceSmothing factor não deve ser negativo!");

}

se (IndexSmoothing>==1.0)

{

IndexSmoothing=0,9999;

Alerta("Fish61: PriceSmothing factor tem que ser menor 1!");

}

se (IndexSmoothing<0)

{

IndexSmoothing=0;

Alerta("Fish61: PriceSmothing factor musttn''t be negative!");

}

//----

retorno(0);

}

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

//| Função de desinicialização de indicador personalizada |

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

int deinit()

{

//----

//----

retorno(0);

}

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

//| Função de iteração de indicador personalizada |

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

int start()

{

se (Bars<DrawStart)

{

Alerta("Fish84: Barras carregadas não suficientes para calcular FisherIndicator com RangePeriods=",RangePeriods);

retorno(-1);

}

//----

int counted_bars=IndicatorCounted();

if (counted_bars<0) return(-1);

if (counted_bars>0) counted_bars--;

//----

int Posição=barras_contadas; // Posição = BarPosição calculada da direita para a esquerda

int LeftNum1=Bars-Position; // quando mais barras são carregadas a Posição de uma barra muda, mas não seu LeftNum

if (LeftNum1<RangePeriods+1)Position=Bars-RangePeriods-1;

while(Posição>=0)

{

CalculateCurrentBar(Posição);

Posição..;

}

//----

retorno(0);

}

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

//| Função de cálculo de barra única |

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

int CalculateCurrentBar(int pos)

{

dobro LowestLow, HighestHigh, GreatestRange, MidPrice;

duplo PriceLocation, SmoothedLocation, FishIndex, SmoothedFish;

//----

MenorBaixo = Menor[Menor[NULL,0,MODE_LOW,RangePeriods,pos)];

Mais altoAlto = Alto;

se (MáximoAltoAltoBaixo<0,1*Ponto)MáximoAlto= MínimoBaixo+0,1*Ponto;

GreatestRange=AltoAltoAlto-AltoBaixo;

MidPrice = (Alto[pos]+Baixo[pos])/2;

// PreçoLocalização na faixa atual

se (GreatestRange!=0)

{

PriceLocation=(MidPrice-LowestLow)/GreatestRange;

PriceLocation= 2.0*PriceLocation - 1.0; // -> -1 < PriceLocation < +1

}

// Alisamento de PreçoLocalização

ExtMapBuffer4[pos]=PriceSmoothing*ExtMapBuffer4[pos+1]+(1,0-PriceSmoothing)*PriceLocation;

SmoothedLocation=ExtMapBuffer4[pos]=Localização suavizante;

if (SmoothedLocation> 0,99) SmoothedLocation= 0,99; // verhindert, dass MathLog unendlich wird

if (SmoothedLocation<-0.99) SmoothedLocation=-0.99; // verhindert, dass MathLog minuns unendlich wird

// FisherIndex

if(1-SmoothedLocation!=0) FishIndex=MathLog((1+SmoothedLocation)/(1-SmoothedLocation)));

else Alert("Fisher129: Unerlaubter Zustand bei Bar Nummer ",Bars-pos);

// Suavização do FisherIndex

ExtMapBuffer1[pos]=IndexSmoothing*ExtMapBuffer1[pos+1]+(1.0-IndexSmoothing)*FishIndex;

if (Bars-pos<DrawStart)ExtMapBuffer1[pos]=0;

SmoothedFish=ExtMapBuffer1[pos];

if (SmoothedFish>0) // tendência para cima

{

ExtMapBuffer2[pos]=SmoothedFish;

ExtMapBuffer3[pos]=0;

}

outra // outra tendência de queda

{

ExtMapBuffer2[pos]=0;

ExtMapBuffer3[pos]=SmoothedFish;

}

//----

retorno(0);

}

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

obrigado

 
mladen:
Pessoal, vamos levar a sério

Estou falando sério...

Sou um novato e não um programador, talvez o caminho do scrat não seja perfeito, mas talvez eu possa usá-lo. Vou tentar. Se for útil, eu vou usá-lo. Se não for, procurarei novamente outro ótimo caminho ou outro indicador.

Eu já perguntei a Codersguru sobre o mesmo assunto.

Minha pergunta para ele foi se eu uso 1 EMA em 30M TF, então em 1M TF deve ser de 30 EMA.

E ele disse que não era assim. Mas eu não fiquei satisfeito, talvez haja outra maneira, então eu o encontro aqui. Mas se não for útil, para mim está tudo bem... . Pelo menos eu sei que o resultado é.

BTW, obrigado pelo último mladen RSIOMA, eu gosto muito, e graças a fxbs e Kalenzo também, por este grande indicador.

Cumprimentos,

IIN

 

O problema é este:

Essa idéia com MA's é provavelmente a idéia mais antiga em análise técnica

Eu concordo que lugares como o TSD são lugares para compartilhar idéias e conhecimentos.

Mas, por favor, ninguém deve tentar fazer isso dessa maneira:

eu estava apenas pensando se algum de vocês já pensou em fazer uma correspondência entre o mesmo indicador em um tf maior e em um tf menor ao mesmo tempo....

Vamos lá, que diabos estamos tentando fazer aqui, afinal?

Espero que agora eu tenha sido claro.

cumprimentos

mladen

iinzall:
Estou falando sério...

Sou um novato e não um programador, talvez o caminho do scrat não seja perfeito, mas talvez eu possa usá-lo. Vou tentar. Se for útil, eu vou usá-lo. Se não for, procurarei novamente outro ótimo caminho ou outro indicador.

Eu já perguntei a Codersguru sobre o mesmo assunto.

Minha pergunta para ele foi se eu uso 1 EMA em 30M TF, então em 1M TF deve ser de 30 EMA.

E ele disse que não era assim. Mas eu não fiquei satisfeito, talvez haja outra maneira, então eu o encontro aqui. Mas se não for útil, para mim está tudo bem... . Pelo menos eu sei que o resultado é.

BTW, obrigado pelo último mladen RSIOMA, eu gosto muito, e graças a fxbs e Kalenzo também, por este grande indicador.

Cumprimentos,

IIN
 

Tudo bem, eu sou oficialmente burro e acabei de ofender a todos neste tópico. Será que desta vez eu acertei?

minhas desculpas.

mladen:
O problema é este:

Essa idéia com MA's é provavelmente a idéia mais antiga em análise técnica

Eu concordo que lugares como o TSD são lugares para compartilhar idéias e conhecimentos.

Mas, por favor, ninguém deve tentar fazer isso dessa maneira:

Vamos lá, que diabos estamos tentando fazer aqui, afinal?

Espero que agora eu tenha sido claro.

cumprimentos

mladen
 

Alguém sabe onde estes MTF indis estão?

Procurei por todas as versões de MTF destes. Alguém sabe ou já as viu?

Obrigado.

Arquivos anexados:
Razão: