Errores, fallos, preguntas - página 2124

 
Relevante

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Bichos, errores, preguntas

fxsaber, 2018.02.07 15:48

Para resumir la cuestión. ¿Para qué sirven CAccountInfo, COrderInfo, CSymbolInfo, CPositionInfo y CTerminalInfo?

He mirado su código fuente. ¿Para qué sirve utilizarlos?


CDealInfo y CHistoryOrderInfo - también se escriben con errores lógicos. ¿Cuál es el objetivo de su uso?


Bueno, tenemos CTrade. Todo está claro con él; puede ser útil donde y así sucesivamente. ¿Pero qué pasa con las infoclases?

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Errores, fallos, preguntas

fxsaber, 2018.02.07 15:53

Casi todos los métodos de las Info-clases deben ser estáticos. ¿Cuál es la razón por la que no lo es?
 
¡Es un truco genial!
2018.02.08 10:59:53.209 Network '8491779': no connection to MetaQuotes-Demo
2018.02.08 10:59:53.329 Network '8491779': authorization on MetaQuotes-Demo failed (Invalid account)
2018.02.08 10:59:53.904 Network current demo account '8491779' was deleted on trade server, new demo will be allocated
2018.02.08 10:59:53.904 Network demo account '8782677' was allocated on MetaQuotes-Demo


Sólo que yo tenía una cuenta en Netting y creé Hedge. ¿Podrías volver a crear la cuenta con la misma configuración?

 
Los comentarios que no son relevantes para este tema han sido trasladados a "Off-topic".
 
fxsaber:
¡Es un truco genial!


Sólo que yo tenía una cuenta en Netting y creé Hedge. ¿Podrías volver a crear la cuenta con la misma configuración?

No verán su mensaje aquí - tiene que escribir a Service Desk. No sé si se puede restaurar

 
Rashid Umarov:

Su mensaje no será visto aquí - tiene que escribir al Service Desk. No sé si se puede restaurar

Tengo un número obsceno de solicitudes en el SR. Creé otro, pero no es crítico.

 

El error 4109 no desaparece con el tiempo

Código de prueba experto

//Test1.mq5
void OnInit() { if ( f() != ERR_SUCCESS ) EventSetTimer( 10 ); }
void OnTimer()
{
        int   last_error = f();
        if (  last_error == ERR_SUCCESS ) EventKillTimer();
static int count = 1;
        Print( "Повтор (", count++, ")… результат: ", last_error );
}
int f( long value=-1 ) { return ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0,value) ? ERR_SUCCESS : GetLastError(); }

Al lanzar el terminal, en algunos casos se obtiene el siguiente resultado (*): el error 4109 no desaparece en absoluto

2018.02.09 00:25:24.200 Prueba1 (ETHUSD,W1) Repetir (1)... resultado: 0
2018.02.09 00:25:24.204 Test1 (EURUSD,D1) Repetir (1)... resultado: 0
2018.02.09 00:25:24.204 Test1 (BTCUSD,M15) Repetir (1)... resultado: 4109
2018.02.09 00:25:24.204 Test1 (BTCUSD,H1) Repetir (1)... resultado: 4109
2018.02.09 00:25:24.205 Test1 (ZECUSD,D1) Repetir (1)... resultado: 0
2018.02.09 00:25:24.205 Test1 (BTCUSD,M15) Repetir (1)... resultado: 0
2018.02.09 00:25:24.343 Test1 (BTCUSD,D1) Repetir (1)... resultado: 4109
2018.02.09 00:25:24.439 Test1 (BTCUSD,W1) Repetir (1)... resultado: 4109
2018.02.09 00:25:34.195 Test1 (BTCUSD,H1) Repetir (2)... resultado: 4109
2018.02.09 00:25:34.195 Test1 (BTCUSD,M15) Repetir (2)... resultado: 4109
2018.02.09 00:25:34.348 Test1 (BTCUSD,D1) Repetir (2)... resultado: 4109
2018.02.09 00:25:34.444 Test1 (BTCUSD,W1) Repetir (2)... resultado: 4109
2018.02.09 00:25:44.203 Test1 (BTCUSD,M15) Repetir (3)... resultado: 4109
2018.02.09 00:25:44.204 Test1 (BTCUSD,H1) Repetir (3)... resultado: 4109
2018.02.09 00:25:44.367 Test1 (BTCUSD,D1) Repetir (3)... resultado: 4109
2018.02.09 00:25:44.452 Test1 (BTCUSD,W1) Repetir (3)... resultado: 4109
2018.02.09 00:25:54.214 Test1 (BTCUSD,M15) Repetir (4)... resultado: 4109
2018.02.09 00:25:54.214 Test1 (BTCUSD,H1) Repetir (4)... resultado: 4109
2018.02.09 00:25:54.381 Test1 (BTCUSD,D1) Repetir (4)... resultado: 4109
2018.02.09 00:25:54.467 Test1 (BTCUSD,W1) Repetir (4)... resultado: 4109
2018.02.09 00:26:04.221 Test1 (BTCUSD,M15) Repetir (5)... resultado: 4109
2018.02.09 00:26:04.221 Test1 (BTCUSD,H1) Repetir (5)... resultado: 4109
2018.02.09 00:26:04.395 Test1 (BTCUSD,D1) Repetir (5)... resultado: 4109
2018.02.09 00:26:04.459 Test1 (BTCUSD,W1) Repetir (5)... resultado: 4109
2018.02.09 00:26:14.247 Test1 (BTCUSD,M15) Repetir (6)... resultado: 4109
2018.02.09 00:26:14.247 Test1 (BTCUSD,H1) Repetir (6)... resultado: 4109
2018.02.09 00:26:14.402 Test1 (BTCUSD,D1) Repetir (6)... resultado: 4109
2018.02.09 00:26:14.464 Test1 (BTCUSD,W1) Repetir (6)... resultado: 4109
2018.02.09 00:26:24.265 Test1 (BTCUSD,M15) Repetir (7)... resultado: 4109
2018.02.09 00:26:24.267 Test1 (BTCUSD,H1) Repetir (7)... resultado: 4109
2018.02.09 00:26:24.399 Test1 (BTCUSD,D1) Repetir (7)... resultado: 4109
2018.02.09 00:26:24.468 Test1 (BTCUSD,W1) Repite (7)... resultado: 4109 etc. hasta el infinito

