Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 433

 
Alekseu Fedotov:

So einfach ist das.

void OnStart()
  {
// Формируем время  
   Alert("14.30  позавчерашнего дня = ",StrToTime(TimeToStr(iTime(NULL,1440,2),TIME_DATE)+" "+"14:30"));

//14.30  позавчерашнего дня
   datetime time=StrToTime(TimeToStr(iTime(NULL,1440,2),TIME_DATE)+" "+"14:30");

//Бар 14.30  позавчерашнего дня
   int     shift=iBarShift(NULL,0,time);

//Машка 14.30  позавчерашнего дня  
   double ma=iMA(NULL,0,13,0,MODE_SMMA,PRICE_MEDIAN,shift);

   Alert("Машка 14.30  позавчерашнего дня = ",DoubleToString(ma,Digits));

Es ist folgendermaßen.


Alekseu Fedotov, Leider ist das nicht der Fall. Sie erhalten die Taktnummer mit TF und verwenden dann dieselbe TF, aber Sie brauchen eine andere (das ist das Problem). Wir müssen die Bar-Nummer mit TF (z. B. 30) und erhalten Sie dann die MA mit TF (1440), ausgehend von dieser Bar mit TF 30. Es ist wie wenn Sie jetzt (14,30) möchte MA mit TF 1440 zu erhalten. Jetzt - kein Problem, aber es auf vor ein paar Tagen zu übertragen, das ist ein Problem.

 
STARIJ:
Ja. Wir sollten M1 und M5 verwenden, .... - zu überprüfen. Vielleicht verwenden Sie Interpolation? mt5 hat eine Tick-Historie. Wenn Sie mir mitteilen, wo der Gewinn liegt, werde ich es mir noch einmal ansehen.

Ich muss die technische Analyse im Nachhinein durchführen, als ob sie jetzt stattfinden würde, und das Ergebnis betrachten. Das ist so, als ob ich gestern um 14.30 Uhr eine technische Analyse der MA mit TF 1d durchgeführt hätte und heute die Ergebnisse der Preisbewegung nach der gestrigen MA erhalten hätte. Wenn ich heute TF 1440 verwende und vom gestrigen Standpunkt aus betrachte, werden die Daten der technischen Analyse anders sein, und daher sollten auch die Ergebnisse anders ausfallen.

 
Roman Sharanov:

Hilfe, ich muss ein Rechteck vom Höchststand der vorherigen Kerze bis zu einem Punkt 200p darüber zeichnen und einen Balken im Voraus berechnen.

Ich habe den Code geschrieben, aber ich verstehe nicht, warum sich der linke Punkt des Rechtecks nicht bewegt? Der rechte schiebt sich hinter die Hai.

Unerwartetes Verhalten der Funktion... Wenn ich früher versucht habe, ein Objekt zu erstellen, das nach einem bereits vorhandenen Objekt benannt ist, wurde ein Fehler zurückgegeben, und das Objekt hat die vorhandenen Parameter nicht in neue Parameter umgewandelt. Aber jetzt wurden offenbar Änderungen vorgenommen, und jedes Mal, wenn high[0] geändert wird oder ein neuer Balken erscheint, hat high[1] bereits einen anderen Wert, und einer der Parameter ändert sich beim Erstellen eines neuen Rechtecks.

Der Ausweg ist ganz einfach: Prüfen Sie die Existenz des Objekts, bevor Sie es erstellen.

 
STARIJ:

Es bewegt sich



Nein, ich zeichne nichts mit diesem Code

 
Roman Sharanov: Nein, mit diesem Code wird nichts gezeichnet.

Sehen Sie sich meine gesamte Akte an.

Dateien:
PR.mq4  3 kb
 
STARIJ:

Sehen Sie sich meine Akte an


Oh, ich sehe, Sie haben MQL4 :)
Ich habe Arrays nach Zeitreihen erstellt und es hat funktioniert. Ich verstehe immer noch nicht, warum es bei mir nicht funktioniert hat.

 
Boss11: Ich muss die technische Analyse im Nachhinein durchführen, als ob sie jetzt stattfinden würde, und das Ergebnis betrachten. Das heißt, wenn ich gestern eine technische Analyse der MA mit TF 1d um 14.30 Uhr durchgeführt habe und heute die Ergebnisse der Preisbewegung durch die MA von gestern erhalte. Wenn ich heute TF 1440 verwende und vom gestrigen Standpunkt aus betrachte, werden die Daten der technischen Analyse anders sein, und daher sollten auch die Ergebnisse anders ausfallen.

Bei TF 1440 ist alles klar, aber bei M1 gibt es, wie Sie schreiben, eine große Fehlerspanne?

 
STARIJ:

Mit TF 1440 ist alles klar. aber mit M1, wie du geschrieben hast, großer Fehler?


Ich habe es noch nicht mit M1 ausprobiert, aber ich denke, die Fehlerquote wird geringer sein. M1->M5 wird genauer sein als M30-> 1d

 

Bitte teilen Sie mir die Antwort auf eine bestimmte Frage mit. Ich überarbeite den Bollinger.

Ein paar Zeilen geändert, zeichnet keine Balken. Was ist das, Logarithmen?

Volatilitätsformel von https://research-journal.org/economical/analiz-razlichnyx-metodov-ocenki-istoricheskoj-volatilnosti-dlya-opcionnoj-torgovli/

int start()
  {
   int    i,k,counted_bars=IndicatorCounted();
   double deviation;
   double sum,oldval,newres,oldpos;
//----
   if(Bars<=BandsPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=BandsPeriod;i++)
        {
         MovingBuffer[Bars-i]=EMPTY_VALUE;
         UpperBuffer[Bars-i]=EMPTY_VALUE;
         LowerBuffer[Bars-i]=EMPTY_VALUE;
        }
//----
   int limit=Bars-counted_bars;
   if(counted_bars>0) limit++;
   for(i=0; i<limit; i++)
      MovingBuffer[i]=iMA(NULL,0,BandsPeriod,BandsShift,MODE_EMA,PRICE_WEIGHTED,i);
//----
   i=Bars-BandsPeriod+1;
   if(counted_bars>BandsPeriod-1) i=Bars-counted_bars-1;
   while(i>=0)
     {
      sum=0.0;
      k=i+BandsPeriod-1;
      oldval=MovingBuffer[i];
      oldpos=i;
      while(k>=i)
        {
         //newres=Close[k]-oldval;
         //sum+=newres*newres;
          sum+=log(fabs(High[k]/Close[k]))*log(fabs(High[k]/Open[k]))+log(fabs(Low[k]/Close[k]))*log(fabs(Low[k]/Open[k]));
         k--;
        }
      deviation=BandsDeviations*MathSqrt(fabs(sum/BandsPeriod));
      UpperBuffer[i]=oldval+deviation;
      LowerBuffer[i]=oldval-deviation;
      i--;
     }
Dateien:
 

Bitte sagen Sie mir, wie ich ein grafisches Objekt löschen kann. Es gibt vertikale Linien, deren Namen aus Variablenwerten gebildet werden.

string name=="test1"; string Vertline="line_"+name; ObjectCreate(0,VertLine,OBJ_VLINE,0,time,cena); Wie kann ich nur vertikale Linien mit dem Namen test1 löschen?

Grund der Beschwerde: