Errori, bug, domande - pagina 1116

 

Continuo a vedere questo quando eseguo il test:

2014.03.28 17:12:28 Core 1 connessione a 127.0.0.1:3000
2014.03.28 17:12:38 Core 1 errore di autorizzazione dell'agente tester
2014.03.28 17:12:38 Core 1 connessione chiusa

L'opportunità di testare è fornita più come un'eccezione. Gli agenti remoti sono disabilitati, nessun antivirus.
Come viene trattato?

 
cDan:

Continuo a vedere questo quando eseguo il test:

2014.03.28 17:12:28 Core 1 connessione a 127.0.0.1:3000
2014.03.28 17:12:38 Core 1 errore di autorizzazione dell'agente tester
2014.03.28 17:12:38 Core 1 connessione chiusa

L'opportunità di testare è fornita più come un'eccezione. Gli agenti remoti sono disabilitati, nessun antivirus.
Come viene trattato?

Antivirus no?
 
Nessun antivirus
 

Sovrascritta, ma forse una risposta più rapida qui:

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Domande dai principianti

C-4, 2014.03.28 13:23

Qualcuno può spiegarmi perché il codice di cui sopra non funziona in tester mentre in tempo reale funziona!!!? In particolare mi interessa sapere perché la proprietà HistoryOrderGetInteger non è disponibile nel tester dopo 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;

Screenshot nel tester di strategia:

Schermata in tempo reale nella demo:

p.s. La cosa interessante è che il primo ordine nel tester è gestito correttamente ma gli altri no. Inoltre, se commentiamo HistroryOrderSelect(ticketOrder), otteniamo un messaggio nello Strategy Tester che l'ordine non è stato selezionato e nello Strategy Tester, tutto inizia a funzionare, tranne il primo ordine.


 

Schermata esplicativa per l'applicazione #986216

 

La funzione integrata StringSplit funziona correttamente?

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 il seguente risultato:

Si scopre che il carattere '|' nel caso di "|A" separa la stringa vuota e A, e nel caso di "B|" non separa B e la stringa vuota. Ma se è un separatore, deve separare qualcosa, altrimenti non c'è differenza tra "|A|B|" e "|A|B" e allo stesso tempo c'è una differenza tra "|A|B|" e "A|B|" . E se le righe vuote sono permesse in un caso, dovrebbero essere permesse anche nell'altro caso.

 

Divide correttamente, ma non fino in fondo. Alla fine dovrebbe essere emesso anche un gettone vuoto.

Mettetelo in servicedesk.

 

C'è qualcosa che non va con la mia valutazione, il contatore di download del codice sembra essere giù.

Ops, non è un errore... Avete aggiunto i codici di MQL4 alla vostra valutazione?

 

Sì, stiamo lavorando al trasferimento della base di codice MQL4 al nuovo motore del sito MQL5.

Stiamo lavorando all'unificazione delle piattaforme.

 
A100:

La funzione integrata StringSplit funziona correttamente?

produce il seguente risultato:

Si scopre che il carattere '|' nel caso di "|A" separa la stringa vuota e A, e nel caso di "B|" non separa B e la stringa vuota. Ma se è un separatore, deve separare qualcosa, altrimenti non c'è differenza tra "|A|B|" e "|A|B" e allo stesso tempo c'è una differenza tra "|A|B|" e "A|B|". E se le linee bianche sono permesse in un caso, dovrebbero essere permesse anche nell'altro caso.

Grazie per il messaggio, corretto nei terminali 4 e 5.