Ideias de Negociação Baseada na Direção dos Preços e na Velocidade do Movimento
Introdução
Sabe-se muito bem que quando o preço se movimenta, todos os mercados líquidos revelam algum tipo de onda cíclica, que vai primeiro para cime e depois para baixo. Isto é claramente visto em períodos gráficos mais elevados. A natureza sinusoidal é um reflexo do fato de que o preço possui uma certa persistência. Caso contrário, seria algo como um ziguezague: movimentos abruptos ascendentes e descendentes em um curto período de tempo. Vamos tentar descobrir as razões deste fenômeno e as formas de empregar isto nas negociações.
O Começo do Movimento e a Persistência
Qualquer movimento em nosso mundo pode ser caracterizado pela sua direção, aceleração e velocidade. Ele funciona em mercados líquidos também. Isto implica em uma importante regra, que diz que um forte movimento direcional no preço nunca acaba bruscamente. Ele pode ser comparado com um trem: Quando todo o trem freia em sua velocidade máxima, o tempo de frenagem pode durar até um quilômetro.
Então, quando é que uma tendência começa? Quando a opinião da maioria dos participantes do mercado muda ao contrário por qualquer razão, seja ela referente à mudanças globais em curso, pela mudança de alguns fatores importantes que influenciam o mercado ou pelas notícias. Com isso uma determinada opinião coletiva é formada e a tendência se inicia. Os participantes do mercado passam a acreditar ainda mais que o movimento está se tornando cada vez mais forte e que ele irá continuar por mais algum tempo. Ele tem uma direção, aceleração e uma certa velocidade, pois os grandes players entram no mercado com grandes posições. Este é o lugar onde aqueles, que entraram no início do movimento, dando impulso e velocidade, começam a ter lucro. Outros traders entram no mercado mais tarde por um preço menos atraente. Mas, diferentemente dos primeiros traders, eles tentam capturar o sentido do movimento dos preços.
A tendência termina quando as mudanças ocorrem. Mas por que o preço ainda se move da mesma maneira? Por que ele não muda abruptamente? A razão de tal comportamento é que aqueles que foram acelerando e empurrando o preço na direção desejada, começam a fechar suas posições e, assim, suprimir a tendência. E aqueles, que apenas "surfam a onda" e ainda acreditam que nada tenha se alterado, tentam mover o preço. Mas não basta apenas parar esse "trem". Ele começa a se mover na direção oposta, finalizando assim a história.
A Idéia de Negociação e Como não ser Atropelado pelo "Trem"
A ideia de obter lucro utilizando o movimento se baseia na análise da profundidade da tendência atual, ou seja, o seu tamanho e duração.
Para fornecer um exemplo vivo, nós usamos os indicadores padrão: RSI (Relative Strength Index) e AC (Acceleration/Deceleration).
1. Condições para entrar no mercado
Nós usaremos o primeiro indicador para demonstrar o quão longe e profundo o preço se moveu atualmente.
Nós vamos colocar os níveis para determinar uma distância e uma profundidade:
Fig. 1. Níveis do oscilador RSI
Os critérios de avaliação da profundidade do movimento do preço:
- Uma área entre os níveis de 40 - 60 é considerado como sendo uma zona lateralizada (zona de lado). Não há qualquer tendência quando o preço esta nessa zona. Vamos atribuir o índice 0 para a ausência de um movimento direcional.
Zonas do movimento do preço de compra:
- Zona 60-70 - este é um possível início de um movimento para cima. Vamos atribuir o índice de 1 para este movimento.
- Zona 70-80 - o movimento ascendente é mais distinto. O movimento agrega velocidade. Atribui-se o índice 2.
- Zona 80-90 - o movimento tem uma direção estável. A velocidade é recolhida. Atribui-se o índice 3.
- Zona 90-100. Em geral, esse é um movimento forte de uma única direção, que não tem pullbacks. Muito raro. Seu índice de movimento será o 4.
Vamos indexar os preços de venda de forma semelhante:
- Zona 30-40. O movimento começa ir para baixo. Índice -1.
- Zona 20-30. O movimento agrega velocidade. Índice -2.
- Zona 10-20. Sentido descendente estável. Índice -3.
- Zona 0-10. Zona de movimento de sentido único forte. Índice -4.
Podemos descrever esta condição na linguagem MQL4 da seguinte forma:
//--- Determinando o índice de compra double rsi=iRSI(Symbol(),tf,period,PRICE_CLOSE,0); index_rsi = 0; if(rsi>90.0) index_rsi=4; else if( rsi > 80.0 ) index_rsi = 3; else if( rsi > 70.0 ) index_rsi = 2; else if( rsi > 60.0 ) index_rsi = 1; else if( rsi < 10.0 ) index_rsi = -4; else if( rsi < 20.0 ) index_rsi = -3; else if( rsi < 30.0 ) index_rsi = -2; else if( rsi < 40.0 ) index_rsi = -1;
Usaremos o indicador AC de Bill Williams para esta finalidade, ou seja, vamos medir a velocidade e a aceleração do movimento atual.
Fig. 2. Indicador AC
Critérios de avaliação da velocidade:
Crescimento.
- O primeiro critério é a comparação dos histogramas atuais e anteriores. Se o histograma atual excede o anterior, há uma provável aceleração de crescimento do preço. Vamos defini-la como um índice de velocidade igual a 1.
- O segundo critério é a comparação das três barras vizinhas (a partir da barra zero para a segunda barra). Nós podemos falar sobre o aumento de aceleração se o valor de cada barra posterior exceder o valor da barra anterior. O índice de velocidade será igual a 2.
- Há uma comparação semelhante com as 4 barras para verificar se cada barra anterior é menor que a subsequente. O índice de velocidade será igual a 3.
- A comparação das últimas cinco barras com o devido cuidado para a atual, verificando a mesma condição. O índice de velocidade será igual a 4.
Queda.
- Também. Comparação da barra atual e da anterior. Se a barra atual for menor que a anterior, o índice de velocidade será igual a -1.
- Comparação da redução de 3 barras da anterior para a atual. Índice é igual a -2.
- Comparação de 4 barras. Índice é igual a -3.
- Comparação de 5 barras. Índice é igual a -4.
Em MQL4 ficará da seguinte forma:
double ac[]; ArrayResize(ac,5); for(int i=0; i<5; i++) ac[i]=iAC(Symbol(),tf,i); index_ac=0; //--- Sinal de compra if(ac[0]>ac[1]) index_ac=1; else if(ac[0]>ac[1] && ac[1]>ac[2]) index_ac=2; else if(ac[0]>ac[1] && ac[1]>ac[2] && ac[2]>ac[3]) index_ac=3; else if(ac[0]>ac[1] && ac[1]>ac[2] && ac[2]>ac[3] && ac[3]>ac[4]) index_ac=4; //--- Sinal de venda else if(ac[0]<ac[1]) index_ac=-1; else if(ac[0]<ac[1] && ac[1]<ac[2]) index_ac=-2; else if(ac[0]<ac[1] && ac[1]<ac[2] && ac[2]<ac[3]) index_ac=-3; else if(ac[0]<ac[1] && ac[1]<ac[2] && ac[2]<ac[3] && ac[3]<ac[4]) index_ac=-4;
Se nós temos os índices de profundidade do movimento e sabemos a velocidade do movimento, podemos estabelecer e classificar algumas condições de entrada.
Há opções de entrada no mercado:
//--- Sinal de compra if(index_rsi==1 && index_ac>=1) //Possível movimento de compra if(index_rsi==2 && index_ac>=1) //Movimento de compra fraco if(index_rsi==3 && index_ac==1) //Movimento de compra fraco if(index_rsi==3 && index_ac>=2) //Movimento de compra moderado if(index_rsi==4 && index_ac>=1) //Forte movimento de compra //--- Sinal de venda if(index_rsi==-1 && index_ac<=-1) //Possível movimento de venda if(index_rsi==-2 && index_ac<=-1) //Movimento de venda fraco if(index_rsi==-3 && index_ac==-1) //Movimento de venda fraco if(index_rsi==-3 && index_ac<=-2) //Movimento de venda moderado if(index_rsi==-4 && index_ac<=-1) //Fore movimento de venda //--- Lateralizado if(index_rsi==0)
2. Condições para a saída do mercado
Nós definimos e classificamos os parâmetros de entrada. Vamos fazer a seguinte analogia para explicar como foram formadas as condições de saída do mercado.
Pense, por exemplo, de uma bola de borracha para crianças. E agora vamos pensar o que vai acontecer se alguém jogar essa bola na água a partir de um ponto muito alto. Primeiro ele estará caindo e ganhando velocidade devido à aceleração gravitacional. Em seguida, ele bate contra a água. Mas ela tem uma velocidade suficiente para submergir a uma certa profundidade, perdendo a sua velocidade e tendo um valor negativo. A bola é afetada pelo Princípio de Arquimedes, de modo que ela é empurrado para a superfície.
Agora vamos aprofundar este exemplo:
- Como você já entendeu, a nossa bola é o preço.
- Uma pessoa jogando a bola representa os participantes do mercado que começaram a tendência.
- A força da gravidade que provoca a aceleração gravitacional representa os traders que aderiram à direção dos preços após a tendência ser iniciada.
- A água representa os fatores importantes que influenciam na mudança de direção.
- O princípio de Arquimedes representa as posições fechadas daqueles que começaram a tendência.
Os dois objetivos principais para obter lucro são os seguintes:
- Determinar o momento oportuno em que a bola já tenha sido lançada e comprar ou vender.
- Fechar uma posição quando a bola mergulhar na água e fica mais lenta.
Pode ser difícil determinar a duração e a distância exata da queda da bola já que nós não vemos a pessoa jogando a bola nem a água nos mercados financeiros. Nós só podemos ver a velocidade e a direção da bola.
Nós revisamos os critérios acima sobre a profundidade do movimento de preços e avaliação da velocidade.
Agora nós vamos definir as condições de saída:
//--- Possível reversão para baixo if(index_rsi>2 && index_ac<0)
Se o preço estava subindo por muito tempo, sua aceleração torna-se negativa (para o lado negativo). Isso aponta para o fato de que uma mudança na tendência é perfeitamente possível.
//--- Possível reversão para cima if(index_rsi<-2 && index_ac>0)
O mesmo ocorre com o exemplo dado: a bola estava caindo por tempo suficiente, mas caiu na água, e a água empurrou a bola para fora na direção oposta. Ela indica o momento para fechar as posições.
3. Aperfeiçoamento da eficiência de entrada e saída
Sabe-se que alguns indicadores de negociação levantar sua velocidade de resposta à mudança de tendência quando usamos um período maior. Mas mais sinais falsos aparecem também.
A forma alternativa é não alterar o período de cálculo para o lado menor, mas segui-lo em várias períodos.
Fig. 3. Tendência em diferentes intervalos de tempo com base nos sinais de RSI e AC
A tendência do movimento de preços pode ser visto claramente na figura devido aos nossos critérios e os indicadores RSI e AC. Vamos dar uma olhada detalhada para ele.
Movimento e velocidade no M1: movimento forte, índice AC é 4, profundidade do índice RSI é 2. M5 tem a mesma profundidade, mas a velocidade é igual a 1. O mesmo movimento é determinado em M15 mas é menos visível do que nos gráficos inferiores. Falando sobre o gráfico de 30 minutos e de uma hora, é impressionante ver que o M30 já tem um sinal, e o H1 tem uma desaceleração e até mesmo um possível sinal reversão.
Este exemplo nos fornece uma conclusão importante:
4. A implementação da estratégia de negociação sob a forma de um Expert Advisor
Código do Expert Advisor:
//+------------------------------------------------------------------+ //| tester.mq4 | //| Alexander Fedosov | //+------------------------------------------------------------------+ #property copyright "Alexander Fedosov" #property strict #include <trading.mqh> //Biblioteca de apoio para as operações de negociação //+------------------------------------------------------------------+ //| Parâmetros | //+------------------------------------------------------------------+ input int SL = 40; // Stop loss input int TP = 70; // Take profit input bool Lot_perm=true; // Lote do saldo? input double lt=0.01; // Lote input double risk = 2; // Risco do depósito, % input int slippage= 5; // Desvio input int magic=2356; // Número Mágico input int period=8; // Período do indicador RSI input ENUM_TIMEFRAMES tf=PERIOD_CURRENT; // Período em funcionamento int dg,index_rsi,index_ac; trading tr; //+------------------------------------------------------------------+ //| Função de inicialização do Expert Advisor | //+------------------------------------------------------------------+ int OnInit() { //--- Determinação das variáveis para a classe auxiliar de funções de negociação //--- Idioma para exibir os erros, russo por padrão. tr.ruErr=true; tr.Magic=magic; tr.slipag=slippage; tr.Lot_const=Lot_perm; tr.Lot=lt; tr.Risk=risk; //--- Número de tentativas. tr.NumTry=5; //--- Determinação da casas decimais no gráfico atual dg=tr.Dig(); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Função Principal de cálculo | //+------------------------------------------------------------------+ void OnTick() { depth_trend(); speed_ac(); //--- Verifica a presença de ordens em aberto if(OrdersTotal()<1) { //--- Verifica as condições de compra if(Buy()) tr.OpnOrd(OP_BUY,tr.Lots(),Ask,SL*dg,TP*dg); //--- Verifica as condições de venda if(Sell()) tr.OpnOrd(OP_SELL,tr.Lots(),Bid,SL*dg,TP*dg); } //--- Existem ordens em aberto? if(OrdersTotal()>0) { //--- Verifica e fecha as ordens de venda que atendem as condições de fechamento. if(Sell_close()) tr.ClosePosAll(OP_SELL); //--- Verifica e fecha as ordens de compra que atendam as condições de fechamento. if(Buy_close()) tr.ClosePosAll(OP_BUY); } } //+------------------------------------------------------------------+ //| Função para determinar a profundidade da tendência | //+------------------------------------------------------------------+ void depth_trend() { //--- Determinando o índice de compra double rsi=iRSI(Symbol(),tf,period,PRICE_CLOSE,0); index_rsi = 0; if(rsi>90.0) index_rsi=4; else if(rsi>80.0) index_rsi=3; else if(rsi>70.0) index_rsi=2; else if(rsi>60.0) index_rsi=1; else if(rsi<10.0) index_rsi=-4; else if(rsi<20.0) index_rsi=-3; else if(rsi<30.0) index_rsi=-2; else if(rsi<40.0) index_rsi=-1; } //+------------------------------------------------------------------+ //| Função para determinar a velocidade da tendência | //+------------------------------------------------------------------+ void speed_ac() { double ac[]; ArrayResize(ac,5); for(int i=0; i<5; i++) ac[i]=iAC(Symbol(),tf,i); index_ac=0; //--- Sinal de compra if(ac[0]>ac[1]) index_ac=1; else if(ac[0]>ac[1] && ac[1]>ac[2]) index_ac=2; else if(ac[0]>ac[1] && ac[1]>ac[2] && ac[2]>ac[3]) index_ac=3; else if(ac[0]>ac[1] && ac[1]>ac[2] && ac[2]>ac[3] && ac[3]>ac[4]) index_ac=4; //--- Sinal de venda else if(ac[0]<ac[1]) index_ac=-1; else if(ac[0]<ac[1] && ac[1]<ac[2]) index_ac=-2; else if(ac[0]<ac[1] && ac[1]<ac[2] && ac[2]<ac[3]) index_ac=-3; else if(ac[0]<ac[1] && ac[1]<ac[2] && ac[2]<ac[3] && ac[3]<ac[4]) index_ac=-4; } //+------------------------------------------------------------------+ //| Função para verificar as condições de compra | //+------------------------------------------------------------------+ bool Buy() { bool res=false; if((index_rsi==2 && index_ac>=1) || (index_rsi==3 && index_ac==1)) res=true; return (res); } //+------------------------------------------------------------------+ //| Função para verificar as condições de venda | //+------------------------------------------------------------------+ bool Sell() { bool res=false; if((index_rsi==-2 && index_ac<=-1) || (index_rsi==-3 && index_ac==-1)) res=true; return (res); } //+-----------------------------------------------------------------------+ //| Função para verificar as condições de fechamento da posição de compra | //+-----------------------------------------------------------------------+ bool Buy_close() { bool res=false; if(index_rsi>2 && index_ac<0) res=true; return (res); } //+----------------------------------------------------------------------+ //| Função para verificar as condições de fechamento da posição de venda | //+----------------------------------------------------------------------+ bool Sell_close() { bool res=false; if(index_rsi<-2 && index_ac>0) res=true; return (res); }
Efetuamos uma pequena otimização utilizando apenas dois parâmetros: tf (Período de funcionamento) e períod (Período do indicador RSI).
E obtivemos os seguintes resultados no M15:
Fig. 4. Os resultados de backtesting do Expert Advisor
Conclusão
A determinação do início e do fim da tendência é uma das tarefas complicadas para os traders em todo o mundo já que é impossível prever o comportamento do mercado.
Mas é perfeitamente possível determinar os momentos de entrada e saída na tendência atual e, portanto, obter um lucro considerável. E a idéia geral de determinação e do rastreio dinâmico da velocidade do movimento pode ser útil neste caso.
Desejamos-lhe negócios bem sucedidos.
Traduzido do russo pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/ru/articles/1747
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso