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

 
Vitaly Muzichenko:

Alles oben genannte entspricht dem Code, mit Ausnahme des gelb hervorgehobenen Teils - ich denke, er ist unnötig und nicht ganz korrekt. Ich habe noch nie jemanden zu einer anderen Zeit umschalten sehen, immer zur gleichen Zeit - 22-00 GMT, aber ich könnte mich irren.

Aber oft gesehen unterschiedliche Dauer Rollover, einige 5 Minuten, und andere ein wenig mehr als eine Minute.

---

Überprüfen Sie den Code, ändern Sie vielleicht etwas:

Binden Sie also alles an die GMT-Zeit. Haben Sie den Unterschied von Ortszeit und Serverzeit, und Sie können sofort verstehen, in wie vielen Rollover. Und 5 Minuten oder 1, ich denke, der Unterschied ist nicht signifikant. Nehmen Sie sich für alles 5 Minuten Zeit.

 
Alexey Viktorov:

Binden Sie also alles an die GMT-Zeit. Ermitteln Sie die Differenz zwischen Ortszeit und Serverzeit, und Sie können sofort erkennen, wie lang der Rollover ist. Und ich glaube nicht, dass es einen großen Unterschied macht, ob es 5 oder 1 Minute sind. Nehmen Sie sich für alles 5 Minuten Zeit.

Inwiefern ist Ihre Option besser oder zuverlässiger?

Wenn Sie können, zeigen Sie mir den Code!
 
Vitaly Muzichenko:

Inwiefern ist Ihre besser oder zuverlässiger?

Vielleicht gar nicht. Ich habe Ihre Codes nicht befolgt. Ich sage nur meine Meinung.

 

Vitaly Muzichenko:

Wenn Sie können, zeigen Sie mir den Code!

Tust du nur so?

 
Alexey Viktorov:

Vielleicht ist es gar nichts. Ich habe Ihre Codes nicht befolgt. Ich sage nur meine Meinung.

Hier finden Sie alles in einem Beitrag:

Sie müssen den Spread-Eingang während des Rollover ausblenden, damit der EA nicht mit dem erweiterten Spread handelt.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

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

Vitaly Muzichenko, 2021.02.11 14:04

Ein solcher Code ist mir noch nie begegnet. Irgendwie nie gesehen, dass Rollover war jemand zu einer anderen Zeit, immer alle in ein und demselben - um 22-00 GMT, obwohl ich falsch sein kann.

Aber oft gesehen unterschiedliche Dauer Rollover, einige 5 Minuten, und andere ein wenig mehr als eine Minute.

---

Überprüfen Sie den Code, ändern Sie vielleicht etwas:

//+------------------------------------------------------------------+
void OnTick(void)
{
   int sp = SymbolInfoInteger(Symbol(),SYMBOL_SPREAD);
   static int ts=0;

   if(CheckSpr(sp)) {
      // Здесь код отправки
      Comment( sp,"=",ts++,"=",res );
   } else Comment( "false: ",sp,"=",ts++,"=",res );
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
MqlDateTime dt;
int res=0;
bool CheckSpr(int _sp)
{
  TimeGMT(dt);
  static int ts=0;
  static long tc=0;
   if(dt.hour==22) return(false); // ролловер
   tc++;
   ts += _sp;
   res =ts/tc;
   if(tc>LONG_MAX-1) {
      tc=0;
      ts=0;
   }
   // Comment( res,"=",tc );
   if(tc<500) return(false); // собираем спред на 500 тиках
   return(res>_sp?true:false);
}

 
Vitaly Muzichenko:

Hier ist alles in einer Nachricht:

Wir müssen den Spread-Eintrag während des Rollover ausmerzen, damit der EA nicht mit dem erweiterten Spread handelt.


Kein Handel während einer vollen Stunde?

   if(dt.hour==22) return(false); // ролловер

Oder haben Sie etwas missverstanden?

 
Vitaly Muzichenko:

Hier ist alles in einer Nachricht:

Wir müssen den Spread-Eingang während des Rollover abschirmen, damit der EA nicht mit dem erweiterten Spread handelt.


Verbieten wir nur hypothetisch irgendeine Art von verteiltem Datensatz (Datei, Datenbank) speziell in der Verlängerung?

 
Alexey Viktorov:

Eine ganze Stunde lang kein Handel?

Oder haben Sie etwas missverstanden?

Das stimmt, eine ganze Stunde lang wird die Spanne danach ausgeweitet. Und vor dem Überschlag in 5 Minuten wird er an einigen Stellen auch noch verbreitert.

 
Alexey Viktorov:

Eine ganze Stunde lang kein Handel?

Oder habe ich etwas missverstanden?

Es könnte aber auch so geschrieben werden:

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

   if(CheckSpr(sp)) {
      // Здесь код отправки
      Comment( sp,"=",res );
   } else Comment( "false: ",sp,"=",res );
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
MqlDateTime dt;
int res=0;
bool CheckSpr(int _sp)
{
  static int ts=0;
  static long tc=0;
  TimeGMT(dt);
   if(dt.hour==22 && res<_sp) return(false); // Если 1 час после ролловера спред упадёт до нормального - торгуем
   tc++;
   ts += _sp;
   res =ts/tc;
   if(tc>LONG_MAX-1) {
      tc=0;
      ts=0;
   }
   if(tc<500) return(false);
   return(res>_sp?true:false);
}

Dies sollte korrekt funktionieren.

 
Vitaly Muzichenko:

Sie können es aber auch so verschreiben:

Das sollte funktionieren.

Lustig) Es sollte nicht)

Wenn die Schlacht ist für - Handel mit einem normalen Spread, geben Sie einfach das "Limit" in die Eingabe und ignorieren Sie den Handel, wenn der Spread über dem Limit ist.

Spreads können durch Dillings ohne Rollover gedehnt werden.

Grund der Beschwerde: