[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 244

 
Buenas tardes a todos. Tengo esta pregunta: Quiero hacer que el EA solicite datos de otros pares de divisas y marcos temporales. Para ello, tengo que mantener varias decenas de gráficos abiertos (aunque el EA está instalado en un solo gráfico). Todo esto "come" mucha memoria y ralentiza el VPS (aunque los ajustes reduzcan el número de barras en el historial/ventana). ¿Hay alguna forma de evitar que se abran muchos gráficos, pero que las series temporales necesarias sigan existiendo? Gracias de antemano por su respuesta.
 
AndEv:
Buenos días a todos. Tengo una pregunta: quiero hacer que mi EA solicite datos de otras divisas y plazos. Para ello, tengo que mantener abiertos docenas de gráficos (aunque mi Asesor Experto sólo está en un gráfico). Todo esto "come" mucha memoria y ralentiza el VPS (aunque los ajustes reduzcan el número de barras en el historial/ventana). ¿Hay alguna forma de evitar que se abran muchos gráficos, pero que las series temporales necesarias sigan existiendo? Gracias de antemano por su respuesta.

¿Qué necesita exactamente de otras monedas? Por ejemplo, puede especificar cualquier divisa y plazo en los indicadores y obtener los datos de esa manera.

double iMA(NULL, 0, ...) // по символу и таймфрейму текущего графика
double iMA("AUDUSD", PERIOD_W1, ...) // по AUDUSD и по недельному таймфрейму

Y no es necesario mantener el gráfico AUDUSD, W1 abierto.

 
paladin80:

¿Qué necesita exactamente de otras monedas? Por ejemplo, puede especificar cualquier divisa y plazo en los indicadores y obtener los datos de esa manera.

Y no es necesario mantener el gráfico AUDUSD, W1 abierto.

Cualquier indicador realiza sus cálculos basándose en la serie temporal (en su ejemplo "AUDUSD", PERIOD_W1), y la serie temporal no existe sin un gráfico. La cuestión es si hay alguna forma de evitarlo. En MT4 no se podían hacer muchas cosas, pero gente competente (Zhunko, por ejemplo) ha hecho posible muchas cosas. He intentado obtener los datos como dices, pero no ha funcionado, aunque el par estaba presente en la ventana de Market Watch. Tras abrir el gráfico correspondiente, pude obtener los datos necesarios de inmediato.
 
AndEv:
Cualquier indicador realiza sus cálculos basándose en una serie temporal (en su ejemplo "AUDUSD", PERIOD_W1), y una serie temporal no existe sin un gráfico. La cuestión es si hay alguna forma de evitarlo. En MT4 no se podían hacer muchas cosas, pero gente competente (Zhunko, por ejemplo) ha hecho posible muchas cosas. He intentado obtener los datos como dices, pero no ha funcionado, aunque el par estaba presente en la ventana de Market Watch. Tras abrir el gráfico correspondiente, fue posible obtener inmediatamente los datos necesarios.

Una serie temporal existe sin un gráfico, si el instrumento está por supuesto abierto y hay una referencia constante a este marco temporal. En este caso no es necesario un gráfico
 
AndEv:
Cualquier indicador realiza sus cálculos basándose en la serie temporal (en su ejemplo "AUDUSD", PERIOD_W1), pero la serie temporal no existe sin un gráfico. La cuestión es si hay alguna forma de evitarlo. En MT4 no se podían hacer muchas cosas, pero gente competente (Zhunko, por ejemplo) ha hecho posible muchas cosas. He intentado obtener los datos como dices, pero no ha funcionado, aunque el par estaba presente en la ventana de Market Watch. Tras abrir el gráfico correspondiente, conseguí obtener los datos necesarios de inmediato.
Hice un código como este:

double MA_AUDUSD_M5, MA_AUDUSD_W1, MA_EURCAD_H1;
//+------------------------------------------------------------------+
int start()
  {
//----
MA_AUDUSD_M5=iMA("AUDUSD",PERIOD_M5,20,0,MODE_SMA,PRICE_CLOSE,0);
MA_AUDUSD_W1=iMA("AUDUSD",PERIOD_W1,20,0,MODE_SMA,PRICE_CLOSE,0);
MA_EURCAD_H1=iMA("EURCAD",PERIOD_H1,20,0,MODE_SMA,PRICE_CLOSE,0);

Comment ("MA_AUDUSD_M5 = ",DoubleToStr(MA_AUDUSD_M5,Digits),"\n",
         "MA_AUDUSD_W1 = ",DoubleToStr(MA_AUDUSD_W1,Digits),"\n",
         "MA_EURCAD_H1 = ",DoubleToStr(MA_EURCAD_H1,Digits));
//----
   return(0);
  }
//+------------------------------------------------------------------+
int init()
  {
   return(0);
  }
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+

Al probar con la visualización en el EURUSD, el Diario resulta así:


Realmente había algo que no funcionaba en el EURCAD. Recordé que no trabajo con este instrumento y tal vez no hay historial para él, descargué (F2, etc.), reinicié la terminal y esto es lo que obtuve:


Hay datos sobre el EURCAD. Tal vez, debería decirle a VPS la historia para el instrumento requerido.

 
AndEv:
Cualquier indicador realiza sus cálculos basándose en una serie temporal (en su ejemplo "AUDUSD", PERIOD_W1), y una serie temporal no existe sin un gráfico. La cuestión es si hay alguna forma de evitarlo. En MT4 no se podían hacer muchas cosas, pero gente competente (Zhunko, por ejemplo) ha hecho posible muchas cosas. He intentado obtener los datos como dices, pero no ha funcionado, aunque el par estaba presente en la ventana de Market Watch. Tras abrir el gráfico correspondiente, fue posible obtener inmediatamente los datos necesarios.

Solicitar preventivamente los datos para el instrumento requerido, también se construye sin un gráfico, pero lleva tiempo.
 
FAQ:

Solicite preventivamente los datos para el instrumento deseado, se construye sin un gráfico, pero lleva tiempo.
Esa es la cuestión, es posible obtener los datos cuando los pidas de nuevo. Pero, ¿cómo conseguirlo a la primera?
 
hoz:

Y aquí está el propio pavo.

https://www.mql5.com/ru/code

No me interesa el indicador en sí como señal de trading. Pero me fijé en el interesante nombre y decidí ver sus "tripas". Así que me tropecé con...

Decidí llevarlo al aspecto "habitual" (que me perdone el autor). Lo que tengo (en el archivo).
Archivos adjuntos:
ssl.mq4  4 kb
 
AndEv:
Esa es la cuestión, es posible obtener los datos cuando los pidas de nuevo. Pero, ¿cómo hacer que funcione la primera vez?

¿Has probado a gestionar los errores?
 
paladin80:

Tal vez el VPS debería contar las historias sobre las herramientas a utilizar.

Descargar el historial no servirá de nada, ya que la consulta necesita datos frescos todo el tiempo. Yo también hice un script de este tipo, y luego trasladé el código a los búhos, para que el lanzamiento se haga desde el tick entrante. En dynamics sinabrir el gráfico tengo que consultar dos veces, solo en este caso puedo obtener datos frescos. No sé cómo hacerlo sin que se repita la consulta.