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
ArrayInitialize no funciona código se adjunta, si a descomentar el bucle, todo es normal.
Y cuando se declaran variables en la clase y el indicador en el nivel global con el mismo nombre - aparece la advertencia.
Durante el fin de semana, mientras no había ticks, depuré el indicador en cuentas demo, ejecutándolo en la última compilación de dos instancias del terminal MT5, pero de diferentes compañías: MetaQuotes y EGlobal. Los ajustes son los mismos en todas partes. Para estar seguro lo he comprobado fuera de línea, así que el factor de la garrapata está excluido.
El problema es que el código más sencillo del "subindicador" (por no hablar del indicador completo y más complejo) muestra un número diferente de resultados en los distintos terminales de las distintas empresas:
1. EGlobal. 2. MetaQuotes.
He descargado completamente ambos terminales (comprobado con el Administrador de Tareas por procesos de memoria), los he vuelto a cargar y he recompilado ambos códigos por si acaso. Al final, no hay cambios.
MathRound() funciona de forma diferente en 4 y 5, y debería ser igual.
El código de 4p:
Código de 5 segundos:
MathRound() funciona de forma diferente en 4 y 5, y debería ser igual.
Código de 4 segundos:
Código de 5 segundos:
El problema está aquí:
Este valor se redondea de forma diferente en 4 y 5.
No es ninguna sorpresa, así es como debe ser.
¿Por qué MT5 no guarda el historial de órdenes, etc., si se interrumpen las pruebas? En MT4 se guardó.
Tampoco hay posicionamiento en el historial de órdenes del gráfico de pruebas - era conveniente ver las órdenes en la zona de grandes detracciones haciendo clic en el gráfico.
Buenas noches.
¿Puedes explicarme, por favor, cómo funciona el método SLeep()?
Debería poner en pausa el Asesor Experto durante un determinado periodo de tiempo, ¿o me equivoco?
{for (int sleep=0;sleep<10000;sleep++)
if(BarsCalculated(Handle)>=o_bars_reoptimizate)
{ Print(BarsCalculated(Handle)); break; } Si no, Sleep(100);}
Para este código, espero el resultado - si el número de barras calculado para un determinado indicador es mayor que un determinado valor, el bucle se rompe; de lo contrario hay un retraso de 100ms en la ejecución del código. El retardo total posible es de 100*10000ms....Eso es tiempo suficiente para el cálculo del indicador. Entonces, ¿por qué el código sigue funcionando? (que sigue este ciclo) O en el probador, esta función no funciona como supongo. Gracias de antemano por la aclaración.
Buenas noches.
¿Puedes explicarme, por favor, cómo funciona el método SLeep()?
Debería poner en pausa el Asesor Experto durante un determinado periodo de tiempo, ¿o me equivoco?
{for (int sleep=0;sleep<10000;sleep++)
if (BarsCalculated(Handle)>=o_bars_reoptimizate)
{ Print(BarsCalculated(Handle)); break; } Si no, Sleep(100);}
Para este código, espero el resultado - si el número de barras calculado para un determinado indicador es mayor que un determinado valor, el bucle se rompe; de lo contrario hay un retraso de 100ms en la ejecución del código. El retardo total posible es de 100*10000ms....Eso es tiempo suficiente para el cálculo del indicador. Entonces, ¿por qué el código sigue funcionando? (que sigue este ciclo) O en el probador, esta función no funciona como supongo. Gracias de antemano por la aclaración.
La documentación, por ejemplo, de CopyBuffer, hace que el cerebro se estruje: "Si quiere hacer una copia parcial de los valores del indicador en otro array (no en el buffer del indicador), debe utilizar para ello el array intermedio, en el que se copian los valores necesarios. Y ya desde este array intermedio realizar la copia elemento a elemento del número de valores necesarios a los lugares adecuados del array receptor. "
Si se hace referencia explícita abuffer_num, la necesidad de vincular previamente la matriz receptora al buffer indicador con uno u otro número de secuencia a través de SetIndexBuffer está ciertamente implícita. Pero,"si queremos copiar algunos valores del indicador a otro array (no albuffer delindicador)", no podemos hablar debuffer_num, ya que no es indicador y, por definición, no lo hemos conectado con nada.
¿Una contradicción?
¿Ambigüedad?
¿O tal vez estoy completamente programado?
He tratado de encontrar una definición clara de un búfer indicador y no lo he conseguido. ¿Es realmente cualquier buffer enlazado a través de SetIndexBuffer o no es suficiente y debería ser un array con el identificador INDICATOR_DATA?