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

 
Boris:

Also... Lesen Sie die Dokumentation (noch einmal).

Frage. Was ist los? Es zählt weder mit CopyTicksRange noch mit CopyTicks.

Sie müssen mehr und mehr und mehr lesen... Lesen Sie, bis Sie lesen, was ich für Sie persönlich aus der Dokumentation kopiert und in fetter roter Schrift markiert habe.

Dies ist unser Forum für Handel, automatisierte Handelssysteme und Strategietests.

Alle Fragen von Neulingen zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes

Alexey Viktorov, 2021.02.09 10:17

Lesen Sie die Dokumentation!!!

Oder wollen Sie, dass die gesamte Dokumentation in Teilen hierher kopiert wird?

Was für ein Ärgernis... die Zitate bleiben nicht haften... ich muss sie duplizieren...

von_msc

[in] Das Datum, ab dem die Zecken angefordert werden. Angegeben in Millisekunden ab dem 01.01.1970. Wird der Parameter from_msc nicht angegeben, werden die Ticks vom Beginn des Verlaufs an zurückgegeben. Ticks mit Zeit >= from_msc werden zurückgegeben.

bis_msc

[in] Datum, an dem die Häkchen angefordert werden. Angegeben in Millisekunden ab dem 01.01.1970. Ticks mit Zeit <= to_msc werden zurückgegeben. Wenn der Parameterto_msc nicht angegeben wird, werden alle Ticks bis zum Ende der Historie angegeben .


 
Boris:

Also... Lesen Sie die Dokumentation (noch einmal).

Frage. Was ist los? Es zählt nicht über CopyTicksRange oder über CopyTicks.

Die Frage, die ich zum Beispiel habe, ich kenne µl5 nicht gut, ist das Wort Datum, nicht Zeit. Und dementsprechend eine Frage, und innerhalb eines Datums welches Alter wird sein?

Und nach einer Andeutung. Wie erhält man die Zeit in Millisekunden?

 
Valeriy Yastremskiy:

Die Frage, die ich habe, ist zum Beispiel, dass ich µl5 nicht sehr gut kenne, es ist das Wort Datum, nicht Zeit. Und dementsprechend lautet die Frage, was ist das Alter innerhalb desselben Datums?

Und nach einer Andeutung. Wie erhält man die Zeit in Millisekunden?

1 Sekunde = 1000 Millisekunden. Und "Datum" impliziert "Datum und Uhrzeit", da der Typ datetime und nicht nur Datum ist.

 
Alexey Viktorov:

Lesen Sie mehr und mehr und mehr... Lesen Sie, bis Sie gelesen haben, was ich persönlich für Sie aus der Dokumentation kopiert und fett rot hervorgehoben habe.

Schade... die Zitate bleiben nicht haften... ich muss sie duplizieren...


Oh, Mann... Ja, nun... Es klappt!

 

FRAGE zu mql4:

Es gibt eine Spread-Einschränkung im Code des EA, der EA ist für mehrere Charts eingestellt.

Es ist nicht ganz korrekt, den durchschnittlichen Spread für ein Paar in die Eingabeparameter einzugeben, und er variiert von einem Handelsschalter zum anderen.

Der durchschnittliche Spread liegt bei 5pp, aber es gibt Momente, in denen er sich für ein paar Minuten auf 12pp ausweitet, ohne dass es sich um einen Rollover handelt.

Wie kann ich dies automatisieren, um den durchschnittlichen Spread zu berechnen und keine Position bei einem erweiterten Spread zu eröffnen?

   MqlRates rates[]; 
   int copied=CopyRates(NULL,PERIOD_M1,0,100,rates); 
   if(copied>0) 
   for(int e = ArraySize(rates)-1; e >=0; e--) {
     Print(e,"=",rates[e].spread); // всегда "0"
   }
 

Hallo, ist es möglich und wie kann man einen Expert Advisor erstellen, der auf dem Algorithmus der Eröffnung und Schließung eines Geschäfts basiert, ohne irgendwelche Indikatoren zu verwenden?

Zum Beispiel, nehmen Sie zwei Linien, eine Trendlinie ist nach oben und die zweite ist auch nach unten, legte sie auf einander, gibt es einen Schnittpunkt zwischen den beiden Linien, nehmen wir an, es ist bei 15-30 in der Zeit, dann, wie die Reihenfolge automatisch zur gleichen Zeit geöffnet, um in eine beliebige Richtung zu starten, wie man den Algorithmus wird diese Punkte zu finden undeine Position zu öffnen? Ich bitte um Klärung und Ihre Meinung.

Können wir einen EA auf der Grundlage eines solchen T3 erstellen?
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением...
 
Vitaly Muzichenko:

FRAGE zu mql4:

Es gibt eine Spread-Einschränkung im Code des EA, der EA ist für mehrere Charts eingestellt.

