Eine Trendfolgestrategie. - Seite 12

 
JLY:

Und wie entferne ich die Icons, wenn die Linie nicht mehr vorhanden ist?

ObjectDelete(0,"имя значка"+name);
если у значка нет имени, то в данном случае
ObjectDelete(0,name);

Sie benötigen die Zeitberechnung in Takten

Machen Sie es in Bars.

Sie kennen die Zeit, d.h. Time[9] war 9 Takte.

Ich habe nur den Anfang geschrieben,

Dann machen Sie, was Sie wollen.

 
pako:

Die Zeitberechnung wird in Bars benötigt

es in Bars tun.

Die Zeit ist Ihnen bekannt, d.h. Time[9] war 9 Takte.

Ich habe nur den Anfang geschrieben,

Dann machen Sie, was Sie wollen.

Danke, nur war es nicht nötig, eine Zeile zu erstellen (nur Parameter setzen), und so funktioniert alles.

In 4 wurde die Zeit in Takten durch iBarShift berechnet. Ich habe diese Formel verwendet:

datetime time01=time1NEW;datetime time02=time2NEW;
int shift01=iBarShift(0,0,time01);int shift02=iBarShift(0,0,time02);//перевод из скунд в бары
int timeCHANGE=shift01-shift02;//разница между 1-й и 2-й точкой линии
int timeBAR=(shift02-timeCHANGE);//прибавить разницу ко 2-й точке
int timeBARc=Time[timeBAR];//Перевод из баров в секунды

Die fünfte hat diese Funktion nicht, und ich weiß nicht, wie man Copy* benutzt...

 
JLY:

Danke, aber es war nicht nötig, eine Zeile zu erstellen (nur Parameter setzen), aber es funktioniert.

In der 4. wurde die Zeit in Takten durch iBarShift gezählt. So lautet die Formel:

Die fünfte hat diese Funktion nicht, und ich weiß noch nicht, wie man die Funktion Kopieren* verwendet...

iBarShift analog in 5

int iBarShift(string symbol,
                  int tf,
                  datetime time,
                  bool exact=false)
  {
   if(time<0) return(-1);
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   datetime Arr[],time1;
   CopyTime(symbol,timeframe,0,1,Arr);
   time1=Arr[0];
   if(CopyTime(symbol,timeframe,time,time1,Arr)>0)
     {
      if(ArraySize(Arr)>2) return(ArraySize(Arr)-1);
      if(time<time1) return(1);
      else return(0);
     }
   else return(-1);
  }
 
In MQL5 haben sich die Konstanten der Perioden geändert (neue Perioden M2, M3, M4, M6, M10, M12, H2, H3, H6, H8, H12 wurden hinzugefügt), Sie können die folgende Funktion verwenden, um MQL4-Perioden zu konvertieren:
ENUM_TIMEFRAMES TFMigrate(int tf)
  {
   switch(tf)
     {
      case 0: return(PERIOD_CURRENT);
      case 1: return(PERIOD_M1);
      case 5: return(PERIOD_M5);
      case 15: return(PERIOD_M15);
      case 30: return(PERIOD_M30);
      case 60: return(PERIOD_H1);
      case 240: return(PERIOD_H4);
      case 1440: return(PERIOD_D1);
      case 10080: return(PERIOD_W1);
      case 43200: return(PERIOD_MN1);
      
      case 2: return(PERIOD_M2);
      case 3: return(PERIOD_M3);
      case 4: return(PERIOD_M4);      
      case 6: return(PERIOD_M6);
      case 10: return(PERIOD_M10);
      case 12: return(PERIOD_M12);
      case 16385: return(PERIOD_H1);
      case 16386: return(PERIOD_H2);
      case 16387: return(PERIOD_H3);
      case 16388: return(PERIOD_H4);
      case 16390: return(PERIOD_H6);
      case 16392: return(PERIOD_H8);
      case 16396: return(PERIOD_H12);
      case 16408: return(PERIOD_D1);
      case 32769: return(PERIOD_W1);
      case 49153: return(PERIOD_MN1);      
      default: return(PERIOD_CURRENT);
     }
  }
 
JLY:

Ich habe die Zeichnung nach Sekunden gemacht, es gibt Lücken im Wochenende, das heißt, man muss noch nach Takten zählen.

int  PeriodSeconds(
   ENUM_TIMEFRAMES  period=PERIOD_CURRENT      // период графика
   );
Gibt die Anzahl der Sekunden in der Periode zurück.
 
pako:

Ich danke Ihnen vielmals. Barshift zählt.

Nun muss der resultierende Balken nur noch in Sekunden umgerechnet werden. In 4 war es Time[bar].

In 5 mache ich es so, wie es in der Regel steht, aber es funktioniert nicht:

datetime Time[];
int count=1; 
ArraySetAsSeries(Time,true);
int timeBARsec=CopyTime(_Symbol,_Period,timeBAR,count,Time);//Перевод из баров в секунды
 
JLY:

Ich danke Ihnen vielmals. Barshift zählt.

Nun muss der resultierende Balken nur noch in Sekunden umgerechnet werden. In 4 war es Time[bar].

In der 5. Klasse mache ich das nach der Regel, aber es klappt nicht:

Wenn ich die Frage richtig verstehe.

    datetime Time[]; 
    ArraySetAsSeries(Time,true);
    CopyTime(Symbol(),PERIOD_CURRENT,0,100,Time);
    long timeBARsec = Time[2];//Перевод из баров в секунды, в данном случае Time[бар] бар = 2

    Comment("timeBARsec = ",StringToTime(Time[2]));
 
pako:

wenn ich die Frage richtig verstanden habe

Ja, es funktioniert) Vielen Dank)

Wenn es kein "Ende" gibt, ist es null und kann nicht gesehen werden.

Dateien:
TimeEnd.mq5  5 kb
 

1. Stellen Sie die Stundengenauigkeit für den Indikator und die Uhrzeit in der Symbolbeschreibung ein (fügen Sie die Beschreibung in die Diagrammeigenschaften ein).

2. Wäre es besser, die Icons in einen Puffer zu legen? Nur wie kann man das machen, wie kann man Zeit und Preis im gleichen Puffer kombinieren?

Wenn die Linie gezeichnet wird und noch kein Symbol vorhanden ist (der Balken ist noch nicht erschienen), wird eine Fehlermeldung ausgegeben (in der Registerkarte "Experten") und die Arbeit mit den anderen Symbolen wird eingestellt.

2013.09.22 00:10:36 FlatExecution (EURUSD,D1) array out of range in 'FlatExecution.mq5' (124,30)

D.h. Array ist außerhalb des Bereichs... Der Fehler liegt in dieser Zeile:

long timeBARsec=Time[timeBAR];

Wie kann ich erreichen, dass mein Indikator nicht durch diesen Fehler gelähmt wird? Wie ändere ich den Indikator, um den Betrieb dieses Fehlers nicht zu lähmen?

Handelsalgorithmus: Einstieg durch Zeitsymbol, Stopp durch Einstiegslinie, Ausstieg durch Einstiegsliniensymbol.

5. Regel für das Zeichnen von Linien: Von jedem Fraktal zu allen folgenden, von oben nach oben und von unten nach unten. Entfernen Sie Linien, die vom Preis berührt werden, und zeichnen Sie sie nicht ein.


Dateien:
 

Das Problem mit dem Fehler wurde behoben.

Das Symbol wird nun auf die Öffnung des Signalbalkens gezeichnet.

Wenn die Linie ausgeführt wird, nimmt sie ein anderes Aussehen an, eine Linie wird zu ihr gezogen und sie verliert den Strahl. Wenn die Zeile nicht ausgeführt wird, ist sie gelb.

Wenn Linien, auf denen der Stopp über den 2. Punkt hinaus abfällt, können Sie einen Stopp nach dem zweiten Punkt setzen. Selbstverständlich kann die Haltestelle auch entlang dieser Linie verschoben werden, wenn sie anders berechnet wird.

Nach den Fraktalen bleibt die Zeichnung gleich.

Algorithmus. Das Zeichen bedeutet nicht immer einen eindeutigen Kauf oder Verkauf. Ich denke jedoch, dass die Nachrichten einen gewissen Einfluss darauf haben. Die Prüfung wurde nicht durchgeführt, weil es keine automatische Zeichnung von Fraktalen und Korrekturen dieser Zeichnung (Entfernung der betroffenen Linien) gibt.

Dateien:
Grund der Beschwerde: