Errores, fallos, preguntas - página 1116

 

Sigo viendo esto al ejecutar la prueba:

2014.03.28 17:12:28 Núcleo 1 conectándose a 127.0.0.1:3000
2014.03.28 17:12:38 Núcleo 1 error de autorización del agente probador
2014.03.28 17:12:38 Núcleo 1 conexión cerrada

La oportunidad de probar se ofrece más bien como una excepción. Los agentes remotos están desactivados, no hay antivirus.
¿Cómo se trata esto?

 
cDan:

Sigo viendo esto al ejecutar la prueba:

2014.03.28 17:12:28 Núcleo 1 conectándose a 127.0.0.1:3000
2014.03.28 17:12:38 Núcleo 1 error de autorización del agente probador
2014.03.28 17:12:38 Núcleo 1 conexión cerrada

La oportunidad de probar se ofrece más bien como una excepción. Los agentes remotos están desactivados, no hay antivirus.
¿Cómo se trata esto?

¿No hay antivirus?
 
Sin antivirus
 

Se ha pasado, pero tal vez una respuesta más rápida aquí:

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

Preguntas de los principiantes

C-4, 2014.03.28 13:23

¿Puede alguien explicarme por qué el código anterior no funciona en el probador mientras que en tiempo real funciona!!!? En concreto, me interesa saber por qué la propiedad HistoryOrderGetInteger no está disponible en el probador después de HistorySelect(0, TimeCurrent())...

#include <Trade\Trade.mqh>

CTrade trade;

int OnInit()
{
   trade.LogLevel(LOG_LEVEL_NO);
   return INIT_SUCCEEDED;
}
void OnTick()
{
   if(!DetectNewBar())return;
   trade.Sell(0.1);
   HistorySelect(0, TimeCurrent());
   for(; dealsCount < HistoryDealsTotal(); dealsCount++)
   {
      ulong ticket = HistoryDealGetTicket(dealsCount);
      RecalcDeal(ticket);
   }
}

bool DetectNewBar(void)
{
   MqlRates bars[1];
   CopyRates(Symbol(), PERIOD_M1, 0, 1, bars);
   if(bars[0].time != timeLastBar)
   {
      timeLastBar = bars[0].time;
      //printf(expertName + " new bar detected: " + TimeToString(bars[0].time));
      return true;
   }
   return false;
}

void RecalcDeal(ulong ticketDeal)
{
   //History is selected in OnTick()!
   ulong ticketOrder = HistoryDealGetInteger(ticketDeal, DEAL_ORDER);
   //if(!HistoryOrderSelect(ticketOrder))
   //   printf("order not select.");
   ENUM_ORDER_TYPE type = (ENUM_ORDER_TYPE)HistoryOrderGetInteger(ticketOrder, ORDER_TYPE);
   datetime time = HistoryOrderGetInteger(ticketOrder, ORDER_TIME_SETUP); 
   ulong time_msc = HistoryOrderGetInteger(ticketOrder, ORDER_TIME_SETUP_MSC); 
   printf("Order: " + (string)ticketOrder + " Type: " + EnumToString(type) + " Time: " + (string)time +
          " Time msc: " + (string)time_msc + " Total Orders: " + HistoryOrdersTotal());
}

int dealsCount;

datetime timeLastBar;

Captura de pantalla en el probador de estrategias:

Captura de pantalla en tiempo real en la demo:

p.d. Lo que es interesante, la primera orden en el probador se maneja correctamente pero las otras no. Además, si comentamos HistroryOrderSelect(ticketOrder), obtenemos un mensaje en el Probador de Estrategias de que la orden no ha sido seleccionada y en el Probador de Estrategias, todo empieza a funcionar, excepto la primera orden.


 

Captura de pantalla explicativa de la solicitud #986216

 

¿Funciona correctamente la función StringSplit incorporada?

void OnStart()
{
        string str = "|A|B|";
        string result[];
        int n = StringSplit( str, '|', result );
        Print( "количество полученных подстрок=", n );
        for ( int i = 0; i < n; i++ )
                Print( "подстрока(", i, ")=", result[ i ] );
}

produce el siguiente resultado:

Resulta que el carácter '|' en el caso de "|A" separa la cadena vacía y A, y en el caso de "B|" no separa B y la cadena vacía. Pero si es un separador, debe separar algo, de lo contrario no hay diferencia entre "|A|B|" y"|A|B" y al mismo tiempo hay diferencia entre "|A|B|" y "A|B|" . Y si las líneas en blanco están permitidas en un caso, también deberían estarlo en el otro.

 

Divide correctamente, pero no hasta el final. También se debe emitir una ficha en blanco al final.

Ponlo en servicedesk.

 

Hay algo que no funciona en mi clasificación, el contador de descargas de códigos parece estar caído.

Uy, eso no es un error... ¿Ha añadido códigos de MQL4 a su valoración?

 

Sí, estamos trabajando en la transferencia de la base de código de MQL4 al nuevo motor del sitio web MQL5.

Estamos trabajando en la unificación de las plataformas.

 
A100:

¿Funciona correctamente la función StringSplit incorporada?

produce el siguiente resultado:

Resulta que el carácter '|' en el caso de "|A" separa la cadena vacía y A, y en el caso de "B|" no separa B y la cadena vacía. Pero si es un separador, debe separar algo, de lo contrario no hay diferencia entre "|A|B|" y"|A|B" y al mismo tiempo hay diferencia entre "|A|B|" y "A|B|". Y si las líneas en blanco están permitidas en un caso, también deberían estarlo en el otro.

Gracias por el mensaje, corregido en los terminales 4 y 5.