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á,
Espero que alguém possa ajudar a conseguir um indicador para fazer o que eu gosto que ele faça.
Tenho um indicador que mostra o comprimento do corpo / ou o comprimento total da vela, mais o tempo da barra da vela.
A única coisa é que ele não é adequado para corretores de 5 dígitos; o tempo e o comprimento são projetados um sobre o outro enquanto que no Dígito 4 são perfeitos.
Seria muito bom que alguém fosse capaz e estivesse disposto a mudar o código.
Obrigado de antemão,
Cumprimentos,
Ben
Faltando algo simples
Tenho trabalhado em um filtro TL para uma cruz MA EA, qualquer cruz MA EA, mas cravejando-o no anexo por ser um filtro simples.
Basicamente, a calculadora TL dá sinais 1, 2 ou 3 dependendo da direção TL e da cruz de preço e uma desagradável "divisão zero" se a TL não for suficientemente inclinada.
Estou aprendendo a codificar e ler todos os PDF's do Guru Coders e tanto quanto do fórum MQL4 quanto meu cérebro pode aguentar, mas como sou lento a aprender e mais novo a codificar qualquer coisa até 3 semanas atrás....
Procurando por algumas dicas....
Problema: Não consigo descobrir como chamar o valor "TLfilter" que é 3 quando o preço não tocou na TL e está OK para fazer uma compra.
Tentei colá-lo nos critérios de Compra/Venda como &&TTLfilter = 3!, e qualquer outro método que eu possa descobrir, mas tudo o que eu recebo então é nada de negócios.
Também tentei colocá-lo no circuito OrderSelect, mas sem sorte.
Apenas procurando por indicadores como no que estou perdendo.
Se alguém estiver interessado em dar uma olhada.
Desenhe uma TL no gráfico antes de anexar a EA e nomeie t6
Descomentar o //--- Imprimir ("TLfilter = ",TLfilter); retornar(TLfilter); na parte inferior da seção TL para ver o que ele está fazendo.
Os mod's para esta EA são marcados por linha dupla ======= 1 2 e 3
Editar: Nenhum dos meus códigos neste aqui, pois queria ter certeza de que fosse o mais limpo possível x_trader_v2_tlmod.mq4
multiindicador
Hi!
Alguém usa/tem um multiindicador como este?
Média Móvel Múltipla - Base de Código MQL4
Se você vê lá embaixo, parece um indicador de "barra de liberdade"... então... Quero mudar estes indicadores de entrada, não quero usar 4ema.... Eu quero 1ema( 2 cruzamento ), CCI, STOCH e SAR
Encontro alguns multiindicadores, mas eles não tinham uma história como esta
alguém pode ajudar e mudar o código?
Oi Pearl1,
Pelo que posso ver pode ser feito, basta entrar na chamada substituindo as outras 3 médias móveis pelos indicadores que você deseja usar junto com as condições para sinalizar.
Eu estava tentando algo, mas nenhum progresso
Por que você não publica o que codificou até o momento e explica o que está tentando fazer? Dessa forma, alguém poderia ajudá-lo
Eu estava tentando algo, mas nenhum progresso
int start()
{
//----
int Counted.Bars = IndicatorCounted(), i;
if(Contado.Bars<0) retorno(-1);
if(Contado.Bars>0) Contado.Bars--;
int Limit = Bars - Contado.Bars;
cor Texto.Cor.1, Texto.Cor.2, Texto.Cor.3, Texto.Cor.4;
//----
for(i=Limit; i>=0; i--)
{
MA0.Buffer.0 = iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_MEDIAN, i); eu não presto aqui.... ele sempre compara com este MA0.Buffer.0....so, se eu usar RSI, Stoch,... devo criar este buffer para todos os elementos? RSI0.Buffer.0 para RSI?
//----
MA1.Buffer.0 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i);
MA1.Buffer.1 = iMA(NULL, 0, MA1.Período, 0, MA1.Modo, MA1.Preço, i+1);
MA2.Buffer.0 = iMA(NULL, 0, MA2.Período, 0, MA2.Modo, MA2.Modo, MA2.Preço, i);
MA2.Buffer.1 = iMA(NULL, 0, MA2.Período, 0, MA2.Modo, MA2.Modo, MA2.Preço, i+1);
MA3.Buffer.0 = iMA(NULL, 0, MA3.Período, 0, MA3.Modo, MA3.Modo, MA3.Preço, i);
MA3.Buffer.1 = iMA(NULL, 0, MA3.Período, 0, MA3.Modo, MA3.Modo, MA3.Preço, i+1);
MA4.Buffer.0 = iMA(NULL, 0, MA4.Período, 0, MA4.Modo, MA4.Modo, MA4.Preço, i);
MA4.Buffer.1 = iMA(NULL, 0, MA4.Período, 0, MA4.Modo, MA4.Modo, MA4.Preço, i+1);
MA1.UP.Buffer = EMPTY_VALUE;
MA1.DN.Buffer = EMPTY_VALUE;
if(MA1.Buffer.0 < MA1.Buffer.1) MA1.DN.Buffer = Gap * P1.Posição + 1.0;
else MA1.UP.Buffer = Gap * P1.Posição + 1.0;
if(MA1.Buffer.0 < MA0.Buffer.0) Texto.Color.1 = Texto.Color.Up;
else Text.Color.1 = Text.Color.Down;
//----
MA2.UP.Buffer = EMPTY_VALUE;
MA2.DN.Buffer = EMPTY_VALUE;
if(MA2.Buffer.0 < MA2.Buffer.1) MA2.DN.Buffer = Gap * P2.Posição + 1.0;
else MA2.UP.Buffer = Gap * P2.Posição + 1.0;
if(MA2.Buffer.0 < MA0.Buffer.0) Texto.Color.2 = Texto.Color.Up;
else Text.Color.2 = Text.Color.Down;
//----
MA3.UP.Buffer = EMPTY_VALUE;
MA3.DN.Buffer = EMPTY_VALUE;
if(MA3.Buffer.0 < MA3.Buffer.1) MA3.DN.Buffer = Gap * P3.Posição + 1.0;
else MA3.UP.Buffer = Gap * P3.Posição + 1.0;
if(MA3.Buffer.0 < MA0.Buffer.0) Texto.Color.3 = Texto.Color.Up;
else Text.Color.3 = Text.Color.Down;
//----
MA4.UP.Buffer = EMPTY_VALUE;
MA4.DN.Buffer = EMPTY_VALUE;
if(MA4.Buffer.0 < MA4.Buffer.1) MA4.DN.Buffer = Gap * P4.Posição + 1.0;
else MA4.UP.Buffer = Gap * P4.Position + 1.0;
if(MA4.Buffer.0 < MA0.Buffer.0) Texto.Color.4 = Texto.Color.Up;
else Text.Color.4 = Text.Color.Down;
//----
//----
LabelSet(Texto.Color.1, Texto.Color.2, Texto.Color.3, Texto.Color.4);
//----
}
//----
retorno(0);
Você não precisa criar um buffer para todos os elementos.
MA1.Buffer.0, MA1.Buffer.1, .... não são buffers, mas variáveis simples. Você pode usá-las para qualquer coisa sem alterar seus nomes. Se você quiser usá-lo, por exemplo, para rsi, você pode mudar o código para algo como isto :
sem a necessidade de alterar os nomes das variáveis e funcionará (basta definir RSI1.Period e RSI1.Price neste caso como parâmetros externos)
int start()
{
//----
int Counted.Bars = IndicatorCounted(), i;
if(Contado.Bars<0) retorno(-1);
if(Contado.Bars>0) Contado.Bars--;
int Limit = Bars - Contado.Bars;
cor Texto.Cor.1, Texto.Cor.2, Texto.Cor.3, Texto.Cor.4;
//----
for(i=Limit; i>=0; i--)
{
MA0.Buffer.0 = iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_MEDIAN, i); eu não presto aqui.... ele sempre compara com este MA0.Buffer.0....so, se eu usar RSI, Stoch,... devo criar este buffer para todos os elementos? RSI0.Buffer.0 para RSI?
//----
MA1.Buffer.0 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i);
MA1.Buffer.1 = iMA(NULL, 0, MA1.Período, 0, MA1.Modo, MA1.Preço, i+1);
MA2.Buffer.0 = iMA(NULL, 0, MA2.Período, 0, MA2.Modo, MA2.Modo, MA2.Preço, i);
MA2.Buffer.1 = iMA(NULL, 0, MA2.Período, 0, MA2.Modo, MA2.Modo, MA2.Preço, i+1);
MA3.Buffer.0 = iMA(NULL, 0, MA3.Período, 0, MA3.Modo, MA3.Modo, MA3.Preço, i);
MA3.Buffer.1 = iMA(NULL, 0, MA3.Período, 0, MA3.Modo, MA3.Modo, MA3.Preço, i+1);
MA4.Buffer.0 = iMA(NULL, 0, MA4.Período, 0, MA4.Modo, MA4.Modo, MA4.Preço, i);
MA4.Buffer.1 = iMA(NULL, 0, MA4.Período, 0, MA4.Modo, MA4.Modo, MA4.Preço, i+1);
MA1.UP.Buffer = EMPTY_VALUE;
MA1.DN.Buffer = EMPTY_VALUE;
if(MA1.Buffer.0 < MA1.Buffer.1) MA1.DN.Buffer = Gap * P1.Posição + 1.0;
else MA1.UP.Buffer = Gap * P1.Posição + 1.0;
if(MA1.Buffer.0 < MA0.Buffer.0) Texto.Color.1 = Texto.Color.Up;
else Text.Color.1 = Text.Color.Down;
//----
MA2.UP.Buffer = EMPTY_VALUE;
MA2.DN.Buffer = EMPTY_VALUE;
if(MA2.Buffer.0 < MA2.Buffer.1) MA2.DN.Buffer = Gap * P2.Posição + 1.0;
else MA2.UP.Buffer = Gap * P2.Posição + 1.0;
if(MA2.Buffer.0 < MA0.Buffer.0) Texto.Color.2 = Texto.Color.Up;
else Text.Color.2 = Text.Color.Down;
//----
MA3.UP.Buffer = EMPTY_VALUE;
MA3.DN.Buffer = EMPTY_VALUE;
if(MA3.Buffer.0 < MA3.Buffer.1) MA3.DN.Buffer = Gap * P3.Posição + 1.0;
else MA3.UP.Buffer = Gap * P3.Posição + 1.0;
if(MA3.Buffer.0 < MA0.Buffer.0) Texto.Color.3 = Texto.Color.Up;
else Text.Color.3 = Text.Color.Down;
//----
MA4.UP.Buffer = EMPTY_VALUE;
MA4.DN.Buffer = EMPTY_VALUE;
if(MA4.Buffer.0 < MA4.Buffer.1) MA4.DN.Buffer = Gap * P4.Posição + 1.0;
else MA4.UP.Buffer = Gap * P4.Posição + 1.0;
if(MA4.Buffer.0 < MA0.Buffer.0) Texto.Color.4 = Texto.Color.Up;
else Text.Color.4 = Text.Color.Down;
//----
//----
LabelSet(Texto.Color.1, Texto.Color.2, Texto.Color.3, Texto.Color.4);
//----
}
//----
retorno(0);int start()
{
//----
int Counted.Bars = IndicatorCounted(), i;
if(Contado.Bars<0) retorno(-1);
if(Contado.Bars>0) Contado.Bars--;
int Limit = Bars - Contado.Bars;
cor Texto.Cor.1, Texto.Cor.2, Texto.Cor.3, Texto.Cor.4;
//----
for(i=Limit; i>=0; i--)
{
MA0.Buffer.0 = iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_MEDIAN, i);
//----
MA1.Buffer.0 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i);
MA1.Buffer.1 = iMA(NULL, 0, MA1.Período, 0, MA1.Modo, MA1.Preço, i+1);
MA2.Buffer.0 = iMA(NULL, 0, MA2.Período, 0, MA2.Modo, MA2.Modo, MA2.Preço, i);
MA2.Buffer.1 = iMA(NULL, 0, MA2.Período, 0, MA2.Modo, MA2.Modo, MA2.Preço, i+1);
MA3.Buffer.0 = iMA(NULL, 0, MA3.Período, 0, MA3.Modo, MA3.Modo, MA3.Preço, i);
MA3.Buffer.1 = iMA(NULL, 0, MA3.Período, 0, MA3.Modo, MA3.Modo, MA3.Preço, i+1);
MA4.Buffer.0 = iMA(NULL, 0, MA4.Período, 0, MA4.Modo, MA4.Modo, MA4.Preço, i);
MA4.Buffer.1 = iMA(NULL, 0, MA4.Período, 0, MA4.Modo, MA4.Modo, MA4.Preço, i+1);
MA1.UP.Buffer = EMPTY_VALUE;
MA1.DN.Buffer = EMPTY_VALUE;
if(MA1.Buffer.0 < MA1.Buffer.1) MA1.DN.Buffer = Gap * P1.Posição + 1.0;
else MA1.UP.Buffer = Gap * P1.Posição + 1.0;
if(MA1.Buffer.0 < MA0.Buffer.0) Texto.Color.1 = Texto.Color.Up;
else Text.Color.1 = Text.Color.Down;
//----
MA2.UP.Buffer = EMPTY_VALUE;
MA2.DN.Buffer = EMPTY_VALUE;
if(MA2.Buffer.0 < MA2.Buffer.1) MA2.DN.Buffer = Gap * P2.Posição + 1.0;
else MA2.UP.Buffer = Gap * P2.Posição + 1.0;
if(MA2.Buffer.0 < MA0.Buffer.0) Texto.Color.2 = Texto.Color.Up;
else Text.Color.2 = Text.Color.Down;
//----
MA3.UP.Buffer = EMPTY_VALUE;
MA3.DN.Buffer = EMPTY_VALUE;
if(MA3.Buffer.0 < MA3.Buffer.1) MA3.DN.Buffer = Gap * P3.Posição + 1.0;
else MA3.UP.Buffer = Gap * P3.Posição + 1.0;
if(MA3.Buffer.0 < MA0.Buffer.0) Texto.Color.3 = Texto.Color.Up;
else Text.Color.3 = Text.Color.Down;
//----
MA4.UP.Buffer = EMPTY_VALUE;
MA4.DN.Buffer = EMPTY_VALUE;
if(MA4.Buffer.0 < MA4.Buffer.1) MA4.DN.Buffer = Gap * P4.Posição + 1.0;
else MA4.UP.Buffer = Gap * P4.Position + 1.0;
if(MA4.Buffer.0 < MA0.Buffer.0) Texto.Color.4 = Texto.Color.Up;
else Text.Color.4 = Text.Color.Down;
//----
//----
LabelSet(Texto.Color.1, Texto.Color.2, Texto.Color.3, Texto.Color.4);
//----
}
//----
retorno(0);aha, obrigado, mas este Buffers compara .... tudo com MA0.Buffer.0 ?
Basta substituir as chamadas IMA() pelas chamadas que você deseja (como o iRSI() do exemplo que lhe dei) e elas devem funcionar, Não há necessidade de substituir os nomes das variáveis
aha, obrigado, mas este Buffers compara .... tudo com MA0.Buffer.0 ?