[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 271

 
int start()
  {
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(Period() > 240)  return(-1);

int LastPrevDay = iBars(Symbol(), PERIOD_D1);
int barnH= iBars(Symbol(),PERIOD_H1);

for (int i = LastPrevDay-1; i >= 0; i--)
{
datetime NowDay = iTime(Symbol(), PERIOD_D1, i);
int PrevDay = iBarShift(Symbol(), PERIOD_D1, NowDay);
datetime x_time= StrToTime(TimeToStr(NowDay, TIME_DATE)+" "+shift_time); 
int x_shift= iBarShift(Symbol(),PERIOD_H1,x_time);
double CL= iClose(Symbol(),PERIOD_H1,x_shift);

int LastDay = iBarShift(Symbol(), PERIOD_D1,iTime(Symbol(), PERIOD_D1, i))-1;
if(LastDay>0)   // тут я запутался 
buffer[i]= CL;
}
return(0);

Bitte helfen Sie mir, das herauszufinden. Ich möchte, dass die Linie korrekt ist. Aber der Puffer gibt nur eine Linie, die in der Mitte des Tages flach sein sollte, wie die Pivotlinie.... Ich habe eine Linie, die vom Niveau der Stunde X des Vortages ausgeht.

BITTE VERSTEHEN SIE.... Ich kann es nicht erkennen.

 
nlp2311:

Bitte helfen Sie mir, das herauszufinden. Ich möchte, dass die Linie korrekt ist. Aber der Puffer gibt nur eine Linie, die in der Mitte des Tages flach sein sollte, wie die Pivotlinie.... Ich habe eine Linie, die vom Niveau der Stunde X des Vortages ausgeht.

BITTE FINDEN SIE ES HERAUS.... Ich kann es nicht herausfinden(((

Nun, nehmen wir an, Sie brauchen eine Bewegung um 5 Uhr auf einem beliebigen Zeitrahmen, natürlich nicht auf dem täglichen, sondern auf einem kleineren. Sagen wir, ab ein Uhr oder weniger.

Und ziehen Sie sie bis 5 Uhr am nächsten Tag. So wird's gemacht.

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Blue
#property indicator_width1 2
//==============================
extern int    hour = 5;
extern int    hrma = 4;
//==============================
double fx[];
double mai;
int p,hr,hrp;
//************************************************************
int init()  
{   
   SetIndexBuffer(0,fx);
   
   p=hrma*60/Period(); // пересчет периода мувинга на любой таймфрейм
   
   return(0);
}
//************************************************************
int start()
{
   int cbi=Bars-IndicatorCounted()-1; if (cbi<0) return(-1);
   if (cbi==1) cbi--;
   if (cbi>1) cbi=Bars-p-1;
   //-------------------------------
   for(int i=cbi; i>=0; i--)
   {
      hrp=TimeHour(Time[i+1]); 
      hr=TimeHour(Time[i]);
      
      if (hr==hour && hrp!=hr) mai=iMA(NULL,0,p,0,0,0,i); // сам простой мувинг, в момент, когда час равен нашему и не неравен на предыдущем баре
      
      fx[i]=mai; // просто приравнивание индикаторного буффера к глобальной переменной 
   }
  
   return(0);
}
//***************************************************************
 

Ja, habe ich, gleiche Antwort... was mit

ti=Time[i]; // время текущего бара
      
      tiip=tii; // предыдущее состояние времени
      tii=(ti-dth)/dtd*dtd;// время начала суток сдвинутое на нужный нам час
      
      if (tiip!=tii)

ABER DAS ERGEBNIS IST FALSCH!!!!!!!!!!!!!!! Ich habe ein Beispiel aus dem python durch

if(TimeDay(Time[i]) != TimeDay(Time[i+1]))
Die allgemeine Ansicht ist wie folgt

int start()
  {
double LastHigh,LastLow;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(Period() > 240)  return(-1);

int LastPrevDay = iBars(Symbol(), PERIOD_D1);
int barnH= iBars(Symbol(),PERIOD_H1);

for (int i = LastPrevDay-1; i >= 0; i--)
{
datetime NowDay = iTime(Symbol(), PERIOD_D1, i);
int PrevDay = iBarShift(Symbol(), PERIOD_D1, NowDay);
datetime LastD =  iTime(Symbol(), PERIOD_D1, i+1);
int LastDay = iBarShift(Symbol(), PERIOD_D1, LastD);

if(TimeDay(Time[i]) != TimeDay(Time[i+1]))
{ 
datetime x_time= StrToTime(TimeToStr(NowDay, TIME_DATE)+" "+shift_time); 
int x_shift= iBarShift(Symbol(),PERIOD_H1,x_time);
double CL= iClose(Symbol(),PERIOD_H1,x_shift);
}

buffer[i]= CL;
}

return(0);
}

IST ES IMMER NOCH NICHT DAS RICHTIGE ERGEBNIS.

Das Problem ist einfach, eine Linie zu setzen WIE Pivot ist flach, aber nicht von Pivot-Ebene, sondern von einem Wert von einigen Stunde. Das war's!!! Und ich kämpfe und verstehe nicht, wie... RECHT die Linie von X Stunde zu Time[0] !!!!!!!!!!!!!!!!

 
nlp2311:

Ja, habe ich, gleiche Antwort... was mit

ABER DAS ERGEBNIS IST FALSCH!!!!!!!!!!!!!!! Ich habe ein Beispiel aus dem python durch

Die allgemeine Ansicht ist wie folgt

IST ES IMMER NOCH NICHT DAS RICHTIGE ERGEBNIS.

Das Problem ist einfach, eine Linie zu setzen WIE Pivot ist flach, aber nicht von Pivot-Ebene, sondern von einem Wert von einigen Stunde. Das war's!!! Und ich kämpfe und verstehe nicht, wie man...RANGE die Zeile von X Stunde bis Time[0] !!!!!!!!!!!!!!!!

Nun, ich habe dort ein einfacheres Beispiel geschrieben.

Wenn wir zum Zeitpunkt der gewünschten Stunde einen Wert geschrieben haben, dann entspricht er einfach diesem Wert.

for(int i=cbi; i>=0; i--)
{
hrp=ZeitStunde(Zeit[i+1]);
hr=ZeitStunde(Zeit[i]);

if (hr==Stunde && hrp!=hr) x=

fx[i]=x; // einfach den Indikatorpuffer mit der globalen Variablen
gleichsetzen }

Dasselbe gilt für alles, ob Pivot oder was auch immer. Wenn es sich um einen täglichen Pivot handelt, werden die täglichen Niveaus an diesem Punkt für die tägliche Anzahl der Balken berechnet.

Hier die Tageshöchststände um 5 Uhr, zum Beispiel. Das Gleiche gilt für alle anderen Ebenen. Kopieren Sie den Code in einen leeren Indikator, kompilieren Sie ihn und sehen Sie nach, ob dies richtig ist.

Und wenn man nicht alle Tage, sondern nur den letzten Tag einzeichnen muss, wird es etwas anders gemacht. Ich schlage nur einen professionelleren Ansatz vor.

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Blue
#property indicator_width1 2
//==============================
extern int    hour = 5;
extern int    hrma = 24;
//==============================
double fx[];
double hm;
int p,hr,hrp;
//************************************************************
int init()  
{   
   SetIndexBuffer(0,fx); SetIndexEmptyValue(0,EMPTY); 
   
   p=hrma*60/Period();
   
   return(0);
}
//************************************************************
int start()
{
   int cbi=Bars-IndicatorCounted()-1; if (cbi<0) return(-1);
   if (cbi==1) cbi--;
   if (cbi>1) cbi=Bars-p-1;
   //-------------------------------
   for(int i=cbi; i>=0; i--)
   {
      hrp=TimeHour(Time[i+1]); 
      hr=TimeHour(Time[i]);
      
      if (hr==hour && hrp!=hr) 
      {
         fx[i+1]=EMPTY;
         hm=High[iHighest(NULL,0,MODE_HIGH,p,i+1)];
      }
      
      fx[i]=hm; 
   }
  
   return(0);
}
//***************************************************************
 
Hallo zusammen. Wie fügen Sie dem Diagramm Indikatoren hinzu? D.h., ich habe einen Expert Advisor, der einen bestimmten Wert von, sagen wir, iMA berechnet. Wie zeichnet man den Indikator auf dem Diagramm? Ich denke schon, mit der Spezialfunktion oder "manuell" über die Trendlinie? Gibt es eine einfachere Möglichkeit, den Indikator mit Parametern aus dem EA anzuzeigen?
 
Pyro:
Hallo zusammen. Wenn ich sie auf der Karte platzieren wollte, müsste ich sie nicht selbst zeichnen. D.h. ich habe einen EA, in dem ich einige Werte wie iMA. Wie wird der Indikator auf dem Diagramm gezeichnet? Ich denke schon, mit der Spezialfunktion oder "manuell" über die Trendlinie? Gibt es eine einfachere Möglichkeit, den Indikator mit Parametern aus dem EA anzuzeigen?

Ich habe nicht erfüllt, vielleicht jemand schrieb ein Forum Suche nach Mapping-Puffer durch Trendline.

Oder schreiben Sie es selbst, es ist nicht kompliziert.

 
Pyro:
Hallo zusammen. Wie kann ich dem Diagramm Indikatoren hinzufügen? D.h., ich habe einen Expert Advisor, in dem ein bestimmter Wert von iMA berechnet wird. Wie zeichnet man den Indikator auf dem Diagramm? Ich denke schon, mit der Spezialfunktion oder "manuell" über die Trendlinie? Gibt es eine einfachere Möglichkeit, den Indikator mit Parametern aus dem EA anzuzeigen?


Wenn der EA an das Diagramm angehängt ist und etwas darin enthalten ist, dann müssen wir, um zu sehen, was es ist, einen Indikator mit genau der gleichen Funktion erstellen und die gleichen Parameter wie im EA einstellen und sie auf das Diagramm anwenden. Oder wenn es sich um eine Standard-MT-Funktion handelt, wie z.B. ein Muving, muss diese auch auf einen Chart angewendet werden und es müssen die gleichen Parameter wie im Expert Advisor eingestellt worden sein. Der Expert Advisor selbst zeichnet keine Indikatoren auf dem Chart. Sie wird erst nach der Prüfung in den Strategy Tester eingezeichnet. Während des Handels werden sie nicht gezeichnet. Eine andere, aber lästige Möglichkeit ist das Zeichnen von Objekten, z. B. Strichen ObjectCreate(name+Time[0],OBJ_ARROW,0,Time[0],price); ObjectSet(name+Time[0],OBJPROP_ARROWCODE,4); oder Trendliniensegmenten, aber dann muss der Funktionszustand des vorherigen Balkens gespeichert werden. Aber es ist, wenn der Indikator nicht angewendet werden kann, zum Beispiel, wenn etwas von Askum gezeichnet werden muss, aber MT speichert nicht das Array von Askum oder einige synthetische von zwei Paaren. Man muss sie also verdrehen, um sie zu kontrollieren.

Sie können auch eine Vorlage (tpl) erstellen, auf der Sie das, was Sie brauchen, anbringen können. Praktisch ist es jedoch besser, einen benutzerdefinierten Indikator zu erstellen und manuell ein neues Profil zu erstellen, und wenn Sie handeln möchten, rufen Sie einfach das entsprechende Profil auf. Es ist eine Technik am Rande der Fantasie.

 
Es ist sehr lästig, wenn sich die Parameter im Expert Advisor ständig ändern. OK, danke Kollegen, jetzt haben wir Gewissheit.
 
Übertragung vom EA zum Indikator über GV.
 

1) Erstellen Sie Vorlagen mit voreingestellten EA- und Indikatorparametern

2) Übertragung von Parametern auf Indikatoren mit GV

3) Aufrufen von Indikatoren im Diagramm von EA mit WINAPI

Ich ziehe es vor, ein Indikator-Diagramm aus einem EA über ein Arrow-Objekt zu zeichnen