¿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!
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 valor0.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 a0.86084el 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.
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.
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():
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.
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.