[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 235

 
¿Pueden indicar si es posible abrir una posición manualmente en el Probador de Estrategias de Metatrader4 en lugar de utilizar un Asesor Experto? Para no calcular los pips en una calculadora, sino pulsar el botón, aparecerá una ventana de apertura de orden, rellenar los datos y pulsar F12 y el propio probador calculará como al abrir por un EA. Probablemente, hay un programa ya hecho para este propósito, no lo he encontrado en mi búsqueda.
 
Buenos días a todos. Tengo una pregunta, varias preguntas para ser exactos, ayúdenme.
1: Si tengo un nivel, y si el precio es igual a este nivel entonces abrir una orden. La pregunta es si el precio puede saltarse este nivel, volar rápidamente y no ser igual al nivel que tengo o si tengo un GAP, se abrirá una orden donde debe estar, es decir, en el nivel?
2: Tengo errores en el registro, quiero saber qué significan. [B]1-Señal: señales de análisis fallidas,[/B] [B]2-Centro de Datos: conexión fallida [2] y [6][/B] 3-(no recuerdo exactamente pero dice completo deshabilitado al modificar la orden)? Por favor, aconsejen qué hacer en esos u otros casos, ¡muchas gracias de nuevo!
 
TarasBY:

Para entender lo que sucede, es necesario imprimir los cálculos en la impresora:

y analizar los resultados.

ME HE DADO CUENTA DE QUE DEBO HABER ENTENDIDO ALGO MAL.

Cómo me imaginé la ejecución de la condición en la cabecera del if

-el programa obtiene el valor de la variable Bid (0,86084)

-saca el valor de la variable Bid (0,86084) del valor de la variable massiv[S] (0,85375)

-Mapa la diferencia obtenida 0,00709 a la constante 0

-si la diferencia es > 0, no se da el control en el cuerpo de la sentencia if y no se abre la orden

-Si la diferencia <= 0, se entrega el control al cuerpo de la sentencia if y se abre la orden

Como imaginé la ejecución de la función ArrayBsearch( massiv, value,WHOLE_ARRAY, 0, MODE_ASCEND)

TIP: Devuelve el índice del primer elemento encontrado en la primera dimensión del array.

Si no hay ningún elemento con el valor especificado en la matriz, la función devolverá el índice del elemento más cercano por valor, entre los que se encuentra el valor buscado.

-la función obtiene el valor igual al valor del último precio del tick (Bid-0.86084)

-la función recorre los valores del array de menor a mayor -no encuentra la coincidencia completa entre ningún valor del array y el valor

- como no hay ningún valor 0.86084 en la matriz, la función devuelve el valor más pequeño más cercanode la matriz. es decir, 0.820864(primero),0.81074,0.85375,0.80084,0.81084,0.86088(último) es decir, 0.85375 es el valor más cercano a 0.86084 el valor más pequeño. Entre 0,85375 y 0,86088 es el valor que busca=0,86084

=====================================================================================================

Losparámetros de tu función imprimir además del valor del elemento massiv[S] son: massiv[S-1] y massiv[S+1]. Del valor de massiv[S]( 0.85375) primero restas 1, y luego sumas 1.

No he leído si en la cabecera (o en ArrayBsearch()) de arrayiv[S] se resta primero el valor 1 y luego se añade el 1.

Te agradecería que me explicaras este punto o me dieras un enlace.

Gracias.


 
solnce600:

Lafunción imprimir tiene otrosparámetros - massiv[S-1] y massiv[S+1]. Se quiere restar 1 al valor de massiv[S]( 0.85375) y añadir 1 después.

No he leído en ningún libro de texto de MQL que si la cabecera (o ArrayBsearch() ) reste primero 1 al valor de massiv[S] y luego le sume 1.

Te agradecería que me explicaras este punto o me dieras un enlace.

Gracias.

Aplicarás tu razonamiento después de haber realizado la impresión. ¿Has hecho la impresión (no necesitas cambiar nada en ella)? - Muéstrame lo que hay en él.
 

Imprime en este enlace.

http://clip2net.com/s/4MRjJe

 

Me he dado cuenta de que

- el valor de massiv[0](probablemente [S]) es el primer valor de la matriz para empezar

- el valor de massiv[1](probablemente [S+1] ) es el segundo valor de la matriz, es decir, sigue al valor con el que comienza la matriz

-Estos valores se repiten cada vez que se encuentra PRINT.

=============================================

- en el año 2000, el valor del precio tenía 4 dígitos más después del punto.

- en el probador de la carta - 5 dígitos

-en el probador en el resultado - 5 señales

-en el probador en el registro en la impresora - 4 caracteres

Y tengo 5 dígitos en la matriz.

PREGUNTA - ¿Cuál es el número de caracteres que lee el programa?

 

¿No ves nada ahí?

Veo que ArrayBsearch() devuelve 0 (como índice de elemento) en todas partes. En la celda 0 de tu matriz está el número 1,0408. Volvamos al código:

if( (NormalizeDouble (Bid-massiv[S],Digits) <=0))

Ahora sustituya los valores de las variables obtenidas en esta condición (en la oferta de carita está en el rango 0,8-0,9, tomemos el máximo de este rango - 0,9): si (0,9000 - 1,0408 <= 0) OrderSend(). La condición se cumple ¡¡¡Justo!!! Busque errores al completar su matriz. Es de suponer que no ha prestado atención a esta cláusula en la función ArrayBsearch():

Nota: La búsqueda binaria sólo maneja matrices ordenadas. La función ArraySort() se utiliza para ordenar una matriz numérica.

P.D. La impresión debe ser proporcionada preferentemente no como imagen, sino mediante la selección simultánea de varias líneas (usando SHIFT - si no sabes cómo hacerlo) de esta misma impresión (10-20 líneas es suficiente) en la ventana de la terminal, y luego copiar y pegar las líneas seleccionadas en tu post como código usando el botón SRC.

P.P.D. Acabo de darme cuenta del evidente error de sintaxis: esta línea debería colocarse fuera (antes) de la función start():

#include <MASSIV.mqh> 
 
solnce600:

Me he dado cuenta de que

-en el probador en el registro en la impresora- 4 caracteres

Lea la documentación https://docs.mql4.com/ru/common/print

void Print( ...)
Imprime algún mensaje en el registro de Expertos. Los parámetros pueden ser de cualquier tipo. El número de parámetros no puede superar los 64.

Las matrices no se pueden pasar a Print(). Las matrices deben imprimirse elemento por elemento.

Los datos del tipo doble se imprimen con 4 dígitos decimales después del punto. Para obtener más precisión, se debe utilizar la función DoubleToStr().
 
TarasBY:

¿No viste nada allí?

Veo que ArrayBsearch() devuelve 0 (como índice de elemento) en todas partes. En la celda 0 de tu matriz está el número 1,0408. Volvamos al código:

Ahora sustituyamos los valores de las variables obtenidas en esta condición (Bid está dentro de 0,8-0,9 en la viñeta, tomemos el máximo de este rango - 0,9): si (0,9000 - 1,0408 <= 0) OrderSend(). La condición se cumple ¡¡¡Justo!!! Busque errores al completar su matriz. Es de suponer que no ha prestado atención a esta cláusula en la función ArrayBsearch():

Nota: La búsqueda binaria sólo maneja matrices ordenadas. La función ArraySort() se utiliza para ordenar una matriz numérica.

No estoy muy seguro de lo que significa la búsqueda binaria. ¿Es una búsqueda en una matriz bidimensional? Pero tengo uno unidimensional.
 
cómo ajustar el período de Fibonacci en mt 4 200 144 89 55 34