Dinámico (Número Mágico) - Aleatorización
Dinámico (Número Mágico) - Aleatorización

 

Publi

Página 1 de 355 123 ... ??ltimo??ltimo
Resultados 1 al 10 de 41

Tema: Dinámico (Número Mágico) - Aleatorización

  1. #1
    El código insertado # incluye lt; # 91; url = http:/.99k.org/common__functions_8mqh.html#93; common_functions.mqh # 91;url # 93; gt; int magia; int init () {magic = # 91; url = http:/.99k.org/common__functions_8mqh.html#a4005e449c291909f99303 54ed447d09d#93; makeMagicNumber # 91;url # 93; (WindowExpertName () Symbol () Period () ); } int start () {} Todos los problemas resueltos, uso de EA simplificado, confusión del usuario y preguntas evitadas.

  2.                         
    Publicidad
  3. #2
    Utilizo un EA semi-manual, trazo líneas en el gráfico, el precio llega a la línea y entra al comercio. Entonces, para mí, el número mágico sigue siendo importante, pero puedo manejarlo de esta manera ... Una vez que se realiza el pedido, el código coloca una etiqueta de texto en la tabla con el número majic. Se queda allí para siempre. Al reiniciar, abro las propiedades de los expertos y cambio yo mismo el MN. Casi nunca tengo que hacer esto, la mayoría de las veces tengo que hacerlo después de volver a compilar el código después de los mods.

  4. #3

    Cita Iniciado por ;
    Uso un simple algoritmo hash DJB2 para crear valores hash de 32 bits a partir de cadenas. Es usado por los compiladores de Java para construir sus tablas de símbolos (¡así que es mejor que tengan una buena!).
    DJB2 es una función hash muy simple, probablemente la más simple que se puede encontrar y que todavía funciona de alguna manera. No lo llamaría uno bueno. Es una simple. Si observas detenidamente, notarás que el espíritu de djb2 se puede encontrar en mi hash, de hecho, mi algoritmo fue completamente inspirado en djb2 y crc32. djb2 ??????cambiará 5 bits y agregará el hash original y la clave (h * 33 k es equivalente a h * 32 h k, que es equivalente a (hlt; lt; 5) h k, mientras que mi función hash en el el primer paso solo hace (hlt; lt; 5) k) pero luego lo repetirá en los siguientes dos pasos con diferentes cambios de bit no fijos). Si convierte la salida de djb2 a binario para imprimir los 32 bits como una secuencia de 1 y 0 a la pantalla para ver cómo están distribuidos, notará que cuando cambie un carácter de entrada en la cadena de entrada, la mayoría de las veces solo cambiará Un bit en el valor hash y no lleva mucho tiempo producir intencionalmente una colisión. Cuando haga lo mismo con mi función hash, notará que cada bit que se cambia en la cadena de entrada cambiará casi la mitad de todos los bits en el valor de hash y tendrá dificultades para intentar producir una colisión intencionalmente. Le recomiendo que realice este experimento para ver cómo se comporta su función hash en comparación con otras funciones hash. Ya que el tiempo de ejecución es solo marginalmente importante aquí y las 15 o más líneas de código tampoco hacen daño, realmente deberías considerar usar algo más fuerte que djb2. La función hash anterior es parte de mi biblioteca gratuita de funciones comunes que se puede encontrar en mi sitio web.

  5. #4
    Hola Bluemele
    Hilo interesante, de hecho ... Creo que incorporaré algunas de estas cosas en nuestro LB EA ... 7bit: interesante para hacer una cadena para crear un número mágico único. Uso un simple algoritmo hash DJB2 para crear valores hash de 32 bits a partir de cadenas. Es usado por los compiladores de Java para construir sus tablas de símbolos (¡así que es mejor que tengan una buena!). Es muy simple pero muy eficiente en cuerdas (relación de colisión muy baja). [Editar] aquí está el código mql para ello: Código insertado/ ---------------------------------- -------------------------------- int hash_string (string s)/ -------- -------------------------------------------------- -------- {//esta es la cadena djb2 hash algo int h = 5381, l = StringLen (s), i; para (i = 0; ilt; l; i ) h = h * 33 StringGetChar (s, i); retorno (h); } SQ.

  6. #5

    Cita Iniciado por ;
    ¿Sería tan amable de publicar el código o explicar cómo funciona? Gracias, --RR
    Aquí hay un enfoque más genérico, una función hash. Dale una cadena única y devolverá un número único: Código insertado** * crea un entero positivo para el uso como un número mágico. * * La función toma una cadena como argumento y calcula * un valor hash de 31 bits a partir de ella. El hash ciertamente no * tiene la fuerza de una función de hash criptográfica real *, pero debería ser más que suficiente para generar un * ID único a partir de una cadena y las colisiones no deberían ocurrir. * * utilícelo en su función init () de esta manera: * magic = makeMagicNumber (IndiorShortName () Symbol () Period ()); * * donde nombre sería el nombre de tu EA. Su EA entonces * obtendrá un número mágico único para cada instrumento y período de tiempo * y este número siempre será el mismo, siempre que ponga * el mismo EA en la misma tabla. * * Los números generados durante el modo de prueba diferirán de aquellos * números generados en un gráfico en vivo. *int makeMagicNumber (clave de cadena) {int i, k; int h = 0; if (IsTesting ()) {key = _ key; } para (i = 0; ilt; StringLen (clave); i ) {k = StringGetChar (clave, i); h = h k; h = bitRotate (h, 5);/rotar 5 bits} para (i = 0; ilt; StringLen (clave); i ) {k = StringGetChar (clave, i); h = h k;/gire dependiendo del valor del carácter h = bitRotate (h, k 0x0000000F); }/ahora vamos hacia atrás en nuestra cadena para (i = StringLen (key); igt; 0; i -) {k = StringGetChar (key, i - 1); h = h k;/girar dependiendo de los últimos 4 bits de h h = bitRotate (h, h 0x0000000F); } retorno (h 0x7fffffff); }** * Girar un valor entero de 32 bits en forma de bit * el número especificado de bits a la derecha. * Esta función es necesaria para los cálculos * en la función hash makeMacicNumber () *int bitRotate (int value, int count) {int i, tmp, mask; máscara = (0x00000001 lt; lt; cuenta) - 1; tmp = máscara de valor; valor = valor gt; gt; contar; valor = valor | (tmp lt; lt; (32 - cuenta)); retorno (valor); }

  7. #6
    Cita Iniciado por ;
    Creo que Kennyhubbard se merece el crédito no yo.
    Sí, gracias a Kenny y a todos en este hilo, ¡ha sido esclarecedor!

  8. #7

    Cita Iniciado por ;
    Hola Ronald, aquí está la esencia del código ...... obviamente, debe incorporarse correctamente en un EA ........ [code] int AutoMagic () {string Cur1 = StringSubstr (Symbol () , 0,3), Cur2 = StringSubstr (Symbol (), 3,3), magic1 = 0, magic2 = 0; int Period_ID = 0; if (Cur1 == EUR) magic1 = 1; if (Cur1 == GBP) magic1 = 2; if (Cur1 == USD) magic1 = 3; si (Cur1 == AUD) magic1 = 4; if (Cur1 == CHF) magic1 = 5; if (Cur1 == CAD) magic1 = 6; if (Cur1 == JPY) magic1 = 7; ...
    No estoy seguro de si entendí el código correctamente, pero este código sigue generando un nuevo Magic aleatorio todo el tiempo, debido a que: el Código insertado while (GlobalVariableCheck (AutoMagic)) {//si MagicNumber ya existe, el incremento volverá verdadero todo el tiempo ya que esto verificará en las salidas de Variables globales, no si el valor de GV sale y sigue aumentando el contador! Creo que deberías usar: Código insertado GlobalVariableGet (AutoMagic) para verificar si existe un valor de CV. No soy programador, así que solo vale 5 centavos ...

  9. #8

    Cita Iniciado por ;
    No solo debe ser único, sino que también debe ser fijo o repetible, ya que necesitará el mismo número más tarde si desea cerrar las operaciones. Y puede haber choques y reinicios entre abrir y cerrar. Nadie quiere un EA que no recoja automáticamente sus propios intercambios y continúe donde lo dejó después de un reinicio. Ese es el propósito de todo este número mágico y nada más: agrupar órdenes y siempre poder encontrar las propias órdenes del EA. De lo contrario, podría simplemente dejarlo completamente lejos.
    Sí, estoy totalmente de acuerdo! el número mágico debe ser genarado al azar para que ese mismo número prevalezca después de reiniciarse desde el bloqueo de la plataforma. ¡Ahora sería genial encontrar un pedazo de código que logre esto! Creo que la magia aleatoria buena necesita 3 cosas: 1) Generación de números aleatorios adecuada 2) verificar que el número no esté en uso (baja propensión, pero aún debe verificar) 3) El mismo número utilizado después de que EA se recuperó de la caída de la plataforma.

  10. #9
    Cita Iniciado por ;
    El número mágico elegido por Radom puede ser un gran beneficio para los operadores de EA, ya que estoy bastante seguro de que los corredores ven el número mágico y lo utilizan para derribar a expertos rentables. A pesar de que estoy muy lejos de ser un programador profesional, creo que la mejor manera es usar dll para elegir el número mágico del simple archivo .txt. De esta manera, se puede utilizar una gran cantidad de números y el corredor tendrá dificultades para reconocer el EA. Al menos cuando lo mismo se hace con TP, SL y otros parámetros.
    .. si observa que el broker se está metiendo con usted, ¡el cambio de EA a otro broker o ECN o STP intemediary! ¿Por qué perder el tiempo con las tiendas de cubo? ¡Nunca entendí por qué la gente abre cuentas con estas pequeñas tiendas domiciliadas en algunos banarebulic ...? Para mi experiencia, los intermediarios sólidos son, Alpari UK (¡Solicite información sobre Pro! 20k), OANDA (Broker), MB Trading (ECN), ATC (ECN), FXCM (NDD, caro!) ... Hablo desde experince as Perdí un depósito en una tienda de cubo frad ...

  11. #10
    El número mágico elegido por Radom puede ser un gran beneficio para los operadores de EA, ya que estoy bastante seguro de que los corredores ven el número mágico y lo utilizan para derribar a expertos rentables. A pesar de que estoy muy lejos de ser un programador profesional, creo que la mejor manera es usar dll para elegir el número mágico del simple archivo .txt. De esta manera, se puede utilizar una gran cantidad de números y el corredor tendrá dificultades para reconocer el EA. Al menos cuando lo mismo se hace con TP, SL y otros parámetros.

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Uso de cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso. Más información y política de cookies.
     

