Einen neuen Balken anzeigen - Seite 4

 
Donald Gibson:

Erweitert-MQL4?

Nie davon gehört.


Ich auch nicht seit gestern ;) Und der richtige Name scheint"Updated MQL4" zu sein. MQ schreibt:

(...) Ab Build 600 wurde die Programmiersprache MQL4 komplett überarbeitet und auf das Niveau von MQL5 gebracht - jetzt können Sie Handelsroboter in MQL4/5 entwickeln, indem Sie die einheitliche Entwicklungsumgebung MetaEditor, einen einzigen Stil, Bibliotheken und Debugging-Tools verwenden.

(...) Deshalb haben wir beschlossen, die größtmögliche Menge an MQL5-Sprachfunktionen und -Eigenschaften zu implementieren, wobei die MQL4-Funktionalität vollständig erhalten bleibt. Mit anderen Worten: Alle leistungsstarken MQL5-Funktionen, einschließlich ООP und des nativen Code-Compilers, werden in MQL4 verfügbar sein. (...)

Um dies zu erreichen, haben wir einen einheitlichen Compiler entwickelt, der automatisch sowohl MQL4- als auch MQL5-Sprachen unterstützt. (...)

Das Problem in der Definition ist das Wort "Sprachen". Die Sprache ist MQL, so wie C++ eine Sprache ist und Basic eine Sprache ist. Updated-MQL4/MQL5 sind nur plattformspezifische Mods von MQL, nicht mehr und nicht weniger, wobei der Vergleich von (nativem) MQL4 und Updated-MQL4 so ziemlich der gleiche ist wie bei C und C++. Und die Migration von MQL4.com in MQL5.com hat die Verwirrung nur noch perfektioniert. Wie diese Beiträge zeigen, assoziieren die meisten Leute OOP nicht mit MQL4, so wie ich es tat. Für mich war es immer MQL5, das beide Plattformen, MT4 und MT5, unterstützt.

Aber wie auch immer, es funktioniert ziemlich gut und MQLWhatever ist bei weitem die beste Schnittstelle im Vergleich zu all dem anderen beschissenen Zeug herum.

 

@Lorentzos Roussos

Alain can correct me on this but you may find gaps in instances where on the time horizon of a bar there where no ticks , so no bar will be in place

Upppsss ... So ein Geschwätz habe ich noch nicht gesehen. (Was nichts heißen muss).

Ich benutze meinen "NewBar-Indikator", um die Stops automatisch auf dem Hoch oder Tief des vorherigen Balkens zu ziehen.

