Erreurs, bugs, questions - page 1116

 
cDan:

Je continue à voir ceci lorsque je lance le test:

2014.03.28 17:12:28 Core 1 connexion à 127.0.0.1:3000
2014.03.28 17:12:38 Core 1 erreur d'autorisation de l'agent de test
2014.03.28 17:12:38 Core 1 connexion fermée

La possibilité de tester est fournie plutôt à titre exceptionnel. Les agents distants sont désactivés, pas d'antivirus.
Comment cela est-il traité ?

Antivirus non ?
 
Pas d'antivirus
 

Un peu trop, mais peut-être une réponse plus rapide ici :

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Questions des débutants

C-4, 2014.03.28 13:23

Quelqu'un peut-il m'expliquer pourquoi le code ci-dessus ne fonctionne pas dans le testeur alors qu'en temps réel il fonctionne !!!? Je suis plus particulièrement intéressé par la raison pour laquelle la propriété HistoryOrderGetInteger n'est pas disponible dans le testeur après 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;

Capture d'écran dans le testeur de stratégie :

Capture d'écran en temps réel dans la démo :

p.s. Ce qui est intéressant, c'est que le premier ordre dans le testeur est traité correctement mais les autres ne le sont pas. De même, si nous commentons HistroryOrderSelect(ticketOrder), nous obtenons un message dans le testeur de stratégie indiquant que l'ordre n'a pas été sélectionné et dans le testeur de stratégie, tout commence à fonctionner, sauf le premier ordre.


 

Capture d'écran explicative pour la demande #986216

 

La fonction StringSplit intégrée fonctionne-t-elle correctement ?

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 ] );
}

donne le résultat suivant :

Il s'avère que le caractère '|' dans le cas de "|A" sépare la chaîne vide et A, et dans le cas de "B|" il ne sépare pas B et la chaîne vide. Mais si c'est un séparateur, il doit séparer quelque chose, sinon il n'y a pas de différence entre "|A|B|" et "|A|B" et en même temps il y a une différence entre "|A|B|" et "A|B|" . Et si les lignes vides sont autorisées dans un cas, elles devraient l'être aussi dans l'autre.

 

Se divise correctement, mais pas complètement. Un jeton vierge doit également être délivré à la fin.

Mettez-le dans le servicedesk.

 

Il y a un problème avec mon classement, le compteur de téléchargement du code semble être en panne.

Oups, ce n'est pas une erreur... Avez-vous ajouté des codes de MQL4 à votre classement ?

 

Oui, nous travaillons au transfert de la base de code MQL4 vers le nouveau moteur de site web MQL5.

Nous travaillons à l'unification des plateformes.

 
A100:

La fonction StringSplit intégrée fonctionne-t-elle correctement ?

donne le résultat suivant :

Il s'avère que le caractère '|' dans le cas de "|A" sépare la chaîne vide et A, et dans le cas de "B|" il ne sépare pas B et la chaîne vide. Mais si c'est un séparateur, il doit séparer quelque chose, sinon il n'y a pas de différence entre "|A|B|" et "|A|B" et en même temps il y a une différence entre "|A|B|" et "A|B|". Et si les lignes vides sont autorisées dans un cas, elles devraient l'être aussi dans l'autre.

Merci pour le message, corrigé dans les bornes 4 et 5.
 
Renat:

Oui, nous travaillons au transfert de la base de code MQL4 vers le nouveau moteur de site web MQL5.

Nous travaillons à l'unification des plateformes.

La note sera-t-elle facturée ? J'ai perdu une centaine de points(je ne me souviens plusdu chiffre exact, mais je pense que c'était quelque part dans la région). Et il n'y a pas eu de paiement pour le téléchargement de mes indicateurs.
Raison: