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.

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.


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";

5. Artículo relacionado
Puedes consultar más información en este enlace.
Publicaciones relacionadas
- Canales de Desviación Estándar: Tu Asesor Experto para MetaTrader 4
- Visualización de Resultados de Optimización en Tiempo Real para MetaTrader 5
- Schnick: Herramienta de Aprendizaje Automático para MetaTrader 5
- Combo Trader: El Asesor Experto para MetaTrader 4 que Necesitas
- Descarga Historial Completo de Ticks de Símbolos en MetaTrader 5