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

 
Alexey Viktorov:

Artyom, ich habe meine Antwort nicht mit den Worten eingeleitet


Die Parabel hat eine strenge Alternation, zwei Signale in einer Richtung, auch auf verschiedenen Balken, sind unmöglich. Und dafür muss man gar nichts erfinden, es klappert nicht einmal bei Nullbar, wie der MA.

Klappern - das habe ich schon mehr als einmal festgestellt. Vielleicht hat sich seither etwas geändert, aber der Punkt auf dem Null-Balken kann verschwinden - er war es.

Ich gehe wie üblich von der Situation aus, dass man später den Indikator gegen einen anderen austauschen kann - und dieser Codeblock wird schon selbständig funktionieren - Gewohnheit ...

 
Artyom Trishkin:
Würde es helfen? Ich habe dort eine Vorlage gepostet, aus der Sie sich das machen können, was Sie wollen.

Danke, ich habe es grob angewandt, aber es fühlt sich immer noch so an, als ob es manchmal SL sofort ändert, wenn ein Handel eröffnet wird.
 
AlGuru:

Danke, ich habe es annähernd angewandt, aber ich habe immer noch das Gefühl, dass sich der SL manchmal sofort ändert, wenn ein Handel eröffnet wird.
Dann müssen Sie SL-Werte abwickeln und Print() auch in das Schleppnetz einfügen, damit es über seine Arbeit und die erreichten Werte berichtet - sonst ist das Gefühl nur ein Gefühl ;)
 
Es ist eine Frage aufgetaucht, Leute! Gibt es eine Begrenzung für die Anzahl der Ziffern einer magischen Zahl? Wie viele Ziffern sollten es sein?
 
Rustam Bikbulatov:
Hier ist eine Frage an euch! Ist die Anzahl der Ziffern der magischen Zahl begrenzt? Wie viele Ziffern sollten es sein?


Eine Magie wird in der Regel durch eine Ganzzahl vom Typ int definiert.

int

Der Ganzzahltyp int hat eine Größe von 4 Byte (32 Bit). Der Minimalwert ist -2.147.483.648, der Maximalwert ist 2.147.483.647.

Zum Beispiel so.

 
Alekseu Fedotov:


Magik wird in der Regel durch den Ganzzahltyp int definiert.

int

Der Ganzzahltyp int hat eine Größe von 4 Byte (32 Bit). Der Minimalwert ist -2.147.483.648, der Maximalwert ist 2.147.483.647.

Zum Beispiel so.


Herzlichen Dank!
 

Hallo zusammen, ich habe einen EA geschrieben und kann den Code nicht verstehen. Die Funktion muss bei jedem Tick und jeder Sekunde des Servers ausgeführt werden. Ich habe gerade meine Funktion 2 mal aufgerufen, durchOnTick und dann durchOnTimer scheint alles richtig gemacht zu haben, aber es fehlt immer noch oft eine Sekunde und deshalb funktioniert manchmal nicht im richtigen Moment. Hilfe, wer weiß, wäre sehr dankbar). Vielleicht wegen einer Verbindungsunterbrechung mit dem Server nicht mehr funktioniert? Ist es möglich, es jede Sekunde laufen zu lassen, auch wenn es eine Unterbrechung der Verbindung gibt, und die Sekunden streng mit der Serverzeit synchronisiert wurden?


int OnInit()

  {

   EventSetTimer(1);

   return(INIT_SUCCEEDED);

  }

void OnTick()

{

Clicker (); //-- старт каждый тик

}

void OnTimer()

{

Clicker (); //-- старт каждую секунду

}

void Clicker()

  {

//--- тут идёт порядка 30 строк кода, вырезал чтобы никого не грузить

   Comment("Sek = " + (Seconds()));

   return;                                      // Выход из start()  

  }

 
Meine Freunde, bitte helfen Sie einem Anfänger MQL4 Programmierer mit einigen Ratschlägen.
Ich habe einen Code geschrieben, der den maximalen Eröffnungskurs der Basis für die letzten n Balken ermitteln sollte, aber aus irgendeinem Grund betrachtet der EA den maximalen Eröffnungskurs aller Balken im Diagramm.

void OnTick()
{
   for (int i = 1; i <= BarTotal; i++)
   {
      double High_Open = iOpen(Symbol(), PERIOD_H1, i); 
      if (High_Open >= Current_High)
      {
         Current_High = High_Open;
         Print (Current_High); 
      }
   }
}

Dankeschön)

 
ivan-baaton:
Freunde, bitte helfen Sie einem Anfänger MQL4 Programmierer mit einigen Ratschlägen.
Ich habe einen Code geschrieben, der den maximalen Eröffnungskurs der Basis für die letzten n Balken ermitteln sollte, aber der EA berücksichtigt aus irgendeinem Grund den maximalen Eröffnungskurs aller Balken im Diagramm.

...

Dankeschön)

Versuchen Sie eine Funktion wie diese:

//+------------------------------------------------------------------+
double GetMaxOpen(const string symbol_name,const ENUM_TIMEFRAMES timeframe,uint start_pos,const uint count){
   double array[];
   ResetLastError();
   if(CopyOpen(symbol_name,timeframe,start_pos,count,array)==count) return(array[ArrayMaximum(array)]);
   Print(__FUNCTION__," > Ошибка копирования в массив: ",GetLastError());
   return(WRONG_VALUE);
}
//+------------------------------------------------------------------+

Ich habe sie mir nicht angesehen, sondern praktisch selbst geschrieben, so dass ich etwas übersehen haben könnte.

 

Ich habe meinen Fehler verstanden, aber ich habe nicht verstanden, wie ich ihn lösen kann. Die Aufgabe wird normalerweise jede Sekunde gestartet, aber die Zeit ab dem Beginn der aktuellen Kerze wird nicht korrekt gezählt.

Die Funktion Seconds() gibt die Sekunden aus den Daten des letzten bekannten Ticksaus, aber ich muss irgendwie die tatsächliche Anzahl der Sekunden seit der Eröffnung der Minutenkerze zum Zeitpunkt des Funktionsaufrufs zählen, selbst wenn es in den letzten paar Sekunden überhaupt keine Ticks gab.

ZeitSekunden (TimeLocal()) oder ( TimeLocal() - Time[0]) funktioniert ebenfalls nicht, da die lokale Zeit vom Server um mehrere Sekunden abweichen kann. Wie ist das Problem zu lösen?