MT4-Tester gibt keine Informationen aus anderen Zeitrahmen - Seite 9

 
avatara >>:

да не в том вопрос.

Получается, что на тесторе нельзя тестировать советника если его логика основана на показаниях мультитайфреймных индикаторов.

Нужно выносить расчётную часть в советник.

Или я не прав?

falsch - Sie können

 
Vinin >>:


Конечно не прав.
Но правда не понятно зачем использовать мультитаймфреймные индикаторы?
Советник может обращаться к нужному таймфрейму или брать значения индикатора с нужного таймфрейма.
Использование мультитаймфреймных индикаторов нужно только для ручной торговли.
Получается дополнительное усложнение кода и возможность вноса дополнительных ошибок.

Was ist daran falsch? Haben Sie sich die Protokolle angesehen?

Einige der Autoren glauben an Tester und iCustom...

Wenn Sie versuchen, sie zu verstehen, können Sie ausgeschlossen werden.

Wenn möglich, zeigen Sie bitte, wie man im Indikator, der von iCustom aufgerufen wird, korrekte Daten eines anderen Zeitrahmens erhält (nicht der Periode, die an iCustom übergeben wird) und wie es im Tester funktionieren kann.

Für mich ist das keine offensichtliche Einschränkung. Ich habe sie nirgends gefunden.

-----------------

Und die Verwendung aller Logik und Indikator-Code anstelle von iCustom wird definitiv komplizierter die EA, aber nicht umgekehrt, wie Sie behaupten... ;)

 
avatara писал(а) >>

Was ist los? Haben Sie sich die Protokolle angesehen?

Einige von denen, die schreiben, glauben an Tester und iCustom...

Wenn Sie versuchen, sie zu verstehen, können Sie gesperrt werden.

Wenn möglich, zeigen Sie bitte, wie der iCustom-Indikator korrekte Daten der ausländischen TF (nicht der an iCustom übergebenen Periode) erhalten kann und wie er im Tester funktionieren kann.

Für mich ist das keine offensichtliche Einschränkung. Ich habe sie nirgends gefunden.


Wenn Sie im visuellen Modus des Testers (genauer gesagt im Indikator, der dem visuellen Testchart überlagert ist) korrekte Daten erhalten möchten, sollten Sie eine Zeitsynchronisation im Indikator vorsehen.
Daher ist jede Verwendung von iOpen(), iClose usw. in diesem Modus falsch. Es wird auf die echten Daten zugegriffen. Das Aufrufen eines Nulltaktes bedeutet, dass der letzte Takt angesprochen wird.

Und die meisten multitemporalen Indikatoren, die auf Schlusskursen im Visualisierungsmodus beruhen, blicken in die Zukunft (sogar mit Zeitsynchronisation).
Deshalb sage ich, dass diese Art von Arbeit unnötig und höchstwahrscheinlich schädlich ist, weil sie falsche Daten liefert.

Dies gilt jedoch nicht für iCustom-Aufrufe von EA

 
Vinin >>:


Если ты хочешь получить корректные данные в визуальном режиме работы тестера (точнее в индикаторе, наброшенном на график визуального тестирования), то нужно в индикаторе предусмотреть синхронизацию времени.
Так любые обращение типа iOpen(), iClose и прочее в таком режиме работы некорректно. Идет обращение к реальным данным. И обращение к нулевому бару означает обращение к действительному последнему бару.

И большинство мультитаймфреймных индикаторов построенных на ценах закрытия в режиме визуализации заглядывают в будущее (даже используя синхронизацию по времени)
Потому и говорю, что подобная работа не нужна, а скорее всего и вредна, так как дает не корректные данные.

Ich wiederhole.

Kontrolle ohne Visualisierung.

Ihr Berater ruft meinen Induktor an.

egal, was oder wie es zählt. schauen Sie sich die Protokolle an, um zu sehen, was es als Preis von der Minute TF bekommt.

