Discussão do artigo "Dominando a Dinâmica do Mercado: Criando um Expert Advisor (EA) para Estratégia de Suporte e Resistência"

 

Novo artigo Dominando a Dinâmica do Mercado: Criando um Expert Advisor (EA) para Estratégia de Suporte e Resistência foi publicado:

Um guia abrangente para desenvolver um algoritmo de negociação automatizado baseado na estratégia de Suporte e Resistência. Informações detalhadas sobre todos os aspectos da criação de um expert advisor em MQL5 e testá-lo no MetaTrader 5 – desde a análise dos comportamentos de faixa de preço até o gerenciamento de risco.

A descrição da estratégia de Suporte e Resistência gira em torno de sua aplicação em cenários de negociação. Os níveis de suporte tipicamente indicam uma barreira inferior que o preço luta para romper, sugerindo uma concentração de demanda, enquanto os níveis de resistência representam uma barreira superior indicativa de uma concentração de oferta. Os compradores geralmente entram no mercado nos níveis de suporte, e os preços tendem a subir, portanto, é um bom momento para os traders pensarem em comprar ou abrir posições longas. Por outro lado, os vendedores entram em ação nos níveis de resistência, e os preços podem cair, permitindo aos traders vender ou abrir posições curtas. Aqui está uma visualização do que queremos dizer.

S & R

A entrada no mercado é sempre dinâmica e depende do gosto e preferência de cada um, embora existam duas formas básicas de negociar os níveis. Alguns traders preferem negociar o rebote, comprando quando o preço cai em direção aos níveis de suporte e vendendo quando o preço sobe em direção aos níveis de resistência. Por outro lado, outros traders preferem negociar o rompimento, comprando quando o preço rompe os níveis de resistência e vendendo quando o preço rompe os níveis de suporte. Portanto, pode-se optar por "Fade the Break" ou "Trade the Break".

Autor: Allan Munene Mutiiria

 
Essa estratégia parece muito interessante. Com relação ao código, qual é o critério de entrada? E como são calculados os níveis de stop loss e take profit? Obrigado.
 

Ótimo artigo, obrigado por seu trabalho.

Gostaria de esclarecer o uso do termo "quebrar"

Convencionalmente, quando algo é rompido, ele não funciona mais. No caso da negociação, se um nível de suporte for rompido, é possível que seu papel mude para resistência ou se torne inválido, dependendo da ação do preço à medida que o preço continua a cair.

Quando penso no preço "rompendo" um nível, significa cruzá-lo, seja de baixo para cima, no caso de uma possível compra, ou de alto para baixo, no caso de uma possível venda.

Pelo uso do termo "rompimento", presumo que você queira dizer "salto". Com relação ao seu plano, acredito que o termo "bounce" seja mais apropriado. Por exemplo, se o preço estiver acima de um nível de suporte, descer em direção a ele e rompê-lo, imagino que o preço continue descendo, ultrapassando o nível de suporte. Nesse caso, eu preferiria operar vendido, pois o rompimento do suporte pode ser um bom sinal para isso. Por outro lado, se o preço de fato se recuperar de um nível de suporte, imagino o preço descendo até o nível de suporte de cima, encontrando-o de alguma forma relativa e depois retomando sua trajetória ascendente.

 
davesarge1 níveis de stop loss e take profit? Obrigado.
         if (open1 > close1 && open1 < ResistancePriceLevel
            && high1 > ResistancePriceLevel && Bid < ResistancePriceLevel){
            Print("$$$$$$$$$$$$ SELL NOW SIGNAL!");
            obj_Trade.Sell(0.01,_Symbol,Bid,Bid+350*5*_Point,Bid-350*_Point);
         if (open1 < close1 && open1 > SupportPriceLevel
            && low1 < SupportPriceLevel && Ask > SupportPriceLevel){
            Print("$$$$$$$$$$$$ BUY NOW SIGNAL!");
            obj_Trade.Buy(0.01,_Symbol,Ask,Ask-350*5*_Point,Ask+350*_Point);
 
Kyle Young Sangster nível de suporte for rompido, é possível que seu papel mude para resistência ou se torne inválido, dependendo da ação do preço à medida que o preço continua a cair.

Quando penso no preço "rompendo" um nível, significa cruzá-lo, seja de baixo para cima, no caso de uma possível compra, ou de alto para baixo, no caso de uma possível venda.

Pelo uso do termo "rompimento", presumo que você queira dizer "salto". Com relação ao seu plano, acredito que o termo "bounce" seja mais apropriado. Por exemplo, se o preço estiver acima de um nível de suporte, descer em direção a ele e rompê-lo, imagino que o preço continue descendo, ultrapassando o nível de suporte. Nesse caso, eu preferiria operar vendido, pois o rompimento do suporte pode ser um bom sinal para isso. Por outro lado, se o preço de fato se recuperar de um nível de suporte, imagino o preço descendo até o nível de suporte de cima, encontrando-o de alguma forma relativa e depois retomando sua trajetória ascendente.

Claro, obrigado.

 
Olá,
Por favor, esclareça uma confusão com relação ao uso de `pricesHighest` e `pricesLowest`

Eles devem conter as máximas mais altas e as mínimas mais baixas, OU as máximas mais baixas e as mínimas mais altas?

Desde já agradeço.
 

Um cuidado com relação ao uso do ArraySort com matrizes que foram modificadas usando o ArraySetAsSeries:

Se uma matriz for modificada por meio do ArraySetAsSeries, o ArraySort classificará a matriz em ordem DESCENDENTE!!!
Para obter a ordem ASCENDENTE, passe a matriz para o ArrayReverse. A partir daí, é possível obter os primeiros 10 elementos facilmente:

ArrayRemove(myArray, 10, WHOLE_ARRAY);


Obrigado e boa codificação.

 
Kyle Young Sangster #:


Para obter a ordem ASCENDING, passe a matriz para ArrayReverse. A partir daí, você pode obter facilmente os primeiros 10 elementos:

ArrayRemove(myArray, 10, WHOLE_ARRAY);

Obrigado e boa sorte com a programação.

Destacado em amarelo - nada misturado?

Saudações, Vladimir.

 
Kyle Young Sangster #:

Um cuidado com relação ao uso do ArraySort com matrizes que foram modificadas usando o ArraySetAsSeries:

Se uma matriz for modificada por meio do ArraySetAsSeries, o ArraySort classificará a matriz em ordem DESCENDENTE!!!
Para obter a ordem ASCENDENTE, passe a matriz para o ArrayReverse. A partir daí, é possível obter os primeiros 10 elementos facilmente:


Obrigado e boa codificação.

MrBrooklin #:

Destacado em amarelo - nada misturado?

Atenciosamente, Vladimir.

Não consigo editar minha postagem original, portanto, estou respondendo aqui. Vou tentar esclarecer.

A intenção original era obter o menor número n de preços de uma série. Depois de definir a matriz "como série" com ArraySetAsSeries e usar ArraySort, a matriz de preços estava em ordem decrescente. Eu esperava que eles estivessem em ordem crescente, de acordo com os documentos do ArraySort. Então, coloquei a matriz classificada no ArrayReverse para colocar os preços em ordem crescente. Em seguida, uso o ArrayRemove para remover tudo, exceto os primeiros n itens. (no caso do meu exemplo, n = 10).

Ainda há algo errado?

Obrigado pelo feedback

 
Kyle Young Sangster #:
Ainda há algo errado?

Agora estou vendo. Muito obrigado.

Saudações, Vladimir.

 
Kyle Young Sangster #:

Um cuidado com relação ao uso do ArraySort com matrizes que foram modificadas usando o ArraySetAsSeries:

Se uma matriz for modificada por meio do ArraySetAsSeries, o ArraySort classificará a matriz em ordem DESCENDENTE!!!
Para obter a ordem ASCENDENTE, passe a matriz para o ArrayReverse. A partir daí, é possível obter os primeiros 10 elementos facilmente:

Se você já usa o ArraySetAsSeries para alterar a direção lógica da matriz, não há necessidade de usar o ArrayReverse - uma maneira muito mais eficiente e lógica é chamar o ArraySetAsSeries novamente revertendo o sinalizador de direção.