//+------------------------------------------------------------------+ //| Alg.mqh | //| Copyright 2026, Niquel Mendoza. | //| https://www.mql5.com/es/users/nique_372/news | //+------------------------------------------------------------------+ #property copyright "Copyright 2026, Niquel Mendoza." #property link "https://www.mql5.com/es/users/nique_372/news" #property strict //+------------------------------------------------------------------+ //| Algoritmo de AST Math | //+------------------------------------------------------------------+ // La idea con este algirtmo es reducir al maximo el numero de recursiones que se hacen y ser super rapido // Mis pilares son: // 1. Para las expresion estaticias (valores raw como los llamo) se evaluan in... // 2. Para los dinamicos usare Nodos (luego adaptare mejor la clase) // Este algoritmo lo pense asi // Primermante la idea es tomar 1 valor.. luego ver si hay un operador si hay entonces esperamreos que tambine haya un operador y un valor // Si existe entonces luego bsucaremos un 4 operador con su valor.. si no existe entonces resolvermos ahi ... con Raw Si existe enonces vemos quien es el de mayor procedencia de acuerdo a eos // Haremos recusion en difentes funciones si la procedencia es mayor entonces lo que haremos sera tomar el val1 op1 y luego nos quedaremos en val2 y lamreos a ParseNoRes para que parse lo que esta a la derecha (lo qeu falta) // de lo contrairomos usaremos ParseInternalRaw la idea con eso es que esta funcion tome ya un valor y le añada algo (noe s como opres que se contruye) // El algoritmo es medio complejod e explicar pero yo inicilemtne pensaba hacerlo asi // si tengo 10+20+20*20 // Primermante la idea seria suamar 10+20 aqui qeudaira: // Bien ahi el 2do op tien maotmente prescendeci enotnces dejo en "pausa" a 30 + y parseo eso una vez que lo tengo tenida 40 ahora si junto los reusltaods y listo... y lo itnenate es que al ser reucsio // En caso haya mas operados a la drecha seguira avanzado hasta juntar todo ese nodo // Nota que creo es que esto lo hice por pura intucicion iniclamtne estaba buscando como hcerlo como no encontraba algo entendible pregunte a la ia y me dio algo asqueroso // Demasaida reucsion classes etc.... y no lo entendi bien asi que me puse a pensar como lo haria y me salio esto // Podiramos describir a este alg como resolver lo qeu se peude y si hay matomente improtani entonces dejar en pausa lo de ahora y continuar con lo que sigue algo asi..