Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Twitter!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Experts

SNM Combo - expert para MetaTrader 5

Publicado por:
Vladimir Karputov
Visualizações:
1749
Avaliação:
(33)
Publicado:
2017.01.23 11:57
Atualizado:
2018.06.27 15:57
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Aqui está uma descrição do autor com umas pequenas correções feitas por mim, agora nos pares de moedas já está em uso "cinco-signos".

A abordagem da tarefa terá o seguinte aspecto:

Vamos supor que temos um qualquer Sistema de Negociação Básico (SNB). É preciso projetar e treinar uma rede neural para que seja capaz de fazer o que esse SNB não consegue realizar. Como resultado, deve surgir um sistema de negociação a partir de dois SNB e rede neural combinados e complementares entre si.

Dito de modo simples, não há necessidade de reinventar a roda, uma vez que já tem sido inventada. Qual é o ponto em ensinar alguém a correr rápido, se já existe o carro, ou voar, se já existe o helicóptero? 

O fato de termos um sistema de negociação de tendência pressupõe precisarmos ensinar à rede neural apenas uma estratégia de contra-tendência. Afinal, o sistema projetado para tendências é incapaz de negociar corretamente nas tendências laterais, bem como reconhecer adequadamente recuos e reversões. Naturalmente, podemos usar dois SNM, um de acordo com a tendência, outro de contra-tendência, e colocá-los num gráfico para serem executados. Por outro lado, também é possível ensinar à rede neural a complementar qualquer um sistema de negociação.

Para este efeito, foi projetada uma rede neural de duas camadas, que consiste em dois perceptrons de camada inferior e um outro de camada superior.A saída da rede neural pode estar num dos três estados:

  1. Entrada no mercado com uma posição longa
  2. Entrada no mercado com uma posição curta
  3. Estado indeterminado

Na verdade, o terceiro estado é a transferência de controle do SNB, enquanto, nos dois primeiros, os sinais de negociação forem emitidos pela rede neural.

O treinamento da rede neural está dividido em três etapas, em cada uma das quais é treinado um perceptron. Em qualquer fase, está necessariamente presente um SNB otimizado para que os perceptrons saibam quais são as suas possibilidades.

O fato dos perceptrons serem treinados independente pelo algoritmo genético, deve-se às deficiências deste mesmo algoritmo, nomeadamente, porque os parâmetros de entrada selecionados pelo algoritmo estão limitados em número. No entanto, graças à consistência lógica de cada etapa de treino e ao pequeno tamanho da rede neural, o processo de otimização tarda um tempo razoável.

Mas a primeira etapa, que precede o ensino do SN, é a otimização dos SNB.

O número de etapas é especificado no parâmetro de entrada do SNM com o identificador “pass”, isto ocorre deste modo para que não se engane. Por sua vez, os identificadores dos parâmetros de entrada, que correspondem ao número de etapas, terminam num número igual ao número da mesma fase.

Sendo assim, continuamos com a preparação preliminar para a otimização e ensino do SN.

No testador, definimos um depósito inicial de $100 (de tal modo que não criemos uma margincall durante a otimização), o parâmetro otimizável "Balance + max Sharpe Ratio", tipo de otimização "Fast genetic algorithm."

Vamos para a aba "Parâmetros de entrada" nas propriedades do Expert Advisor.
Definimos o tamanho do lote das posições a ser abertas, atribuindo ao identificador "lots" o valor de 1.

A otimização deve ser realizada de acordo com o modelo: "Open prices only". Este método foi selecionado por sua alta velocidade. Além disso, o algoritmo do SNM apresenta um novo controle de barras.

Primeira etapa da optimização. Otimização do SNB:

Definimos o valor 1 para o parâmetro de entrada pass.
Otimizamos apenas os parâmetros de entrada correspondentes à primeira etapa, a seguir, todos os identificadores que terminam em 1 e, logo depois, selecionamo-los, e desmarcamos todos os outros parâmetros.

tp1 - TakeProfit SNB. Otimiza-se com valores de 100 a 1000 com incrementos de 10
sl1 - stoploss SNB. Otimiza-se com valores de 100 a 1000 com incrementos de 10
P1 - período do oscilador CCI utilizado no SNB. Otimiza-se com valores de 3 a 100 com incrementos de 1

Começamos o ensino através da otimização do GA. 

Segunda etapa. Aprendizagem do perceptron responsável pelas posições curtas:

Definimos o valor 2 para o parâmetro de entrada pass, ou seja, correspondente ao número da etapa.
Desmarcamos os parâmetros de optimização, estabelecidos na etapa anterior. Salvamos, se por acaso, numa outra pasta, os parâmetros de entrada obtidos na etapa anterior.

Marcamos as caixas de seleção para otimização de parâmetros da segunda etapa, ou seja, os identificadores que terminam em 2:

x12, x22, x32, x42 são coeficientes de peso do perceptron que reconhecem posições curtas. Otimiza-se com valores de 0 a 200 com incrementos de 1.
tp2 - TakeProfit de posições abertas pelo perceptron. Otimiza-se com valores de 100 a 1000 com incrementos de 10
st2 - StopLoss de posições abertas pelo perceptron. Otimiza-se com valores de 100 a 1000 com incrementos de 10
p2 - período de diferença de preços que é analisado pelo perceptron. Otimiza-se com valores de 3 a 100 com incrementos de 1.

Começamos o ensino através da otimização do GA.

Terceira etapa. Ensinar o perceptron responsável pelas posições longas:

Definimos o valor 3 para o parâmetro de entrada pass, ou seja, correspondente ao número da etapa.
Desmarcamos os parâmetros de optimização, estabelecidos na etapa anterior.
Salvamos, em qualquer caso, numa outra pasta, os parâmetros de entrada obtidos
na etapa anterior.

Definimos as caixas de seleção para otimização de parâmetros da terceira etapa, ou seja, os identificadores que terminam em 3:

x13, x23, x33, x43 - coeficiente de peso do perceptron que reconhece posições longas. Otimiza-se com valores de 0 a 200 com incrementos de 1.
tp3 - TakeProfit de posições abertas pelo perceptron. Otimiza-se com valores de 100 a 1000 com incrementos de 10
sl3 - StopLoss de posições abertas pelo perceptron. Otimiza-se com valores de 100 a 1000 com incrementos de 10
p3 - período de diferença de preços que é analisado pelo perceptron. Otimiza-se com valores de 3 a 100 com incrementos de 1.

Começamos o ensino através da otimização do GA. 

Quarta etapa - final.

Ensino da primeira camada, isto e, do perceptron que se encontra na camada superior:

Definimos o valor e para o parâmetro de entrada pass, ou seja, correspondente ao número da etapa.
Desmarcamos os parâmetros de optimização, estabelecidos na etapa anterior.
Salvamos, se por acaso, numa outra pasta, os parâmetros de entrada obtidos na etapa anterior.

Definimos as caixas de seleção para otimização de parâmetros da quarta etapa, ou seja, os identificadores que terminam em 4:

x14, x24, x34, x44 - coeficiente de peso do perceptron que reconhece posições curtas. Otimiza-se com valores de 0 a 200 com incrementos de 1.
p4 - período de diferença de preços que é analisado pelo perceptron. Otimiza-se com valores de 3 a 100 com incrementos de 1.

Começamos o ensino através da otimização do GA. 

Finalmente, a rede neural já recebeu todo o ensino.

O SNM tem ainda um parâmetro de entrada mn não otimizado, o número mágico, isto é, o identificador de posições para que o sistema de negociação não se engane com as suas ordens e as ordens abertas manualmente ou com outros SNM. O valor do número mágico deve ser único e não coincidir com os número mágicos das posições que não foram abertas por este Expert Advisor.

P.S.

  • O tamanho do depósito inicial é definido como o drawdown absoluto multiplicado por dois, isto é, com margem de segurança. 
  • O Expert Advisor nos códigos fonte não está otimizado 
  • Se se tornar necessário substituir o SNM embutido pelo algoritmo de outro sistema de negociação, será necessário mudar o conteúdo da função basicTradingSystem()
  • A re-otimização do Expert Advisor é realizada aos fins de semana, ou seja, no sábado ou no domingo, mas somente se os resultados da semana anterior forem desfavoráveis. A presença de perdas indica que o mercado mudou e é preciso fazer uma re-otimização. A presença de lucro indica que o SNM, por um lado, não precisa de outra otimização e, por outro, reconhece bem os padrões de mercado.


Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/16762

MFI_Histogram_Round_HTF MFI_Histogram_Round_HTF

Indicador MFI_Histogram_Round com possibilidade de alterar o timeframe do indicador nos parâmetros de entrada.

Exp_GTakeProfit Exp_GTakeProfit

Expert Advisor para fechar todas as posições se o lucro total - para essas posições - exceder o limite fixo de lucro, nas variáveis de entrada.

Exp_GStop Exp_GStop

Expert Advisor para fechar todas as posições se o lucro total - para essas posições - exceder o limite fixo de lucro, nas variáveis de entrada, ou se o total de perdas - para essas posições - exceder o limite fixo de perdas, nas variáveis de entrada.

WPR_Histogram_Round_HTF WPR_Histogram_Round_HTF

Indicador WPR_Histogram_Round com possibilidade de alterar o timeframe do indicador nos parâmetros de entrada.