Error al actualizar MT5 usando matrices en EA Nuevo comentario Mel 2026.02.09 13:17 2026.02.09 07:59:56.822 coki_v1 (ETHUSD,M15) Illegal instruction [0xCC,0xCC,0xCC,0xCC,0xCC,0x48,0x89,0xC8,0xC5,0xFA,0x7F,0x30,] 2026.02.09 07:59:56.822 coki_v1 (ETHUSD,M15) Unhandled exception 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) crash --> 00007FF7984810A3 C5FA7F30 vmovdqu [rax], xmm6 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) 00007FF7984810A7 C5FA7F7810 vmovdqu [rax+0x10], xmm7 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) 00007FF7984810AC C57A7F4020 vmovdqu [rax+0x20], xmm8 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) 00007FF7984810B1 C57A7F4830 vmovdqu [rax+0x30], xmm9 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) 00007FF7984810B6 C57A7F5040 vmovdqu [rax+0x40], xmm10 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) 00007FF7984810BB C57A7F5850 vmovdqu [rax+0x50], xmm11 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) 00007FF7984810C0 C57A7F6060 vmovdqu [rax+0x60], xmm12 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) 00007FF7984810C5 C57A7F6870 vmovdqu [rax+0x70], xmm13 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) 00007FF7984810CA C57A7FB080000000 vmovdqu [rax+0x80], xmm14 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) 00007FF7984810D2 C57A7FB890000000 vmovdqu [rax+0x90], xmm15 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) 00007FF7984810DA 4889C8 mov rax, rcx 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) 00007FF7984810DD C3 ret 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) 00007FF7984810DE CC int3 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) 00007FF7984810DF CC int3 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) 00007FF7984810E0 4889C8 mov rax, rcx 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) 00: 0x00007FF7984810A3 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) 01: 0x00007FF7984D570F 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) 02: 0x000002B683C60BC9 2026.02.09 07:59:56.824 coki_v1 (ETHUSD,M15) Este es el proyecto OnInit() que utilice: { // ========================= // ENTRADAS // ========================= matrix X = {{4,2},{6,3}}; // (2 x 2) matrix Y = {{0.75,-0.5}}; // (1 x 2) // ========================= // PESOS + BIAS // ========================= matrix W1 = {{2,5},{3,6},{4,7}}; // (3 x 2) vector B1 = {5,4,2}; // (3) matrix W2 = {{4,2,3}}; // (1 x 3) double B2 = 3; // ================================================= // FORWARD PASS // ================================================= // Z1 = W1·X + B1 matrix Z1 = W1 @ X; // (3 x 2) for(int i=0;i<3;i++) for(int j=0;j<2;j++) Z1[i,j] += B1[i]; /* Z1 [[43,24] [52,28] [60,31]] */ Print("Z1 ",Z1); // A1 = tanh(Z1) matrix A1; Z1.Activation(A1,AF_TANH); // (3 x 2) Print("A1 ",A1); // Z2 = W2·A1 + B2 matrix Z2 = W2 @ A1; // (1 x 2) Z2[0,0] += B2; Z2[0,1] += B2; Print("Z2 ",Z2); // Y_pred = tanh(Z2) matrix Y_pred; Z2.Activation(Y_pred,AF_TANH); // (1 x 2) Print("Y_pred ",Y_pred); // ========================= // LOSS // ========================= double loss = Y_pred.Loss(Y,LOSS_MSE); Print("Loss = ",loss); // ================================================= // BACKPROPAGATION // ================================================= // ---------- SALIDA ---------- // dL/dY matrix dL_dY = 2 * (Y_pred - Y); // (1 x 2) Print("Derivada error ",dL_dY); // dY/dZ2 matrix dY_dZ2; Y_pred.Derivative(dY_dZ2,AF_TANH); // (1 x 2) Print("Derivada Y_pred ",dY_dZ2); // dL/dZ2 matrix dL_dZ2 = dL_dY * dY_dZ2; // Hadamard (1 x 2) // dL/dW2 = dL/dZ2 · A1ᵀ matrix dW2 = dL_dZ2 @ A1.Transpose(); // (1 x 3) // dL/dB2 double dB2 = dL_dZ2.Sum(); // ---------- CAPA OCULTA ---------- // dL/dA1 = W2ᵀ · dL/dZ2 matrix dL_dA1 = W2.Transpose() @ dL_dZ2; // (3 x 2) // dA1/dZ1 matrix dA1_dZ1; A1.Derivative(dA1_dZ1,AF_TANH); // (3 x 2) // dL/dZ1 matrix dL_dZ1 = dL_dA1 * dA1_dZ1; // (3 x 2) // dL/dW1 = dL/dZ1 · Xᵀ matrix dW1 = dL_dZ1 @ X.Transpose(); // (3 x 2) // dL/dB1 vector dB1(3); for(int i=0;i<3;i++) dB1[i] = dL_dZ1.Row(i).Sum(); // ========================= // IMPRESIÓN // ========================= Print("dW2 = ",dW2); Print("dB2 = ",dB2); Print("dW1 = ",dW1); Print("dB1 = ",dB1); return(INIT_SUCCEEDED); } Métodos de matrices y vectores - Aprendizaje automático Funciones - Sobrecarga de operaciones Modelos ONNX - Inicio del modelo Alain Verleyen 2026.02.09 15:35 #1 ¿Qué versión estás usando? No puedo reproducir este problema. Mel 2026.02.09 15:54 #2 Alain Verleyen #: ¿Qué versión estás usando? No puedo reproducir este problema. te comparto imagen de la version Archivos adjuntos: Captura_de_pantalla_2026-02-09_075501.png 37 kb Alain Verleyen 2026.02.10 15:04 #3 Mel # : te comparto imagen de la version Incluso con 5572, no puedo reproducir este problema. Usé tu código en un indicador. ¿Te ocurre este problema cada vez que ejecutas el código? ¿Podrías publicar tu archivo de registro del diario? Nuevo comentario
Este es el proyecto OnInit() que utilice:
{ // ========================= // ENTRADAS // ========================= matrix X = {{4,2},{6,3}}; // (2 x 2) matrix Y = {{0.75,-0.5}}; // (1 x 2) // ========================= // PESOS + BIAS // ========================= matrix W1 = {{2,5},{3,6},{4,7}}; // (3 x 2) vector B1 = {5,4,2}; // (3) matrix W2 = {{4,2,3}}; // (1 x 3) double B2 = 3; // ================================================= // FORWARD PASS // ================================================= // Z1 = W1·X + B1 matrix Z1 = W1 @ X; // (3 x 2) for(int i=0;i<3;i++) for(int j=0;j<2;j++) Z1[i,j] += B1[i]; /* Z1 [[43,24] [52,28] [60,31]] */ Print("Z1 ",Z1); // A1 = tanh(Z1) matrix A1; Z1.Activation(A1,AF_TANH); // (3 x 2) Print("A1 ",A1); // Z2 = W2·A1 + B2 matrix Z2 = W2 @ A1; // (1 x 2) Z2[0,0] += B2; Z2[0,1] += B2; Print("Z2 ",Z2); // Y_pred = tanh(Z2) matrix Y_pred; Z2.Activation(Y_pred,AF_TANH); // (1 x 2) Print("Y_pred ",Y_pred); // ========================= // LOSS // ========================= double loss = Y_pred.Loss(Y,LOSS_MSE); Print("Loss = ",loss); // ================================================= // BACKPROPAGATION // ================================================= // ---------- SALIDA ---------- // dL/dY matrix dL_dY = 2 * (Y_pred - Y); // (1 x 2) Print("Derivada error ",dL_dY); // dY/dZ2 matrix dY_dZ2; Y_pred.Derivative(dY_dZ2,AF_TANH); // (1 x 2) Print("Derivada Y_pred ",dY_dZ2); // dL/dZ2 matrix dL_dZ2 = dL_dY * dY_dZ2; // Hadamard (1 x 2) // dL/dW2 = dL/dZ2 · A1ᵀ matrix dW2 = dL_dZ2 @ A1.Transpose(); // (1 x 3) // dL/dB2 double dB2 = dL_dZ2.Sum(); // ---------- CAPA OCULTA ---------- // dL/dA1 = W2ᵀ · dL/dZ2 matrix dL_dA1 = W2.Transpose() @ dL_dZ2; // (3 x 2) // dA1/dZ1 matrix dA1_dZ1; A1.Derivative(dA1_dZ1,AF_TANH); // (3 x 2) // dL/dZ1 matrix dL_dZ1 = dL_dA1 * dA1_dZ1; // (3 x 2) // dL/dW1 = dL/dZ1 · Xᵀ matrix dW1 = dL_dZ1 @ X.Transpose(); // (3 x 2) // dL/dB1 vector dB1(3); for(int i=0;i<3;i++) dB1[i] = dL_dZ1.Row(i).Sum(); // ========================= // IMPRESIÓN // ========================= Print("dW2 = ",dW2); Print("dB2 = ",dB2); Print("dW1 = ",dW1); Print("dB1 = ",dB1); return(INIT_SUCCEEDED); }