[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
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
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.
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.
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?
Imprime en este enlace.
https://www.mql5.com/go?link=http://clip2net.com/s/4MRjJe
¿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:
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>
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
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().
¿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.