![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Prezado Guru,
Estou usando uma matriz de duas dimensões, digamos, ZigZag[2][100]. e quero ordenar pela primeira dimensão. Eu utilizo a seguinte função:
ArraySort(ZigZag,WHOLE_ARRAY,0,MODE_DESCEND);
mas não parece ordenar por primeira dimensão, nem por segunda dimensão. há alguém aqui que possa me ajudar?
Muito obrigadoOs documentos da MQL afirmam que o ArraySort classifica por primeira dimensão, se você não estiver obtendo os resultados certos, poste sua entrada e saída do array.
Escrever uma simples função quicksort não demoraria muito tempo. Crie um novo array, armazene os resultados ordenados, depois faça um loop para procurar em ZigZag e copie a segunda dimensão. Ineficiente, provavelmente, mas ele faz o trabalho.![](https://c.mql5.com/forextsd/smiles/smile.png)
aqui está o código
Os documentos da MQL afirmam que o ArraySort ordena por primeira dimensão, se você não estiver obtendo os resultados corretos, poste sua entrada e saída do array.Escrever uma simples função quicksort não levaria muito tempo. Crie um novo array, armazene os resultados ordenados, depois faça um loop para procurar em ZigZag e copie a segunda dimensão. Ineficiente, provavelmente, mas ele faz o trabalho.
Obrigado por sua resposta.
Quero calcular e exibir as linhas de suporte e de resistência em um gráfico. cujo algoritmo é encontrar 100 ZigZag no histórico e contar o peso de cada ZigZag. como calcular o peso de cada ZigZag? Para cada ZigZag, eu tento pesquisar toda a matriz para encontrar a quantidade de outros ZigZags cujo valor é 5 pontos próximos a este ZigZag determinado, digamos, se um ZigZag determinado é 1.5000, então eu quero encontrar todos os outros ZigZags cuja distância destes dois ZigZags está dentro de 5 pontos, se assim for, eu adiciono 1 contagem a este ZigZag determinado, e eu faço isso para todos os 100 ZigZags.
quando termino isto, tento classificar todos estes ZigZags pela dimensão do contador. como você pode encontrar no indicador. mas tentei muito imprimindo o valor antes e depois que a função ArraySort(0 foi excutada. não encontro diferença.
Eu afixo o indicador para sua referência.
Obrigado antecipadamente.
aqui está o código para o Indicador:
//+------------------------------------------------------------------+
//| Risisstance and Support.mq4 |
//| Copyright ?200 |
//+------------------------------------------------------------------+
#propriedade copyright "Copyright ?2006, Nick Bilak"
// hacked into a channel ind. by t_david em algum momento no início de 2007
#janela_do_cartão_indicador de propriedade
Gap externo int Gap = 5;
Profundidade int externa = 24;
Desvio externo int = 5;
Int externo BackStep=3;
Exterior int BackStart=288;
int ZigN=100;
duplo ZigZag[2][100];
int ShowBars = 500;
int dist=24;
int init() {
retorno(0);
}
int start() {
int k,i,j,limit,hhb,llb;
int counted_bars=IndicatorCounted();
//---- última barra contada será recontada
if(counted_bars>0) counted_bars--;
ShowBars=barras_contadas_combars;
FindZigZag();
ResistanceSupport();
// for(i=0;i<10;i++)
{
// ObjectDelete("P_Line");
// ObjectCreate("P_Line", OBJ_HLINE,0, CurTime(),Close[0]);
ObjectDelete("RS0");
ObjectCreate("RS0",OBJ_HLINE,0,CurTime(),ZigZag[1][0]); // ObjectCreate("RS0",OBJ_HLINE,0,CurTime(),ZigZag[1][0]);
ObjectDelete("RS1");
ObjectCreate("RS1",OBJ_HLINE,0,CurTime(),ZigZag[1][1]); ObjectCreate("RS1",OBJ_HLINE,0,CurTime(),ZigZag[1][1]);
ObjectDelete("RS2");
ObjectCreate("RS2",OBJ_HLINE,0,CurTime(),ZigZag[1][2]); ObjectCreate("RS2",OBJ_HLINE,0,CurTime(),ZigZag[1][2]);
ObjectDelete("RS3");
ObjectCreate("RS3",OBJ_HLINE,0,CurTime(),ZigZag[1][3]); ObjectDelete("RS3",OBJ_HLINE,0,CurTime(),ZigZag[1][2]);
ObjectDelete("RS4");
ObjectCreate("RS4",OBJ_HLINE,0,CurTime(),ZigZag[1][4]); ObjectCreate("RS4",OBJ_HLINE,0,CurTime(),ZigZag[1][4]);
ObjectDelete("RS5");
ObjectCreate("RS5",OBJ_HLINE,0,CurTime(),ZigZag[1][5]); ObjectDelete("RS5",OBJ_HLINE,0,CurTime(),ZigZag[1][4]);
ObjectDelete("RS6");
ObjectCreate("RS6",OBJ_HLINE,0,CurTime(),ZigZag[1][6]); ObjectCreate("RS6",OBJ_HLINE,0,CurTime(),ZigZag[1][6]);
ObjectDelete("RS7");
ObjectCreate("RS7",OBJ_HLINE,0,CurTime(),ZigZag[1][7]); ObjectDelete("RS7",OBJ_HLINE,0,CurTime(),ZigZag[1][6]);
ObjectDelete("RS8");
ObjectCreate("RS8",OBJ_HLINE,0,CurTime(),ZigZag[1][8]); ObjectCreate("RS8",OBJ_HLINE,0,CurTime(),ZigZag[1][8]);
ObjectDelete("RS9");
ObjectCreate("RS9",OBJ_HLINE,0,CurTime(),ZigZag[1][9]); ObjectDelete("RS9",OBJ_HLINE,0,CurTime(),ZigZag[1][9]);
}
// se (ShowBars >= Barras) ShowBars = Barras;
/*
para (i=0;i<ShowBars;i++) {
b1=0;
b2=0;
b3=0;
b4=0;
b5=0;
b6=0;
b8=0;
hhb = iHighest(Símbolo(),0,MODE_HIGH,dist,i-dist/2);
llb = iLowest(Símbolo(),0,MODE_LOW,dist,i-dist/2);
se (i==hhb)
b3=High+SignalGap*Point;
se (i==llb)
b4=Low[llb]-SignalGap*Point;
b1=Alto;//+SignalGap*Point;
b2=Baixo[llb];//-SignalGap*Point;
}
*/
retorno(0);
}
//f encontre os dez ZigZag,
FindZigZag() vazio
{
int i=BackStart;
int ii=0;
int m=0;
int n=0;
while(ii<ZigN)
{
if(iCustom(NULL,0, "zigzag",Profundidade,Desvio,BackStep,0,i)>0.1) //1=Alto
{
ZigZag[0]=0;
ZigZag[1]=iCustom(NULL,0, "zigzag",Profundidade,Desvio,BackStep,0,i);
// Imprimir("ZigZag: ",ZigZag[1]);
ii++;
}
i++;
}
}
// Encontrar Resistência e Apoio
Resistência nulaSuporte()
{
int i,n;
for(i=0;i<ZigN;i++)
{
for(n=0;n<ZigN;n++)
{
if(MathAbs(ZigZag[1]-ZigZag[1][n])<Point*Gap)
{
ZigZag[0]++;
}
// Imprimir(i+":ZigNumber: "+ZigZag[0]+" ZigZag: "+ZigZag[1]);
}
// Imprimir ("Fim");
}
ArraySort(ZigZag,WHOLE_ARRAY,0,MODE_DESCEND);
for(i=0;i<ZigN;i++)
{
// Imprimir(i+":ZigNumber: "+ZigZag[0]+" ZigZag: "+ZigZag[1]);
}
// Imprimir ("Fim");
}
Posso fazer-lhe alguma pergunta para a MQL4?
Olá de Berlim,
Sou novo neste fórum e li o Curso MQL4 do guru da Coders. Muito obrigado por seu ensinamento! Agora eu quero tentar algo fácil e já perdi
Por que a linha MA não aparecerá no meu gráfico principal? Obrigado por sua ajuda.
#janela_do_cartão_indicador de propriedade
#indicador de propriedade_cores1 Vermelho
período_MA = 21;
bool Fact_Up = verdadeiro;
bool Fato_Dn = verdadeiro;
int start()
{
duplo MA;
MA=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,0);
se (Bid > MA && Fact_Up == verdadeiro)
{
Fato_Dn = verdadeiro;
Fato_Fato_Up = falso;
Alerta("Preço está acima de MA(",Período_MA,")");
}
se (Bid < MA && Fact_Dn == verdadeiro)
{
Fact_Up = verdadeiro;
Facto_Facto_Dn = falso;
Alerta("Preço está abaixo de MA(",Period_MA,")");
}
retorno(0);
}
Hi,
Estou trabalhando em uma idéia para um indicador personalizado. Preciso saber se isso é possível em um roteiro:
O MT4 pode reconhecer qual vela está sob meu mouse a qualquer momento? Então eu quero traçar uma linha horizontal na abertura ou no fechamento de uma determinada vela (que eu seleciono clicando ou passando o mouse por cima dela), isso é possível?
Não consegui encontrar nenhuma informação sobre isto.
Isso me ajudaria muito, obrigado!
gerente de pedidos/transações para EAs
Olá,
Alguém familiarizado com uma biblioteca MQ4 para gerenciamento de pedidos/transações de EAs? Estou interessado principalmente nas duas funcionalidades a seguir:
1. Colocação de ordens stop virtuais : ao invés de usar OrderSend(...) aplicado com uma ordem stop, você usa MyOrderSend(...) com os mesmos parâmetros e o gerente cuidará de tudo enquanto mantém o controle do preço e colocará a ordem de mercado quando o preço tocar a ordem stop.
O principal objetivo disto é superar a carga desnecessária do STOPLEVEL, mas também permitirá ordens "sombrias".
2. O gerente coletará estatísticas de estado e estatísticas sobre ordens pendentes, executadas e encerradas. Usando esta informação, pode-se implementar estratégias MM e estratégias de stop extravagantes (por exemplo, o número de vezes que uma posição ao vivo foi ativada pode ser usada para a preservação do lucro ou mecanismos de stop).
Já procurei por um bom tempo, portanto não espero que tal biblioteca exista em sua totalidade, mas se você estiver familiarizado com soluções parciais e trechos de código relevantes, isso será ótimo.
Abraço,
Trendick
gerente de pedidos/transações para EAs
Acabei de descobrir que um gerente de pedidos muito bom foi desenvolvido em mql5 para permitir posições cobertas. Veja paulsfxrandomwalk blogspot (ainda não permitido postar links).
Não está completo, mas é um código muito bom.
Não deve ser fácil, mas ainda assim é possível traduzi-lo para mql4, pois é preciso baixar o código c++ OOP para o mql4 extremamente limitado. Parece ser um grande desperdício![](https://c.mql5.com/forextsd/smiles/sad_smile.png)
Por isso, minha chamada para seus links ainda está em...
Linhas de MA na tabela
Olá de Berlim,
Sou novo neste fórum e li o Curso MQL4 do guru da Coders. Muito obrigado por seu ensinamento! Agora eu quero tentar algo fácil e já perdi
Por que a linha MA não aparecerá no meu gráfico principal? Obrigado por sua ajuda.
#janela_do_cartão_indicador de propriedade
#indicador de propriedade_cores1 Vermelho
período_MA = 21;
bool Fact_Up = verdadeiro;
bool Fato_Dn = verdadeiro;
int start()
{
duplo MA;
MA=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,0);
se (Bid > MA && Fact_Up == verdadeiro)
{
Fato_Dn = verdadeiro;
Fato_Fato_Up = falso;
Alerta("Preço está acima de MA(",Período_MA,")");
}
se (Bid < MA && Fact_Dn == verdadeiro)
{
Fact_Up = verdadeiro;
Facto_Facto_Dn = falso;
Alerta("Preço está abaixo de MA(",Period_MA,")");
}
retorno(0);
}Olá Berliner,
Parece que as rotinas para desenhar as linhas MA no gráfico estão faltando em seu código acima.
Faça uma rápida pesquisa neste Fórum TSD para muitos bons exemplos de indicadores de MA que você pode ver no código para aprender como desenhar as linhas de MA no gráfico.
Boa sorte...e continue aprendendo!
Robert
Edição de atualização no indicador MTF
Olá,
Preciso de ajuda neste indicador. Sua inclinação MTF MACD, mas tem um problema na atualização, tenho que trocar o TF para corrigi-lo.
Já tentei mudar
limite=barras_contadas_barras; para limitar=barras_contadas_barras/Período();
e também adicionando Refreshrates();
sem resultado.
Portanto, desculpe, eu tenho que carregar o código em .mql , tente carregar usando a tag php, mas ela é longa.
Eu também carrego a imagem no tópico MTF
Obrigado perante os caras.
Olá, pessoal,
Tenho muitas mensagens particulares me pedindo ajuda com algumas peças de código.
Aqui você pode postar suas perguntas relacionadas à MQL4, e eu farei o meu melhor para respondê-las.Codesguru,
Eu não tenho nenhum conhecimento sobre programação. E preciso que você ou qualquer pessoa me ajude colocando alarme e alerta (como indicador externo) nesta execute_line indi.
Obrigado antecipadamente.
Saúde, Terry
Escamação Waddah Attar
Olá!
Encontrei um indicador interessante que está orientado para o escalpe.
Quero testá-lo, mas ele não imprime nenhuma barra depois de alguns dias.
Você pode ver o que deve ser editado em código para que ele imprima alguns milhares de barras? Se houver uma opção para digitar um número no meta editor, por favor, me diga. Eu não consegui encontrar algo.
Obrigado por seu tempo.
Xander
waddah_attar_scalping.ex4
waddah_attar_scalping.mq4