Fehler, Irrtümer, Fragen - Seite 1116

 

Bei der Durchführung des Tests wird dies immer wieder angezeigt:

2014.03.28 17:12:28 Kern 1 verbindet sich mit 127.0.0.1:3000
2014.03.28 17:12:38 Kern 1 Tester Agent Autorisierungsfehler
2014.03.28 17:12:38 Kern 1 Verbindung geschlossen

Die Möglichkeit zur Prüfung wird eher ausnahmsweise geboten. Remote-Agenten sind deaktiviert, kein Antivirus.
Wie wird dies behandelt?

 
cDan:

Bei der Durchführung des Tests wird dies immer wieder angezeigt:

2014.03.28 17:12:28 Kern 1 verbindet sich mit 127.0.0.1:3000
2014.03.28 17:12:38 Kern 1 Tester Agent Autorisierungsfehler
2014.03.28 17:12:38 Kern 1 Verbindung geschlossen

Die Möglichkeit zur Prüfung wird eher ausnahmsweise geboten. Remote-Agenten sind deaktiviert, kein Antivirus.
Wie wird dies behandelt?

Antivirus nicht?
 
Kein Antivirus
 

Übertrieben, aber vielleicht eine schnellere Antwort hier:

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Fragen von Anfängern

C-4, 2014.03.28 13:23

Kann mir bitte jemand erklären, warum der obige Code im Testprogramm nicht funktioniert, während er in Echtzeit funktioniert!!!? Insbesondere interessiert, warum die Eigenschaft HistoryOrderGetInteger im Tester nach HistorySelect(0, TimeCurrent()) nicht verfügbar ist...

#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 im Strategietester:

Echtzeit-Screenshot in der Demo:

p.s. Interessant ist, dass die erste Bestellung im Testgerät korrekt verarbeitet wird, die anderen jedoch nicht. Wenn wir HistroryOrderSelect(ticketOrder) kommentieren, erhalten wir im Strategy Tester eine Meldung, dass die Bestellung nicht ausgewählt wurde, und im Strategy Tester funktioniert alles, außer der ersten Bestellung.


 

Erläuternder Screenshot für Antrag Nr. 986216

 

Funktioniert die eingebaute Funktion StringSplit korrekt?

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

führt zu folgendem Ergebnis:

Es stellt sich heraus, dass das Zeichen "|" im Fall von "|A" die leere Zeichenkette und A trennt, im Fall von "B|" trennt es B und die leere Zeichenkette nicht. Aber wenn es ein Trennzeichen ist, muss es etwas trennen, sonst gibt es keinen Unterschied zwischen "|A|B|" und "|A|B" und gleichzeitig gibt es einen Unterschied zwischen "|A|B|" und "A|B|" . Und wenn Leerzeilen in einem Fall erlaubt sind, sollten sie auch im anderen Fall erlaubt sein.

 

Teilt richtig, aber nicht ganz durchgängig. Außerdem sollte am Ende ein Blanko-Token ausgegeben werden.

Setzen Sie es in servicedesk.

 

Mit meiner Bewertung stimmt etwas nicht, der Code-Download-Zähler scheint nicht mehr zu funktionieren.

Ups, das ist kein Fehler... Haben Sie Codes aus MQL4 zu Ihrer Bewertung hinzugefügt?

 

Ja, wir arbeiten daran, die MQL4-Codebasis auf die neue MQL5-Website-Engine zu übertragen.

Wir arbeiten an der Vereinheitlichung der Plattformen.

 
A100:

Funktioniert die eingebaute Funktion StringSplit korrekt?

führt zu folgendem Ergebnis:

Es stellt sich heraus, dass das Zeichen "|" im Fall von "|A" die leere Zeichenkette und A trennt, im Fall von "B|" trennt es B und die leere Zeichenkette nicht. Aber wenn es ein Trennzeichen ist, muss es etwas trennen, sonst gibt es keinen Unterschied zwischen "|A|B|" und "|A|B" und gleichzeitig gibt es einen Unterschied zwischen "|A|B|" und "A|B|". Und wenn Leerzeilen in einem Fall erlaubt sind, sollten sie auch im anderen Fall erlaubt sein.

Danke für die Nachricht, korrigiert in den Klemmen 4 und 5.