Fragen von einem "Dummy" - Seite 54

 
Urain:
Die Fehler des Mannes mit dem Spitznamen "Experte" zu korrigieren ? das gehört in den Humor-Thread.
Wie viel von Ihrem Beitrag ist Trolling auf einer Skala von 10? =)
 
Expert:
Soweit sich Ihr Beitrag auf Trolling auf einer Skala von 10 bezieht? =)

Zuerst dachte ich, es sei Andrei, der solche Fragen stellt, aber dann erinnerte ich mich daran, dass sein Spitzname TheXpert ist, dem er auch entspricht.

Da Sie so nah dran waren, müssen Sie damit rechnen, dass Sie doppelt gefragt sein werden.

Ändern Sie es besser, es ist noch nicht zu spät für 3 Beiträge, es gibt genug Experten im Forum.

 
tol64:

Bitte beraten Sie mich, wie man die neue Barrenprüfung in Mehrwährungs-EA in dem vorgestellten Schema korrekt implementiert.

Ich habe ein statisches Array hinzugefügt, um den Zeitpunkt des Öffnens eines neuen Balkens für jedes Symbol zu speichern:

void OnTick()
{ 
 // Объявление массивов переменных для торговых сигналов
 static datetime New_Bar[2];  
 static bool UpSignal[2], DnSignal[2];

 // Получение торговых сигналов
 TradeSignalCounter(0, остальные параметры);
 TradeSignalCounter(1, остальные параметры);

 // Совершение торговых операций
 TradePerformer(0, остальные параметры);
 TradePerformer(1, остальные параметры);
}

Geänderte Funktion isNewBar(string Symbol_, ENUM_TIMEFRAMES Timeframe); Jetzt funktioniert es mit ArrayNew_Bar[].

bool isNewBar(int Number,string Symbol_,ENUM_TIMEFRAMES Timeframe,datetime &New_Bar[])
{
 // Текущее время
 datetime lastbar_time = (ENUM_SERIES_INFO_INTEGER)SeriesInfoInteger(Symbol_,Timeframe,SERIES_LASTBAR_DATE);

 // Если это первый вызов функции
 if(New_Bar[Number] == 0)
   {
    // Установим время и выйдем 
    New_Bar[Number] = lastbar_time;
    return(false);
   }

 // Если время отличается
 if(New_Bar[Number] != lastbar_time)
   {
    // Запомним время и вернем true
    New_Bar[Number] = lastbar_time;
    return(true);
   }
 // Дошли до этого места - значит бар не новый, вернем false
 return(false);
}
Die Ergebnisse sind für verschiedene Werkzeuge bei unveränderten Parametern immer noch unterschiedlich. Können Sie mir sagen, wo ich falsch liege?
 
Urain:

Zuerst dachte ich, es sei Andrei, der solche Fragen stellt, aber dann erinnerte ich mich daran, dass sein Spitzname TheXpert ist, dem er auch entspricht.

Da Sie so nah dran sind, sollten Sie sich darauf einstellen, dass Sie doppelt gefragt sein werden.

Ändern Sie es besser, 3 Beiträge ist nicht zu spät, das Forum ein Experte ist genug.

Ich dachte am Anfang, dass Andrew solche Fragen stellt (im Zusammenhang verstehen die dumm) fragt, aber dann erinnerte ich mich, dass er den SpitznamenTheXpert, die er passt (oops, versteckte Beleidigung TheXpert) =)

P.S. Ich setze mich hin, um mir einen neuen Spitznamen auszudenken.

 
papaklass:
Die Ergebnisse werden anders ausfallen, da die Funktion OnTick() ausgelöst wird, wenn ein neuer Tick für das Symbol auf dem Chart erscheint, auf dem der Expert Advisor arbeitet. Die Häkchen für die verschiedenen Symbole werden nicht gleichzeitig gesetzt. Dies führt zu abweichenden Endergebnissen. Wenn Sie Ihren EA so eingestellt haben, dass er mit der liquidesten Währung mit den höchsten Ticks des Tages arbeitet (Eurusd), brauchen Sie sich keine Sorgen zu machen.

Der Grund, warum die Ergebnisse unterschiedlich sind, ist für mich klar. Dies wurde bereits in mehreren Threads mehrfach erörtert. Sich nicht zu beschweren ist in meinem Fall keine Option). Es gibt ein Problem, das gelöst werden muss, um korrekte Testergebnisse zu erhalten. Das von Nicholas Kositsin vorgeschlagene Schema ist für mich im Moment das verständlichste und am besten geeignet. Es gibt einfach keine Möglichkeit, das oben beschriebene Problem zu lösen.

