Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Facebook!
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
Visualizações:
949
Avaliação:
(23)
Publicado:
2016.04.26 11:54
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
A abordagem da tarefa terá o seguinte aspecto:

Vamos supor que temos um qualquer Sistema de Negociação Básico (SNB). Será
preciso projetar e treinar uma rede neural para que seja capaz de fazer o que
esse SNB não consegue realizar. Ou seja, no final, deveremos obter
um sistema de negociação formado por uma combinação entre um
SNB e um Sistema Neural (SN) que se complementam mutuamente.

Coloquialmente falando, não faz sentido inventar de novo a bicicleta, se
já foi inventada há muito tempo. Para quê tentar ensinar alguém a correr depressa,
se já tiver um automóvel, ou a voar, se tiver um helicóptero?

O fato de termos um sistema de negociação de tendência pressupõe precisarmos
de ensinar à rede neural apenas estratégias contra-tendência. Isto acontece porque ele é projetado para
tendências incapazes de negociar corretamente tendências laterais e de reconhecer
adequadamente inversões ou reversões. Você, certamente, pode tomar dois SNM, um de acordo com a tendência, outro de contra-tendência, e colocá-los em um gráfico para trabalharem. Por outro lado, também é possível ensinar à rede neural a complementar qualquer um sistema de negociação.

Para este efeito, foi concebida uma rede neural de duas camadas composta por
dois perceptrons de camada inferior de um perceptron de camada superior.
A saída da rede neural tem 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, cada uma das quais
ensina um perceptron. Além disso, em qualquer delas há 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 fase de treino e ao pequeno tamanho
da rede neural, o processo de otimização leva um tempo razoável.

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

O número de etapas insere-se no parâmetro de entrada do SNM
com o identificador “pass”, isto ocorre deste modo para que não se engane. Por outro lado, 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.

Então, continuamos com os preparativos para a otimização e ensino do SN. No
testador - propriedades do expert - guia "Testar" estabelecemos
um depósito inicial de $1 000 000 (de tal modo que não criemos
uma margincall durante a otimização), o parâmetro otimizável "Balance" e
ativamos o algoritmo genético.

Vamos até à aba "Parâmetros de entrada" nas propriedades do conselheiro.
Definimos o tamanho do lote de posições abertas, atribuindo ao identificador
lots o valor de 1.

Realizaremos a otimização segundo o modelo: "Segundo os preços de abertura (apenas para conselheiros com um controle claro da abertura de barras).", porque esse controle está presente no algoritmo do SNM.

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,
os selecionamos, e desmarcamos
todos os outros parâmetros.

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


Segunda etapa. Ensinar o 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, 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 segunda etapa, ou seja, os identificadores que terminam em 2:

x12, x22, x32, x42 - coeficiente de peso do perceptron que reconhece 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 10 a 100 com incrementos de 1
st2 - StopLoss de posições abertas pelo perceptron. Otimiza-se com valores de 10 a 100 com incrementos de 1
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 segunda 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 10 a 100 com incrementos de 1
sl3 - StopLoss de posições abertas pelo perceptron. Otimiza-se com valores de 10 a 100 com incrementos de 1
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 4 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 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 conselheiro.

P.S.

  • O tamanho do depósito inicial é definido como o drawdown absoluto multiplicado por dois, isto é, com margem de segurança.
  • O conselheiro 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()
  • Para não introduzir manualmente o valor inicial, final, e o tamanho dos incrementos de otimização, você pode tomar o arquivo pronto combo.set e fazer o upload para as propriedades do conselheiro no testador, colocando-o na pasta \tester MT4.

  • A re-otimização do conselheiro é 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.
Será uma pena? Infelizmente, um erro exasperante infiltrou-se na versão inicial de códigos fonte: o parêntesis de fechamento não estava no lugar certo, daí que a quarta etapa tenha sido ensinada e interpretada incorretamente. Peço encarecidamente a quem tenha baixado o arquivo Combo.mq4 que o atualizem para a versão Combo_Right.


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

    MTF BB-Squeeze MTF BB-Squeeze

    Indicador BB-Squeeze. Versão modificada. Para trabalhar é necessário o indicador bbsqueeze.

    up3x1_premium_v2M up3x1_premium_v2M

    Este sistema de negociação mecanizada é projetado para trabalhar sobre o par de moedas EUR / USD no gráfico horário. Ótimos resultados.

    TREND_alexcud TREND_alexcud

    Indicador de múltiplos timeframes . Mostra a direção da tendência de alguns gráficos de tempo noutra janela.

    TZ-Pivot TZ-Pivot

    Indicador de pivôs diários para níveis com exibição precisa e informativa no gráfico.