Início Negociação Sistemática Postagem

EA Simples: Perceptron de Camada Única para MetaTrader 4

Anexo
18987.zip (1.98 KB, Baixar 2 vezes)

1. O Que São Perceptrons?

Os perceptrons são uma das bases das redes neurais. Para entender melhor, recomendo conferir o artigo do Dr. Mark Humphrys sobre Redes Neurais de Camada Única.

No contexto do trading, podemos pensar no perceptron como uma representação lógica que nos ajuda a tomar decisões.

2. Algoritmo

2.1. Entradas

Os parâmetros w1, w2, w3 e w4 são os pesos definidos através da sua otimização.

input int    x1 = 0;// peso1
input int    x2 = 0;// peso2
input int   x3 = 0;// peso3
input int    x4 = 0;// peso4

2.2. Perceptron

No caso de um EA simples, o limite (threshold) é zero. O resultado é binário: "ativa" (1) ou "não ativa" (0).

A Regra

double w1 = x1 - 100;
double w2 = x2 - 100;
double w3 = x3 - 100;
double w4 = x4 - 100;

// Perceptron antes de uma barra 2017/03/18
double a11 = ((iRSI(Symbol(), 0, 12,PRICE_MEDIAN,1))/100-0.5)*2;

Utilizo o RSI neste EA, mas outros osciladores também funcionam, como RCI, W%R, entre outros.

2.3. Abertura e Fechamento de Ordens

Quando o Perceptron anterior está abaixo de 0 e o atual acima de 0, se houver uma posição curta, ela é fechada e uma ordem longa é enviada.

if(Pre_Percptron < 0 && Current_Percptron > 0) // sinal de compra
   {
      // Se houver uma posição curta, envia ordem de fechamento
      if(pos < 0)
      {
         ret = OrderClose(Ticket, OrderLots(), OrderClosePrice(), 0);
         if(ret) pos = 0; // Se o fechamento da ordem for bem-sucedido, o status da posição é Zero
      }
      // Se não houver posição, envia ordem longa
      if(pos == 0) Ticket = OrderSend(
                                             _Symbol,                 OP_BUY,                 Lots,              // volume
                                             Ask,               // preço
                                             0,            // slippage
                                             0,            // stop loss
                                             0,          // take profit
                                             Trade_Comment,        // comentário
                                       MagicNumber,// número mágico
                                       0,        // expiração da ordem pendente
                                       Green  // cor
                                       );
   }

Por outro lado, quando o Perceptron atual está abaixo de 0 e o anterior acima de 0, se houver uma posição longa, ela é fechada e uma ordem curta é enviada.

3. Otimização

Carregue o arquivo "Slime_Mold_RSI_template.set" e escolha "open price only" como modelo.

Entradas

Otimização

4. Comentário e Número Mágico

Defino o Número Mágico como a duração utilizada para a otimização. Este EA utiliza o Número Mágico no comentário da ordem.

string Trade_Comment = IntegerToString(MagicNumber,5,' ') + "Dias-Otimização";

Comentário

5. Artigo Relacionado

Você pode conferir um artigo relacionado aqui.

Publicações relacionadas

Comentário (0)