Pero en muchos casos, el resultado es bastante bueno (**): el error ha desaparecido en la 2ª iteración

2018.02.09 00:29:45.470 Test1 (BTCUSD,D1) Repetir (1)... resultado: 0
2018.02.09 00:30:14.215 Test1 (BTCUSD,M15) Repetir (1)... resultado: 4109
2018.02.09 00:30:14.215 Test1 (BTCUSD,D1) Repetir (1)... resultado: 0
2018.02.09 00:30:24.209 Test1 (BTCUSD,M15) Repetir (2)... resultado: 0

Pero sólo desapareció en un simple ejemplo de prueba, el error en un Asesor Experto real no cambiará nada aunque se haga un retraso con EventSetTimer( 100 ). El error puede desaparecer si se selecciona la pestaña correspondiente del gráfico problemático y se hace clic en ella (¿por qué tiene efecto?), por ejemplo, si se selecciona BTCUSD,W1 y se hace clic en ella, el resultado será satisfactorio en la siguiente iteración:

Prueba1 (BTCUSD,W1) Repite (8)... resultado: 0

El perfil de prueba tenía este aspecto:


Máximo de barras en la ventana 100000.

Para obtener un resultado (*), suele bastar con añadir un par de gráficos nuevos con Asesor Experto adjunto a un perfil y reiniciar el terminal

Запуск платформы - Для продвинутых пользователей - MetaTrader 5
Запуск платформы - Для продвинутых пользователей - MetaTrader 5
  • www.metatrader5.com
По завершении установки в меню "Пуск" создается группа программ торговой платформы, а на рабочем столе дополнительно помещается ярлык программы. Используйте их для запуска. Нельзя запускать одновременно две копии платформы из одной директории. Чтобы одновременно запустить несколько копий, установите соответствующее количество программ в разные...
 

Hola a todos.

¿Alguien se ha preguntado : cómo obtener una lista de variables externas dentro del EA? para no enumerarlas repetidamente en el array? es decir, cuando se instala en un gráfico, el EA se lee a sí mismo y mira sus configuraciones externas.

¿sólo a través de una plantilla?

 

Construir 1755 MT5

Cuando se utiliza la fuente ROBOTO y el tamaño 9 - la mitad del texto no se dibuja.


en la talla 8, no hay ningún problema.


Arial es menos, pero el tipo de letra es horrible.

 

Transacciones duplicadas al utilizar una UPU de terceros

Problema de la sesión. Cuando el anterior no se cerró y se abre uno nuevo. el antiguo terminal funciona y el nuevo funciona. se obtiene un duplicado. :-)

@fxsaber en algún lugar que escribió acerca de cómo realizar un seguimiento de este. no puede encontrar

 
Vladislav Andruschenko:

Hola a todos.

¿Alguien se ha preguntado : cómo obtener una lista de variables externas dentro del EA? para no enumerarlas repetidamente en el array? es decir, cuando se instala en un gráfico, el EA se lee a sí mismo y mira sus configuraciones externas.

¿Sólo a través de una plantilla?

Sí, utilizando la plantilla.

#include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003

input string Input1 = "Hello World!";
input int Input2 = 123;

string GetExpertData( const ulong Chart = 0 ) 
{ 
  string Str = NULL; 

  MqlParam Parameters[]; 
  string Names[]; 

  if (EXPERT::Parameters(Chart, Parameters, Names)) 
  { 
    Str += "\n" + ChartSymbol(Chart) + " " + EnumToString(ChartPeriod(Chart)) + " " + Parameters[0].string_value + "\n"; 

    const int Amount = ArraySize(Names); 

    for (int i = 0; i < Amount; i++) 
      Str += (string)i + ": "+ Names[i] + " = " + Parameters[i + 1].string_value + "\n"; 
  } 

  return(Str); 
}

void OnInit()
{
  Print(GetExpertData());
}


El resultado es

0: Input1 = Hello World!
1: Input2 = 123


o como sigue

#include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003

input string Input1 = "Hello World!";
input int Input2 = 123;

void OnInit()
{
  MqlParam Parameters[];
  string Names[];   
  
  if (EXPERT::Parameters(0, Parameters, Names))
    ArrayPrint(Parameters);
}


Resultado

    [type] [integer_value] [double_value]      [string_value]
[0]    ...               0        0.00000 "Experts\Test2.ex5"
[1]    ...               0        0.00000 "Hello World!"     
[2]    ...             123      123.00000 "123"