Es ist nicht ganz korrekt, den durchschnittlichen Spread für ein Paar in die Eingabeparameter einzugeben, und er variiert von einem Handelsschalter zum anderen.

Der durchschnittliche Spread liegt bei 5pp, aber es gibt Momente, in denen er sich für ein paar Minuten auf 12pp ausweitet, ohne dass es sich um einen Rollover handelt.

Wie kann dies automatisiert werden, um den durchschnittlichen Spread zu berechnen und nicht eine Position auf dem breiteren Spread zu eröffnen?

Eine gute Idee ist es, den Spread bei jedem Tick zu beobachten. Nach der Rhetorik und den Problemen zu urteilen, die die Händler mit seinem starken Anstieg auf Loos haben. Meines Erachtens besteht das Problem nicht in einer großen langen Spanne, das ist das geringste Problem, sondern in einer starken Zunahme der großen und kurzen Spanne.

Ich würde mir den in den Symboleigenschaften angegebenen Wert ansehen, ihn als Durchschnittswert nehmen und ihn vernünftig erhöhen, bevor ich Aufträge eröffne. Und wir würden uns auch die Spanne ansehen, um sie zu schließen oder zu ändern. Oder ich würde den durchschnittlichen Spread der letzten 3 bis 10 Ticks beobachten.

 
Valeriy Yastremskiy:

Eine gute Idee ist es, den Spread bei jedem Tick zu beobachten. Nach der Rhetorik und den Problemen zu urteilen, die Händler mit einem starken Anstieg bis hin zum Verlust von Geld haben. Meines Erachtens besteht das Problem nicht in einer großen, langen Spanne, das ist das geringere Problem, sondern in einer starken, großen und kurzen, zunehmenden Spanne.

Ich würde mir den in den Symboleigenschaften angegebenen Wert ansehen, ihn als Durchschnittswert nehmen und ihn vernünftig erhöhen, bevor ich Aufträge eröffne. Und wir würden uns auch die Spanne ansehen, um sie zu schließen oder zu ändern. Oder die Spanne der letzten 3 bis 10 Ticks würde im Durchschnitt überwacht werden.

Gestern gab es etwa 1 Minute (und das sind keine 10 Ticks) eine Spanne von 14 Punkten mit einer durchschnittlichen normalen Spanne von 4 Punkten. Zum Zeitpunkt der erweiterten Ausbreitung ging der Roboter also hinein, um zu kaufen.

10 Zecken sind eindeutig nicht genug

 
Vitaly Muzichenko:

Gestern gab es für etwa 1 Minute (das sind keine 10 Ticks) eine Streuung von ~14pp bei einer durchschnittlichen normalen Streuung von 4pp. Zum Zeitpunkt der erweiterten Ausbreitung ging der Roboter also hinein, um zu kaufen.

10 Zecken sind offensichtlich nicht genug.

Die Aufgabe besteht hier darin, den Beginn und das Ende von Änderungen festzulegen, und zwar in einem kurzen Zeitintervall. D.h., der Durchschnittswert der Spanne sollte von einer Sekunde bis zu 10 Sekunden durch ein gleitendes Fenster festgelegt werden. Sie sollten beobachten, wie viele Ticks pro Sekunde im Durchschnitt auftreten, oder die Ticks 10 Sekunden lang beobachten und den Durchschnitt ermitteln. Ich bevorzuge die erste Option.

 
Valeriy Yastremskiy:

Die Aufgabe besteht darin, den Beginn und das Ende von Änderungen zu erfassen. und die Emissionen einzelner Änderungen. und die Erfassung muss in einem kurzen Zeitraum erfolgen. Der Durchschnittswert der Spanne sollte zwischen einer Sekunde und 10 Sekunden durch ein gleitendes Fenster festgelegt werden. Sie sollten beobachten, wie viele Ticks pro Sekunde im Durchschnitt auftreten, oder die Ticks 10 Sekunden lang beobachten und den Durchschnitt ermitteln. Die erste Variante ist näher an mir dran.

Ich habe das Problem auf diese Weise gelöst:

void OnTick(void)
{
 int sp = SymbolInfoInteger(Symbol(),SYMBOL_SPREAD);

   if(CheckSpr(sp)) {
     // Здесь код отправки
   }
}

//+------------------------------------------------------------------+
bool CheckSpr(int _sp)
{
  static int ts=0, res=0;
  static long tc=0;
   tc++;
   ts += _sp;
   res =ts/tc;
   if(tc>LONG_MAX-1) {
      tc=0;
      ts=0;
   }
   // Comment( res,"=",tc );
   if(tc<500) return(false);
   return(res>_sp?true:false);
}

Das Problem ist, dass es eine große Spanne im Rollover aufzeichnen und damit arbeiten wird.

Ich denke, diese Lösung ist unwirksam, wir müssen die Aufzeichnung von Überschneidungen irgendwie begrenzen, ohne eine zeitliche Begrenzung anzuwenden.