(Tatsächlich ist es etwas schwieriger, da ich "Innenstaebe und Aussenstaebe" (eng. "inside and outside movements" ???) betrachte. Keine Ahnung, was die richtige Übersetzung ist.

Aber ich werde dies nur in liquiden Märkten verwenden, die mindestens zwanzig - bis zu einigen hundert Ticks pro Minute haben.

Ich glaube nicht, dass ich einen Zeitraum von zehn Minuten ohne einen Tick finden werde.

Wie auch immer, das Programm sollte in der Lage sein, dies zu handhaben.

Vielen Dank!

Willbur

 
Willbur:

@Lorentzos Roussos

Upppsss ... So ein Geschwätz habe ich noch nicht gesehen. (Was nichts heißen muss).

Ich benutze meinen "NewBar-Indikator", um die Stops automatisch auf dem Hoch oder Tief des vorherigen Balkens zu ziehen.

(Tatsächlich ist es etwas schwieriger, da ich "Innenstaebe und Aussenstaebe" (eng. "inside and outside movements" ???) betrachte. Keine Ahnung, was die richtige Übersetzung ist.

Aber ich werde dies nur in liquiden Märkten verwenden, die mindestens zwanzig - bis zu einigen hundert Ticks pro Minute haben.

Ich glaube nicht, dass ich einen Zeitraum von zehn Minuten ohne einen Tick finden werde.

Wie auch immer, das Programm sollte in der Lage sein, dies zu handhaben.

Vielen Dank!

Willbur

Sie verwenden iTime, wenn es keinen neuen Balken gibt, wird er sowieso nicht ausgelöst. Sie sind sicher.
 
Sie benutzen iTime, wenn es keinen neuen Balken gibt, wird er sowieso nicht ausgelöst. Sie sind sicher <br / translate="no">

Was meinen Sie mit "Sie verwenden iTime"? Ich habe es so verstanden, dass "iTime" nur eine Variable in Ihrem Programm ist - Sie können sie "Bert" oder "Clarly" nennen, wenn Sie wollen ?!?

- - - - -

Heute habe ich einige Tests durchgeführt. Und ich habe einige der von Ihnen erwähnten Lücken gefunden.

z.B. S&P500 um 20:34 gibt es einen Balken, für 20:35 und 20:36 bekam ich keine Ticks und keine Balken vom Server (ActiveTrades). Die nächsten Ticks kamen um 20:37 Uhr.

In der Folge gibt es für diese Zeiträume keine Balken im Chart (siehe angehängter M1-Chart).

Ich habe es nicht überprüft, aber ich denke, dass es auch keine Balken innerhalb der CopyRates() Funktion für diese Zeit gibt.



Ich denke, Sie sollten Ihren Code an dieser Stelle überprüfen.

Ich würde vermuten, dass es die ersten drei Ticks des 20:37-Balkens als neue Balken anzeigt.

(TimeCurrent() springt von 20:34 auf 20:37! Sie müssen PeriodeSeconds() dreimal hinzufügen, um dorthin zu gelangen).

void OnTick()  
{
//---   if(TimeCurrent()>=projection)   
    {Print("New Bar "+TimeToString(projection,TIME_DATE|TIME_MINUTES));   
     projection=projection+PeriodSeconds();   
    }

Willbur


 

Hallo zusammen,

Falls jemand noch auf der Suche ist...hier ist ein Ausschnitt aus meinem Code, um sicherzustellen, dass nur ein Handel pro Balken eröffnet wird.

  if (iBars(Symbol(),0) == BarsCurr)DisableTrading = 1;
  
  for(i=0;i<OrdersTotal();i++)
  {
  if (OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == True && OrderMagicNumber() == MagicNumber) DisableTrading = 1;
  }

  for(i=OrdersTotal();i>0;i--)
  {
  if (OrderSelect (i,SELECT_BY_POS,MODE_HISTORY) == True && OrderMagicNumber() == MagicNumber)
  {
  if ((OrderClosePrice() >= Open[0] && OrderClosePrice() <= Close[0]) && (OrderOpenPrice() >= Open[0] && OrderOpenPrice()<= Close[0]))
  {
  DisableTrading = 1;
  }
   }
      }

Das ibars kann durch bars ersetzt werden und das disabletrading = 1 bedeutet, nichts zu tun. Der Bars-Teil kann weiter verstanden werden, indem man das verwendet, was normalerweise gepostet wird. Setzen Sie BarsCurr = 0 in den Initialisierungsteil und BarsCurr = Bars in den Kauf/Verkaufsauftragsteil Ihres Codes.

Ich habe ein Problem, obwohl, ich versuche zu schließen, um durch Signalumkehr zu implementieren... irgendwelche Ideen?

 

Da die Debatte über die Anerkennung von NewBars etwas länger geworden ist, werde ich die Ergebnisse kurz zusammenfassen.

Technisches Umfeld:

Wird vom Server eine Veränderung (neuer Trade oder neue Preisfeststellung) erkannt, sendet der Server ein Signal an das Terminal. Das Terminalprogramm löst die Routine OnTick () aus.

Mit diesem Signal erhalten wir die folgenden Informationen:

Time Current () - die Serverzeit, zu der der Tick gesendet wurde.

Informationen über den letzten Tick - SymbolInfoTick()
- Serverzeit, zu der der Tick aufgetreten ist
- Ask
- Gebot
- Letzter Preis (nicht bei allen Anbietern)
- ein Flag, das anzeigt, was geändert wurde.

Informationen über den aktuellen Takt
- CopyRates()
- "Name" für den Balken, z.B. "10:20:00".
- Öffnen-Hoch-Tief-Schließen

Erkennen eines neuen Bars (z. B. Period = M1)

Denn der Server sendet nur dann ein Signal, wenn sich etwas geändert hat,
können die Balken mit dem Namen "hh.mm:00" später erscheinen als "hh:mm:00".

Dies kann zu besonderen Situationen für Symbole mit geringer Liquidität führen.

Lösungen, die mit der Dauer der Periode arbeiten, erkennen dies nicht:

TimeCurrent() bars "name"
Letzter Tick 10:10:07 10.10:00
Nächster Tick 10:11:30 10:11:00

Nicht damit (Null Ticks in einer Periode):

TimeCurrent() bars "name"
Letzter Tick 10:10:30 10:10:00
Nächster Tick 10:13:40 10:13:00 Der 10:12:00 Balken fehlt!

Sehr selten habe ich Situationen gesehen (bei sehr hoher Last auf dem Server?), in denen die Serverzeit bereits in die nächste Periode umgeschaltet wird, der Balken aber nicht.

TimeCurrent() Balken "Name"
Letzter Tick 10:10:00 10:09:00
Nächster Tick 10:10:00 10:10:00

Schlussfolgerung:

Es ist in Ordnung, mit TimeCurrent() zu arbeiten, um unnötige CopyRates() zu unterdrücken.

Erreicht die TimeCurent() die neue Periode, muss man prüfen, ob der Balken auch umschaltet.

Das bringt mich zurück zum Code, den Alain sehr früh in die Diskussion gebracht hat:

https://www.mql5.com/en/forum/22983

Willbur

Improve your time execution by removing Bars function calls
Improve your time execution by removing Bars function calls
  • www.mql5.com
After a basic profiling I get the following results :.
 

@emeka Mbanefo

in meinem Handbuch wird eine Funktion namens "iBars" nicht erwähnt.

Sind Sie sicher, dass dies MQL5-Code ist?

Willbur

 
Willbur:

@emeka Mbanefo

in meinem Handbuch wird eine Funktion namens "iBars" nicht erwähnt.

Sind Sie sicher, dass dies MQL5-Code ist?

Willbur

Ah, es ist nicht für mql5. es ist für mql4, denke ich. Trotzdem, mit iBars habe ich herumgespielt. Seine Bars als eine allgemeine Funktion, wie ich zuvor erklärt habe.

Ich warte noch auf Hilfe mit dem Signalumkehrcode.

Danke!

 
emeka Mbanefo:

Ah, es ist nicht für mql5. es ist für mql4, denke ich. Trotzdem, die iBars sind meine Spielerei. Seine Bars als eine allgemeine Funktion, wie ich zuvor erklärt habe.

Ich warte immer noch auf Hilfe mit dem Code für die Signalumkehr.

Danke.

  • Bitte nicht entführen andere Thema mit nicht verwandten Inhalt.
  • Dieses Thema ist über mql5, wie bereits erwähnt.
  • In diesem Thema geht es um die Erkennung neuer Bar, nicht um den Handel nur einmal pro Bar.
  • iBars ist unzuverlässig bei der Erkennung eines neuen Balkens.
Indicate a new bar
Indicate a new bar
  • www.mql5.com
Another idea could be the check wether the number of bars has been incremented.