Konstantin Gruzdev hat in seinem Artikel eine interessante Methode mit "Spionen" und "Agenten" vorgeschlagen. )) Aber sein "Agent" exSpy Control Panel MCM scheint bei mir nicht zu funktionieren.

Hat jemand versucht, das obige Problem mit Hilfe der "Agenten" von Konstantin Gruzdev zu lösen?

 
tol64:

Hat jemand versucht, das obige Problem mit den "Agenten" von Konstantin Gruzdev zu lösen?

Ich glaube nicht, dass diese Technik im Prüfgerät funktionieren wird.

// Arbeit mit Zeitschaltuhr. Was kann man daran nicht mögen?

 
MetaDriver:
Ich denke, dass diese Technologie im Testgerät nicht funktionieren wird.

Konstantin selbst äußerte sich im Diskussionsthread des Artikels wie folgt:

OnChartEvent() funktioniert in der Testversion noch nicht. Die Entwickler haben versprochen, dies zu tun. Ich testete, wenn es ein Test genannt werden kann, die Methodik mit dem Aufruf "Spione" direkt aus dem Expert Advisor im Tester, anstelle der Übertragung von Ereignissen durch globale Variablen - es funktioniert.

So sollte man es ausprobieren.

Ich habe noch ein paar Varianten im Kopf, aber sie erscheinen mir recht kompliziert. Auf jeden Fall werde ich dieses Problem lösen müssen. Ich bin es einfach leid, die Ergebnisse falsch zu verstehen. Ich habe das Studium von MQL5 ausschließlich wegen der Möglichkeit begonnen, Handelssysteme mit mehreren Währungen zu testen. Vorher habe ich die Testergebnisse in Excel hochgeladen und dort Berechnungen durchgeführt. Aber ich muss die Ergebnisse direkt im Strategietester sehen.

Vladimir, wie haben Sie diese Frage gelöst?

MetaDriver:

// Arbeit mit Zeitschaltuhr. Was kann man daran nicht mögen?

Ah, schon beantwortet)). Ja, einige Forums-"Haie" haben diese Möglichkeit auch schon vorgeschlagen, aber ich muss noch sehen, wie sie umgesetzt werden kann. Ich werde versuchen, mich jetzt zu konzentrieren und endlich diese notwendige Funktion zu erfüllen. Wenn Sie eine fertige Lösung haben, wäre ich Ihnen zumindest für ein einfaches Beispiel sehr dankbar, wenn es Ihnen nichts ausmacht)).

 
MetaDriver:

// Mit einem Timer arbeiten. Was kann man daran nicht mögen?

Ich habe versucht, es mit dem Timer zu testen. Das Ganze erschien mir etwas komplizierter, aber es stellte sich heraus, dass es ausreicht, den Code von der Funktion OnTick() nach OnTimer() zu verschieben. Die Ergebnisse sind identisch. Um genau zu sein, müssen Sie den Timer z. B. alle 10 Sekunden einstellen. Allerdings dauert die Prüfung viel länger, und das ist das Einzige, was Ihnen auf den ersten Blick vielleicht nicht gefällt.
Документация по MQL5: Работа с событиями / EventSetTimer
Документация по MQL5: Работа с событиями / EventSetTimer
  • www.mql5.com
Работа с событиями / EventSetTimer - Документация по MQL5
 
tol64:
Ich habe versucht, es mit einer Zeitschaltuhr zu testen. Ich fand das alles etwas komplizierter, aber hier stellt sich heraus, dass ich nur den Code der Funktion OnTick() in OnTimer() übersetzen muss. Die Ergebnisse sind identisch. Um genau zu sein, müssen Sie den Timer z. B. alle 10 Sekunden einstellen. Es stimmt, dass das Testen viel mehr Zeit in Anspruch nimmt; es ist das Einzige, das auf den ersten Blick unangenehm sein kann.

Das hängt von der Zeitspanne ab. Du kannst es 10 Tage lang machen (60*60*24*10), dann geht es schneller. :))

Es gibt auch Feinheiten. Zum Beispiel müssen Sie am Wochenende nicht ankreuzen. ;)

 
tol64:
Aber es dauert viel länger, sie zu testen

Wenn das "Ticken" nur zum Erfassen eines neuen Balkens benötigt wird, genügt es, einen Timer für die Zeit des Erscheinens des Balkens einzustellen (00 Minuten 00 Sekunden für H1) und einige Minuten lang alle 1 Sekunde zu ticken, bis der Balken auf allen erforderlichen TFs erscheint. Sie wird genauer und wirtschaftlicher sein.

Aber eine Lösung mit benutzerdefinierten Ereignissen ist natürlich viel eleganter.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5