[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 99
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Buenas tardes! Por favor, ayúdenme con la función ArrayMo (devuelve el máximo de la curva de densidad).
Se han planteado las siguientes preguntas:
1.¿Cuál es el objetivo de crear una matriz temporal
2. No está claro de dónde se tomarán los valores del array temporal, y por tanto no está claro cómo se puede buscar en este array:
3. Y en general para mí la verdad está profundamente escondida))))) Una vez que hemos comprobado que no hay ningún valor, empezamos a determinar el tamaño de la matriz de "valores poco claros".
Estaría muy agradecido por un rayo de luz en esta historia))))Creo que la función no está escrita correctamente después de todo. La razón principal es que tras el anuncio
es necesario
de lo contrario(cito)
Nota: un array declarado localmente en cualquier función, que ha sido redimensionado, permanecerá sin cambios después de la ejecución de la función. Cuando la función es llamada de nuevo, dicho array tendrá un tamaño diferente al declarado!!!!
Y así con múltiples llamadas la función "caerá en el pasado")
Sobre el funcionamiento del algoritmo. La propia matriz m[][2] es una representación directa de la distribución empírica del número de aciertos de la variable x[i] por sus diferentes valores. Es decir, cada elemento de la matriz se compone de dos números: el número de aciertos sobre algún valor (el primer campo) y el propio valor. El bucle busca el mismo valor en el array m para cada x[i], y si se encuentra, se añade el campo numérico, si no, se crea un nuevo elemento con ArrayResize() y se escribe allí nuestro x[i].
A continuación, una vez rellenada la matriz, sólo tenemos que encontrar el elemento con el máximo número de aciertos, es decir, por definición, el módulo de la distribución x.
Esto se hace mediante cadenas
Aunque me parece (no estoy seguro de la matriz multidimensional), que podrías tener simplemente
En definitiva, puedo decir (con el debido respeto al autor del código) que incluso corrigiendo todos los defectos, este algoritmo es extremadamente ineficiente y a menudo puede dar resultados erróneos. La razón es que estamos trabajando con el tipo double, lo que significa que la probabilidad de que los valores de x[i] estén cerca pero sean distinguibles es bastante alta. Esto puede no ser tan perceptible cuando el tamaño de la muestra es mucho mayor (cientos de veces o más) que el número total de intervalos en los que se define x[i]. Sin embargo, en los muchos casos en los que no se cumple esta restricción, habrá muchos cálculos erróneos.
La forma más correcta de calcular la moda es la siguiente: se construye una función de distribución empírica (no confundir con la distribución de frecuencias), luego se interpola de lineal a trozos a suave, y finalmente se busca el punto de máxima derivada. Este algoritmo no presenta los inconvenientes mencionados anteriormente y funciona con bastante eficacia incluso con muestras de pequeño tamaño. Al menos, tuve que resolver sólo la tarea de encontrar un modo para muestras de 50-100 elementos con un número comparable de intervalos utilizando MQL - y todo estaba bien. La única desventaja es que las interpolaciones suelen provocar una importante caída de la velocidad de cálculo, claro está, si queremos suavizar cualitativamente.
aquí: https://www.mql5.com/ru/job
Gracias. Quizá haya más opciones.
Gracias. Tal vez haya más opciones.
Intenta escribir "martingala" en una búsqueda en la web y te sorprenderás
¡Ya he mirado! Pero falta lo que quiero(
Echa un vistazo aquí
https://www.mql5.com/ru/forum/136747
Hola. Acabo de empezar en MQL4.
Por favor, asesórese sobre la función OrderModify. Los manuales y los ejemplos muestran que esta función se utiliza para el arrastre, es decir, el cambio de stop loss. Necesito cambiar sólo el take profit en una orden abierta. El stop loss no se establece cuando se abre la orden y también debe permanecer en 0 durante la modificación .
¿Cómo debería ser el cálculo y la selección de los pedidos?
El objetivo final debería ser algo así
if (OrderType()==OP_BUY && OrderOpenPrice()-Bid>kof*Point) // hay una compra, pero ha bajado en kof
{
OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderOpenPrice()+tpnew*Point,0,CLR_NONE);// movemos TP más bajo que el colocado anteriormente
Lo mismo para vender.
Gracias por las respuestas.
Hola de nuevo :)
Como pensaba, han surgido problemas. Aquí está el código. La cuestión es que las órdenes en el probador se cierran por TP, y por función se elimina el TP cuando la orden se modifica durante el Trailing Stop.
Lo que significa que el trailing stop no se ejecuta, y no hubo errores con TP y SL erróneos en el registro del probador. Entonces, ¿qué es lo que está mal?Estimados profesionales, ¿podrían decirme esta pregunta?
Tengo una matriz de cadenas unidimensional previamente escrita en un archivo de texto
EURUSD 1654.31
GBPUSD -1654.61
USDCAD 110.98
USDJPY 1180.17
Supongamos que el beneficio total de USDCAD ha cambiado y necesito reemplazar la 3ª línea con "USDCAD 115.64".
Leo estos datos como una matriz de cadenas unidimensional, pero no puedo reemplazar sólo este elemento en el archivo de texto (¿alguien puede escribir una función?)
¿O es mejor no molestarse y sobrescribir toda la matriz?
Sólo tengo datos que vienen de EAs de pie en diferentes pares - cada par tiene una cadena diferente - por supuesto, sería mejor cambiar sólo 1 elemento probablemente.