Errores, fallos, preguntas - página 136

 
Renat:
El indicador creado desde el Asesor Experto no se descargará hasta que usted lo elimine explícitamente o hasta que el Asesor Experto haya terminado.

Gracias por tomarse el tiempo de responder.

Esto cambia mucho, significa que podemos prescindir de separar el código para el probador y el código para el real.

 
Renat:

Consejos sobre la mejor manera de ahorrar recursos si los indicadores se necesitan una vez por hora :

dejar una docena de indicadores estándar para colgar en cada tic o

Descárguelos después de cada uso mediante IndicatorRelease(indicator_handle), y vuelva a cargarlos después de una hora.

Pero la segunda variante aumenta el tiempo de las pruebas.

Responde también a la pregunta de ¿cuál es el retraso medio necesario para cargar una máscara?

 
Urain:

Asesoramiento sobre la mejor manera de ahorrar recursos si los indicadores se necesitan una vez por hora :

dejar una docena de indicadores estándar para colgar en cada garrapata o

Lo mejor es no descargarlos (los indicadores apenas se necesitan realmente "una vez por hora"), pero:

  1. aumentar el tamaño de la memoria con la transición a 64 bits, o
  2. reducir la profundidad de los cuadros históricos
El tiempo exacto de carga es imposible de decir - depende de varios factores. Es mejor no crear problemas al descargar los indicadores - esto puede causar problemas debido a los procesos asíncronos de creación y recálculo del indicador.
 
Urain:

Asesoramiento sobre la mejor manera de ahorrar recursos si los indicadores se necesitan una vez por hora :

dejar una docena de indicadores estándar para colgar en cada tic o

Descárguelos después de cada uso mediante IndicatorRelease(indicator_handle), y vuelva a cargarlos después de una hora.

Pero la segunda variante aumenta el tiempo de las pruebas.

Responde también a la pregunta de ¿cuál es el retraso medio necesario para cargar una máscara?

Si no utiliza el temporizador para otros fines, intente enviar datos al temporizador en el intervalo requerido.
 

Pregunta

No utilizo para nada los ajustes de compensación, pero por casualidad vi una descripción en alligator, y me puse a pensar... :)

Descripción de una de las configuraciones del caimán:

cambio_de_dientes

[en] Desplazamiento de la línea roja con respecto al gráfico de precios. Hay que recordar que el desplazamiento de la línea es puramente visual para la visualización, y los valores en el buffer del indicador se almacenan sin ningún desplazamiento. Cuando los valores del búfer se obtienen mediante la función CopyBuffer(), el valor del desplazamiento no tendrá ningún efecto.

Aunque no se menciona en la descripción de MA, pero creo que es un error y todo es similar

ma_shift

[in] Desplazamiento del indicador en relación con el gráfico de precios.

En la imagen en la que está el pajarito amarillo, el precio ha cruzado la MA sin un desplazamiento. Aquí está claro que, por ejemplo, el precio al cierre de la barra anterior es superior a la MA y el precio a la apertura de la barra actual es abierto.

Pero donde está el pájaro verde, ¿cómo podemos saber lo mismo? Es decir, cuando el precio cruza visualmente la MA con el desplazamiento

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов - Документация по MQL5
 
Hola, escribí un script para obtener un precio Ask para EURUSD
#include <Trade\SymbolInfo.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
  CSymbolInfo SymInfo;
  Alert(SymInfo.Ask());
  }
Devuelve 0 - Creo que tengo que enlazar
CSymbolInfo SymInfo;
al símbolo del gráfico, pero no sé cómo especificar el símbolo de la clase
 
kirill190982:
Hola, escribí un script - obtener el precio Ask para el EURUSD da 0 - creo que necesito enlazar
al símbolo del gráfico, pero no sé cómo especificar el símbolo de la clase
En primer lugar, descubramos de qué trata la clase. Para resolver el problema debe utilizar los métodos Name y RefreshRates de esta clase.
 
Interesting:
Lo primero que hay que hacer es familiarizarse con el contenido de la clase. Al enlazar con el símbolo, debe utilizar primero el método "Nombre" de la clase.
//+------------------------------------------------------------------+
//|                                                   SymbolInfo.mqh |
//|                      Copyright © 2010, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//|                                              Revision 2010.02.22 |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Class CSymbolInfo.                                               |
//| Appointment: Class for access to symbol info.                    |
//+------------------------------------------------------------------+
class CSymbolInfo
  {
protected:
   string                      m_name;               // symbol name
   MqlTick                     m_tick;               // structure of tick;
.....
//--- ask parameters
   double            Ask() const                      { return(m_tick.ask); 
Entiendo que Ask en la clase está determinada por la estructura MqlTick.
#include <Trade\SymbolInfo.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
  string Megasymbol=Symbol();
  CSymbolInfo SymInfo;
  SymInfo.Name(Megasymbol);
  Alert(SymInfo.Ask());
  }
aún así, no se obtienen resultados.
 
kirill190982:
Entiendo que Ask en la clase está definida por la estructura MqlTick; lo he probado de ambas formas y sigue obteniendo cero

Debe hacer lo siguiente

SymInfo.Name("EURUSD");
SymInfo.RefreshRates();
Print(SymInfo.Ask());
 
Interesting:

¿Qué tal si lo intentas de esta manera?

Gracias