-------

Ich habe das Beispiel ein wenig verändert. Bei tf=1 funktioniert es nicht richtig, bei anderen funktioniert es wie es sollte.

Dateien:
curval.mq4  4 kb
 
avatara писал(а) >>

Ich wiederhole.

Kontrolle ohne Visualisierung.

Ihr Berater ruft meinen Truthahn.

Es spielt keine Rolle, was oder wie es zählt. Schauen Sie sich die Protokolle an, um zu sehen, was es als Preis von der Minute TF bekommt.


Ihr Indikator wird Null zurückgeben, da er mit einem logischen Fehler erstellt wurde.
Nach einer kleinen Anpassung funktioniert es gut
 
Vinin >>:

Зачем так сложно
В режиме визуализации работать будет не корректно

Entschuldigung, ich habe ein Nickerchen gemacht, hier ist es +6gmt.
Sie sind falsch über "kompliziert", der vorgestellte Code ist nur ein Teil der EA-Code, es ist in den Indikator angezeigt, um zu überprüfen
um zu prüfen, ob der EA im Testmodus korrekt funktioniert.
Zum Thema "Im Visualisierungsmodus funktioniert es nicht richtig": Bei Programmen, die korrekt geschrieben wurden und korrekt funktionieren, tut das Programm das, was der Programmierer von ihm verlangt hat, und nichts anderes (und muss es tun),
Das Programm wird nicht richtig funktionieren, es wird tun (und muss tun), was die Programmierer eingestellt haben, sonst ist die Software grob und nicht angepasst, das ist meine Meinung und nicht meine allein.
Was die Visualisierung und Nicht-Visualisierung betrifft - das ist aus dem Bereich der Märchen einer hellen Zukunft:))
Ich habe den Code angegeben, mit dem ich die verarbeiteten Daten überprüft habe. Es ist deutlich zu sehen, dass die benachbarten TFs
ihre Daten nicht ändern, können Sie diesen Indikator auf den Onlin EA setzen und prüfen, ob in Onlin
Der vorgestellte Code funktioniert korrekt, und alle 5 Indikatoren zeigen in etwa die gleiche logische
bezogene Daten, der Code ist detailliert beschrieben, es sollte wie beschrieben sein, ABER ... Wie kann man die Unzulänglichkeiten des Teigs umgehen?
Wenn es irgendwelche konstruktiven Argumente, Vorschläge, kann ich sehen, Ihren Code, wo es praktisch bewiesen werden
und angezeigt - hier die Daten der aktuellen TF, und hier die Daten der höheren und niedrigeren TF im TESTOR-Modus.
Bitte verschieben Sie Argumente, die nichts angehen, in andere Threads, sonst verpassen wir bei diesen unnötigen Streitigkeiten eine nützliche Idee.

Ich entschuldige mich, wenn etwas falsch ist. Nichts für ungut. Wir müssen die Software noch debuggen, wir haben noch Vorschläge.

 
vladv002 писал(а) >>

Entschuldigung, ich habe ein Nickerchen gemacht, hier ist es +6gmt.
Sie sind falsch über "kompliziert", der vorgestellte Code ist nur ein Teil der EA-Code, es ist in den Indikator angezeigt, um zu überprüfen
um zu prüfen, ob der EA im Testmodus korrekt funktioniert.
Zum Thema "Im Visualisierungsmodus funktioniert es nicht richtig": Bei Programmen, die richtig geschrieben wurden und die richtig funktionieren, tut das Programm das, was der Programmierer von ihm verlangt hat, und nichts anderes,
Das Programm wird nicht richtig funktionieren, es wird tun (und muss tun), was die Programmierer eingestellt haben, sonst ist die Software grob und nicht angepasst, das ist meine Meinung und nicht meine allein.
Was die Visualisierung und Nicht-Visualisierung betrifft - ist aus dem Bereich der Märchen von einer hellen Zukunft:))
Ich habe den Code angegeben, mit dem ich die verarbeiteten Daten überprüft habe. Es ist deutlich zu sehen, dass die benachbarten TFs
ihre Daten nicht ändern, können Sie diesen Indikator auf den Onlin EA setzen und überprüfen, dass in Onlin
Der vorgestellte Code funktioniert korrekt, und alle 5 Indikatoren zeigen in etwa die gleiche logische
bezogene Daten, der Code ist detailliert beschrieben, es sollte wie beschrieben sein ABER ... Wie kann man die Unzulänglichkeiten des Teigs umgehen?
Wenn es irgendwelche konstruktiven Argumente, Vorschläge, kann ich sehen, Ihren Code, wo es praktisch bewiesen werden
und angezeigt - hier die Daten der aktuellen TF, und hier die Daten der höheren und niedrigeren TF im TESTOR-Modus.
Bitte verschieben Sie Argumente, die nichts angehen, in andere Threads, sonst verpassen wir eine nützliche Idee in diesen unnötigen Streitigkeiten.

Ich entschuldige mich, wenn etwas falsch ist. Nichts für ungut. Ich muss Software debuggen, ich habe noch Vorschläge.


Der Indikator ist so konzipiert, dass er in Echtzeit arbeitet.
Auch hier stammen die Werte nicht aus dem Virtualisierungsdiagramm, sondern aus realen aktuellen Daten.
Wir können dies auch mit dem Virtualisierungsdiagramm machen, aber wir müssen uns darüber im Klaren sein, dass es nicht richtig funktionieren wird, weil die Daten immer noch aus dem realen Verlauf und nicht aus dem simulierten Verlauf stammen werden. Es wird einen Blick in die Zukunft geben, vielleicht reicht die Geschichte für Berechnungen nicht aus. Und es könnten noch viel mehr sein.
Es wird eine ganze Reihe anderer Fragen geben.
 
Hier ist ein einfacher Indikator, der Close-Werte von 6 Zeitrahmen in seine 6 Puffer schreibt.
//+------------------------------------------------------------------+
//|                                               MultiTimeframe.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Red
#property indicator_color2 Navy
#property indicator_color3 DarkSlateGray
#property indicator_color4 Orange
#property indicator_color5 Magenta
#property indicator_color6 CornflowerBlue
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double ExtMapBuffer6[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,ExtMapBuffer4);
   SetIndexStyle(4,DRAW_LINE);
   SetIndexBuffer(4,ExtMapBuffer5);
   SetIndexStyle(5,DRAW_LINE);
   SetIndexBuffer(5,ExtMapBuffer6);
//----
   return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
//----
   ExtMapBuffer1[0]=iClose(Symbol(),PERIOD_M1,0);
   ExtMapBuffer2[0]=iClose(Symbol(),PERIOD_M5,0);
   ExtMapBuffer3[0]=iClose(Symbol(),PERIOD_M15,0);
   ExtMapBuffer4[0]=iClose(Symbol(),PERIOD_M30,0);
   ExtMapBuffer5[0]=iClose(Symbol(),PERIOD_H1,0);
   ExtMapBuffer6[0]=iClose(Symbol(),PERIOD_H4,0);   
//----
   return(0);
  }
//+------------------------------------------------------------------+
Und hier ist ein Expert Advisor, der Werte von diesem Indikator erhält und diese Werte auf dem Chart nur im visuellen Testmodus anzeigt.

//+------------------------------------------------------------------+
//|                                                     SimpleEA.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   if(IsTesting())
     {
      if(IsVisualMode())
        {
         double M1_Value=iCustom(Symbol(),0,"MultiTimeframe",0,0);
         double M5_Value=iCustom(Symbol(),0,"MultiTimeframe",1,0);
         double M15_Value=iCustom(Symbol(),0,"MultiTimeframe",2,0);
         double M30_Value=iCustom(Symbol(),0,"MultiTimeframe",3,0);
         double H1_Value=iCustom(Symbol(),0,"MultiTimeframe",4,0);
         double H4_Value=iCustom(Symbol(),0,"MultiTimeframe",5,0);
         string com="Last Bid="+DoubleToStr(Close[0],Digits)+"\n";
         com=com+"iClose(M1,0)="+DoubleToStr(M1_Value,Digits)+"\n";
         com=com+"iClose(M5,0)="+DoubleToStr(M5_Value,Digits)+"\n";
         com=com+"iClose(M15,0)="+DoubleToStr(M15_Value,Digits)+"\n";
         com=com+"iClose(M30,0)="+DoubleToStr(M30_Value,Digits)+"\n";
         com=com+"iClose(H1,0)="+DoubleToStr(H1_Value,Digits)+"\n";
         com=com+"iClose(H4,0)="+DoubleToStr(H4_Value,Digits)+"\n";
         Comment(com);
        }
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+

Wenn Sie danach weiterhin argumentieren, dass die Indikatoren im Tester nicht korrekt berechnet oder die Preisdaten von nicht-nativen Zeitrahmen modelliert werden, müssen Sie den Beweis erbringen, sonst werden Sie gesperrt. Verboten.
 
Vinin >>:


Индикатор предназначен для работы в реал-тайм.
Я еще раз повторюсь что он берет свои значения с не с графика виртуализации, а с вполне реальных последних данных
Можно сделать что бы он работал и на графике виртуализации, но надо понимать что будет не совсем корректная работа, так как данные все равно будут браться с реальной истории, а не с моделированной. Будет заглядывание в будущее, возможно не будет хватать истории для расчетов. Да и много еще что может быть.
Появятся совсем другие вопросы.

Ich muss etwas Falsches gesagt haben, es tut mir leid, ich werde es noch einmal genauer versuchen.
Jede TF hat ihre eigenen Balken, die ihre eigene Zeit haben - warum haben wir einen Blick nach vorne?
Ich weiß, dass es Expert Advisors gibt, die einen Blick in die Zukunft werfen,
Es ist ein Kinderspiel.
Was soll das heißen: "Der Indikator ist so konzipiert, dass er in Echtzeit funktioniert", wir sprechen vom Tester!
Spezifische Frage - der Tester gibt keine Daten von benachbarten TFs, nur Daten von der aktuellen TF kommt - WIE man richtig
umgehen diese Unzulänglichkeit der MT4-System-Tester
.
Keine der MQL4-Funktionen kann Daten von den benachbarten TFs im Tester zurückgeben, weder über noch unter ihm.
Wenn die Daten vorhanden sind, können Sie sie korrigieren, prüfen, anzeigen - Kommentar,Warnung, Druck - oder zur Verarbeitung weiterleiten.
Für Vorschläge, wie dieser Nachteil im Tester beseitigt werden kann, wäre ich Ihnen sehr dankbar, und ich denke, ich bin nicht der Einzige.


 
Rosh >>:
Вот простой индикатор, который пишет в 6 своих буферов значения Close с 6-ти таймфреймов.
А вот эксперт, который получает значения из этого индикатора и выводит полученные значения на график только в режиме визуального тестирования.


Если и после этого вы продолжите утверждать, что в тестере неверно считаются индикаторы или моделируются ценовые данные с неродных таймфреймов, то вы обязаны будет предоставить доказательства, иначе бан. Надоело.

Danke für das überzeugende Beispiel von den Entwicklern.

Äußerst nützlich, um sie zur Hand zu haben. Vor der Prüfung, um die Korrektheit der Arbeit zu überprüfen.

Aber meine lokalen Probleme bleiben - wie Sie sehen können, ist M1=0,0. :(

Obwohl ich die Verlaufsdateien und so gelöscht habe...

Ich werde mehr lernen.

Nochmals vielen Dank für Ihre Hilfe.