Aviso legal: Ni forosforex.com ni ninguna persona involucrada en forosforex.com aceptarán ninguna responsabilidad por cualquier pérdida o daño en el trading como resultado de la confianza en la información contenida en este sitio web, incluidos datos, cotizaciones, gráficos y señales de compra/venta. Por favor, infórmese plenamente de los riesgos y costes asociados a las operaciones en los mercados financieros, una de las formas de inversión que más riesgos entrañan.
forosforex.com le quiere recordar que los datos contenidos en este sitio web no son necesariamente en tiempo real ni exactos. forosforex.com no asume responsabilidad alguna por las pérdidas en que usted podría incurrir como resultado de la utilización de estos datos. Este acuerdo se rige por su versión en inglés, que prevalecerá siempre que haya alguna discrepancia entre la versión en inglés y la versión en español. Los CFD son un producto difícil de entender, varios organismos reguladores consideran que no es adecuado para inversores minoristas debido a su complejidad y riesgo.
Advertencia de riesgo: Los CFDs son un producto difícil de entender, y puede no ser adecuado para inversores minoristas debido a su complejidad y riesgo. Existe la posibilidad de sufrir una pérdida igual o superior a la inversión. Por lo tanto, no debe invertir o arriesgar dinero que no pueda permitirse perder. Debe asegurarse de que comprende todos los riesgos. Antes de abrir una cuenta en un broker por favor sea consciente e infórmese de los riesgos asociados con el trading. El contenido de este sitio web no debe interpretarse como asesoramiento personal. ForosForex recomienda que busque el consejo de un asesor financiero independiente.