Errores, fallos, preguntas - página 949

 
Renat:
Tienes una actitud extraña hacia el terminal y los recursos.

El terminal de comercio no tiene que ahorrar recursos cuando su tarea principal es trabajar eficazmente con enormes cantidades de datos. Además, no puedes quejarte de que cuatro copias del triturador de números no tienen suficientes gigabytes de memoria en el VPS.

Este no es el problema, sino el diferente comportamiento en el servidor Win2003x64 (VPS) y Win7x64 Home.

http://file.karelia.ru/6v55j5/ el vídeo del enlace dice que al iniciar el terminal, éste consume mucha más memoria asignada que la que muestra el sistema operativo para este proceso.

 
olyakish:

Este no es el problema, sino el diferente comportamiento en el servidor Win2003x64 (VPS) y Win7x64 Home.

http://file.karelia.ru/6v55j5/ el vídeo del enlace dice que al iniciar el terminal consume mucha más memoria asignada que la que muestra el sistema operativo para este proceso.

Oh, cómo todo está corriendo.

Demasiado largo de explicar y no tiene nada que ver con el terminal. Olvídalo y no escatimes en el VPS.

 
Renat:

Oh, qué desastre es.

Demasiado largo de explicar y no tiene nada que ver con el terminal. Olvídalo y no escatimes en el VPS.

Tal vez no tanto.

Por ejemplo, puede ser que el terminal capte servicios de terceros que consuman más que el propio terminal. Y en mi portátil sólo están inicialmente en el arranque,

entonces por qué se consume la memoria de forma similar a la primera ejecución del terminal - el servicio sólo tiene que ejecutarse una vez. (aunque es discutible si el servicio puede ejecutar hilos para cada copia de la terminal)

OK, lo preguntaré de otra manera, si el servidor es 2008 en una VPN no tendrá este efecto si es muy largo de explicar.

 
olyakish:

Tal vez no tanto.

Por ejemplo, puede ser que el terminal capte servicios de terceros que consuman más que el propio terminal. En mi ordenador portátil sólo se encuentran inicialmente en el arranque,

entonces por qué el consumo de memoria es similar a la primera ejecución del terminal - el servicio sólo necesita ejecutarse una vez. (aunque es cuestionable si el servicio puede iniciar hilos para cada copia del terminal)

Ok voy a preguntar de otra manera, si el servidor es 2008 en pps no tendrá ese efecto si es muy largo de explicar.

Tengo en el VPS (Win XP) unos 200 MB consumidos por el terminal MT4.
 
¿Por qué no permitir (con una marca en la configuración) que el terminal utilice un intercambio de caché? El usuario podrá elegir entre la velocidad y la carga de la memoria.
 

...Parece una operación sencilla, pero no se pueden obtener los valores enteros correctos en pips. Aquí está el código del script:

void OnStart() {
//---
   double max_price = NormalizeDouble(ChartGetDouble(0, CHART_PRICE_MAX), _Digits);
   double min_price = NormalizeDouble(ChartGetDouble(0, CHART_PRICE_MIN), _Digits);
   
   double entry_price, stop_price, profit_price;
   entry_price = NormalizeDouble((max_price+min_price)/2, _Digits);
   stop_price = NormalizeDouble(entry_price-(entry_price-min_price)/2, _Digits);
   profit_price = NormalizeDouble(max_price-(max_price-entry_price)/2, _Digits);
   
   int stop_pips = int((entry_price - stop_price)/_Point);
   int profit_pips = int((profit_price - entry_price)/_Point);
   
   Print("Entry: ", entry_price, ", Stop: ", stop_price, ", Profit: ", profit_price,
         ", Stop pips: ", stop_pips, ", Profit pips: ", profit_pips);
//---   
}

Aquí están los resultados de la carrera:

2013.03.29 16:42:03 Experiment_Script (EURUSD,H4) Entrada: 1.29445, Stop: 1.28453, Beneficio: 1.30438, Stop pips: 991, Beneficio pips: 993
2013.03.29 16:41:57 Experiment_Script (GBPUSD,H4) Entrada: 1.50465, Stop: 1.49348, Beneficio: 1.51583, Stop pips: 1117, Beneficio pips: 1117

Debería ser 992 y 993 (para el EURUSD), 1117 y 1118 (para el GBPUSD). ¿Puede decirme cómo obtener un resultado correcto?

 
Rone:

...

Prueba a dividir por 2,0 en lugar de sólo por 2.

El resultado de una operación con números enteros es un número entero, y no afecta que el resultado se escriba en doble.

 
muallch: ¿Por qué no permitir (con una marca en la configuración) que el terminal utilice un intercambio de caché? Habrá un compromiso de velocidad/carga de memoria seleccionable por el usuario.
Es mejor dirigirse directamente al Servicio de Atención al Cliente con este tipo de preguntas. De lo contrario, se perderán.
 
fyords: Prueba a dividir por 2,0 en lugar de sólo por 2.

No, ese no es el problema. El divisible es un doble.

Lo más probable es que el problema esté causado por estas líneas:

   int stop_pips = int((entry_price - stop_price)/_Point);
   int profit_pips = int((profit_price - entry_price)/_Point);
Rone:
Pruebe a imprimir el valor "(precio_de_entrada - precio_de_parada)/punto" sin redondear.
 

Por favor, avisen si alguien se ha encontrado con algo así.

Hay un código:

//+------------------------------------------------------------------+
double date[];
//+------------------------------------------------------------------+
void OnInit()
{
   ArrayResize(date,3);
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   Print("ArraySize(date)=",ArraySize(date));
}
//+------------------------------------------------------------------+
Funciona en tiempo real en el terminal:
DH      0       12:39:43        test (EURGBP.m,M5)      ArraySize(date)=3
LN      0       12:39:43        test (EURGBP.m,M5)      ArraySize(date)=3
DG      0       12:39:43        test (EURGBP.m,M5)      ArraySize(date)=3
Pero en el probador el mismo código da un resultado diferente:
MN      0       12:34:21        test (EURGBP.m,M15)     2013.01.02 07:59:59   ArraySize(date)=0
OG      0       12:34:21        test (EURGBP.m,M15)     2013.01.02 07:59:59   ArraySize(date)=0
IM      0       12:34:21        test (EURGBP.m,M15)     2013.01.02 07:59:59   ArraySize(date)=0
Razón de la queja: