Inicio Trading Sistemático Publicación

EA de Perceptrón Simple para MetaTrader 4: Automatiza tu Trading

Archivos adjuntos
18987.zip (1.98 KB, Descargar 2 veces)

1. ¿Qué es un Perceptrón?

El Perceptrón es una red neuronal simple que puede aprender a clasificar datos. Para profundizar en este tema, te recomiendo el artículo del Dr. Mark Humphrys sobre redes neuronales de una sola capa.

En este contexto, me gusta referirme a la lógica del Perceptrón como "Inteligencia Artificial" en el trading.


2. Algoritmo


2.1. Entradas

Las variables w1, w2, w3 y w4 son los pesos que defines durante la optimización.

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


2.2. Perceptrón

Para crear un EA simple, el umbral es cero. La salida no cambia: "dispara" 1, "no dispara" 0.

La Regla

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

// Perceptrón antes de una barra 2017/03/18
double a11 = ((iRSI(Symbol(), 0, 12, PRICE_MEDIAN, 1)) / 100 - 0.5) * 2;
double a21 = ((iRSI(Symbol(), 0, 36, PRICE_MEDIAN, 1)) / 100 - 0.5) * 2;
double a31 = ((iRSI(Symbol(), 0, 108, PRICE_MEDIAN, 1)) / 100 - 0.5) * 2;
double a41 = ((iRSI(Symbol(), 0, 324, PRICE_MEDIAN, 1)) / 100 - 0.5) * 2;
double Current_Percptron = (w1 * a11 + w2 * a21 + w3 * a31 + w4 * a41);

// Perceptrón antes de dos barras 2017/03/18
double a12 = ((iRSI(Symbol(), 0, 12, PRICE_MEDIAN, 2)) / 100 - 0.5) * 2;
double a22 = ((iRSI(Symbol(), 0, 36, PRICE_MEDIAN, 2)) / 100 - 0.5) * 2;
double a32 = ((iRSI(Symbol(), 0, 108, PRICE_MEDIAN, 2)) / 100 - 0.5) * 2;
double a42 = ((iRSI(Symbol(), 0, 324, PRICE_MEDIAN, 2)) / 100 - 0.5) * 2;
double Pre_Percptron = (w1 * a12 + w2 * a22 + w3 * a32 + w4 * a42);

En este EA utilizo el RSI, pero otros osciladores como el RCI o el W%R también son válidos.


2.3. Apertura y Cierre de Órdenes

Cuando el Perceptrón anterior está por debajo de 0 y el actual está por encima de 0, si hay una posición corta, se cierra. Luego, el EA envía una orden larga.

if(Pre_Percptron < 0 && Current_Percptron > 0) // señal de compra
   {
      // Si hay una posición corta, cierra la orden
      if(pos < 0)
       {
         ret = OrderClose(Ticket, OrderLots(), OrderClosePrice(), 0);
         if(ret) pos = 0; // Si se cierra la orden con éxito, el estado de la posición es cero
      }
      // Si no hay posición, envía orden larga
      if(pos == 0) Ticket = OrderSend(
                                       _Symbol, OP_BUY, Lots, Ask, 0, 0, 0, Trade_Comment, MagicNumber, 0, Green);
   }

Por el contrario, cuando el Perceptrón actual está por debajo de 0 y el anterior está por encima de 0, si hay una posición larga, se cierra. Luego, el EA envía una orden corta.


3. Optimización

Carga el archivo "Slime_Mold_RSI_template.set" y selecciona "solo precio de apertura" para el modelo.

Entradas

Optimización


4. Comentario y Número Mágico

Establezco el Número Mágico como la duración utilizada para la optimización, y este EA utiliza el Número Mágico en el comentario.

string Trade_Comment = IntegerToString(MagicNumber, 5, ' ') + "Días-Optimización";

Comentario


5. Artículo relacionado

Puedes consultar más información en este enlace.

Publicaciones relacionadas

Comentarios (0)