[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 428

 
keekkenen >>:

боюсь эта конструкция if(Time[0]>iTime(0,1440,60)) всегда будет возвращать истину, т.к. это iTime(0,1440,60) значение будет на 60 баров левее, чем Time[0]..

что показывает тест ?




Problemstellung: Ich habe einen EA und möchte ihn z.B. auf die letzten 40 Balken (siehe Thread) im Strategietester optimieren.

if(Time[0]>iTime(0,1440,60))

Wenn die (simulierte) Zeit länger wurde als die Eröffnungszeit des 60. Balkens auf dem Tagesbalken, dann führen Sie die Funktion aus, was falsch ist!

 
richtig, dann müssen Sie vorher den Zeitpunkt festlegen, zu dem der EA mit dem Testen beginnen soll
da Sie wissen, wann sie enden soll, gehen Sie wie folgt vor

Sagen wir, der Test endet 2010.02.10 0:00


ein Skript aus folgendem Code erstellen

#property show_inputs
// время окончания тестировани						
extern string 		endTestTime 		= "2010.02.10 0:00";
// название пары
extern string		symbolTest			= "";
// период на котором ищем нужное время по номеру testBarCount бара относительно времени endTestTime
extern int 			periodTest		   = 0;
// количество баров в прошлое относительно времени endTestTime
extern int 			testBarCount 		= 60;

int init(){
	if ( symbolTest == "") symbolTest = Symbol();
	// искомое время
	Print(TimeToStr(iTime( symbolTest, periodTest,	iBarShift( symbolTest, periodTest,StrToTime( endTestTime)) + testBarCount)));
}
 

Dieses Skript ermöglicht es Ihnen, den Zeitpunkt zu finden, ab dem Sie den EA testen möchten...

ein paar Variablen im EA setzen

extern string startTime = "";
extern string endTime = "";

int StartTime = StrToTime( startTime), EndTime = StrToTime( endTime);

if (Time[0] < StartTime || Time[0] > EndTime) return(0);
 

Dieses Skript ermöglicht es Ihnen, den Zeitpunkt zu finden, ab dem Sie den EA testen möchten...

ein paar Variablen im EA setzen

extern string startTime = "";
extern string endTime = "";

int StartTime = StrToTime( startTime), EndTime = StrToTime( endTime);

if (Time[0] < StartTime || Time[0] > EndTime) return(0);
In startTime wird die vom Skript ermittelte Zeit und in endTime die in die Variable endTestTime des Skripts eingetragene Zeit eingetragen...
 
costy_ >>:

Постановка задачи: имеется советник, есть желание его оптимизировать на последних, например, 40-ка барах (60 см. ветку)в тестере стратегий.

if(Time[0]>iTime(0,1440,60))

если время(моделируемое) стало больше времени открытия 60-го бара на дневке тогда выполнить функцию что не так?!

der 60 bar wird also auch relativ zum modulierten 0 bar moduliert

 

Aufgabenstellung: Ich habe einen EA und möchte diesen auf die letzten 40 Balken im Strategietester optimieren, z.B. bezogen auf die aktuelle Zeit. Diese vierzig Balken können sich auf einen stündlichen, 4-stündlichen, täglichen oder anderen Zeitrahmen beziehen. Der Strategietester arbeitet: Das Zeitintervall, in dem er arbeitet, wird auf dem Testerfeld angezeigt. Diese Art der Einstellung der Betriebszeit erfüllt nicht die oben genannte Aufgabe, nämlich die Prüfung von 40 bar. Das bedeutet, dass wir den Expert Advisor so ändern müssen, dass nicht der Tester die Testzeit bestimmt (seine Fähigkeiten werden nicht erfüllt), sondern der Code selbst.

Ihr Vorschlag wird nicht funktionieren, da für den Prüfer die Zeit, die vor N Takten lag, die aktuelle Zeit ist.


T.K.

Für die aktuelle Uhrzeit berechnet das Prüfgerät den Zeitpunkt des Öffnens des angegebenen Balkens (rückwärts) ausgehend von der aktuellen Uhrzeit. D.h. wieder wird das Problem nicht gelöst. Es sollte N Takte zurück vom heutigen (momentanen) Takt sein, nicht von der aktuellen Zeit des Testers


Habe ich es richtig verstanden.

 
keekkenen >>:
допустим тестирование заканчивается 2010.02.10 0:00


делаем скрипт из кода ниже

Das Skript ist gut, ABER!!! Es gibt einen Zeitwert an, der anschließend im Tester-Panel "bewertet" werden muss. Das ist nicht gut.... Aber auf kleinen TF und kleinen Mengen von Baro wird es eine solche Zeit anzeigen, die im Tester nicht "gepunktet" werden kann, weil im Tester das Datum und nur das Datum angegeben wird. Die Prüfungen werden von 00:00 Uhr des Startdatums bis 00:00 Uhr des Enddatums durchgeführt. Es ist unmöglich, die Zeit anzugeben, insbesondere in Minuten!!!!

 

Der einfache Grund ist, dass der Tester in seiner eigenen Zeit lebt, während wir und die echten Zitate in einer anderen Zeit leben und sich diese Zeiträume nur in unserer Vorstellung überschneiden...


es ist in Ordnung, dass Sie die genaue Zeit im Tester nicht einstellen können, setzen Sie den Anfang des aktuellen Tages oder des Tages vor der Startzeit - es ist bereits ein Kostenfaktor...


Dieses Codestück schneidet zusätzliche Zeit vor der erforderlichen Startzeit der Optimierung (die wir in den Parametern festlegen) und nach der Endzeit der Optimierung ab...

if (Time[0] < StartTime || Time[0] > EndTime) return(0);
 

Sehen Sie sich die Abbildung an, die ind. neulich nur mit einem Offset von 60 Balken zu zeichnen begann. Nachstehend finden Sie einen Teil des Codes. Haben Sie eines der empfohlenen Produkte ausprobiert? Probieren Sie es aus und Sie werden es verstehen.

int start()  {
double stoch1, stoch2;
   int pos = Bars-IndicatorCounted() ;  
//----

if(Time[0]>iTime(0,1440,60)) 
   for(int b=0; b<= pos; b++)
   {    
 
keekkenen >>:

этот кусок кода будет отсекать лишнее время до требуемого времени начала оптимизации (то что мы задаем в параметрах) и после времени окончания оптимизации..

Mein Verständnis ist, dass der EA wird an das Skript für Daten gehen, die Bars zurück sollte im Skript festgelegt werden.

И! Entschuldigung, könnten Sie bitte den vollständigen Code des Skripts posten? Zu meiner Schande habe ich in meinen anderthalb Jahren MQL noch nie ein Skript geschrieben.