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

 
Mikhail Mishanin:

Wenn wir den "Zeitwert" durch die Differenz zwischen der neuen Zeit und der zuletzt berechneten Zeit ersetzen?

Das heißt, wir werden wissen, dass es eine neue Zeit gibt:

-aus dem neuen Tag

-aus einer neuen Woche

-oder mit einer Differenz von mehr als der angegebenen Zeit.

Ich habe keine Ahnung, wie man das anwendet!


Auf dem Screenshot Rollover und Spread-Erweiterung um 22-00, in den meisten anderen Handel um 00-00, es ist 1 Stunde nach - Spread-Erweiterung.

Wie kann ich programmatisch herausfinden, wann der Rollover ist, ohne das Programm auf die Zeit in den Eingabeparametern zu beschränken?

---

P.S. Dieser Code funktioniert gut, aber nur, wenn er 500 Ticks vor dem Rollover ausgeführt wird.

bool CheckSpr(int _sp)
{
   static int ts=0, res=0;
   static long tc=0;
  // Comment( res,"=",tc );
   if(tc>500 && res*3<_sp) return(false); // если уже собрали 500 тиков и есть средний спред - смотрим на расширенный spr*3
   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);
}
 
Vitaly Muzichenko:

Ich habe keine Ahnung, wie man das anwendet!


Im Screenshot Rollover und Spread-Erweiterung um 22-00, in den meisten anderen Geschäften um 00-00, also 1 Stunde später - Spread-Erweiterung.

Wie kann ich programmatisch herausfinden, wann der Rollover ist, ohne das Programm auf die Zeit in den Eingabeparametern zu beschränken?

---

P.S. Dieser Code verhält sich gut, aber unter der Bedingung, dass er 500 Ticks vor dem Rollover ausgeführt wird

Der Grund für die Ausweitung der Spanne durch den Handel ist die Eröffnung der Handelssitzung, d.h. das "Abladen" einer großen Anzahl von Aufträgen zur Bearbeitung und die Ungewissheit, wie (zu welchem Preis) alles "abgerechnet" wird. Durch den Handel wird der Spread versichert und vergrößert. Sie müssen lediglich den Zeitpunkt des Endes/des Beginns der Handelssitzung verschieben.

 
Mikhail Mishanin:

Der Grund für die Ausweitung der Spanne durch den Handel ist die Eröffnung der Handelssitzung, d. h. eine große Anzahl von Aufträgen, die zur Bearbeitung aufgegeben werden, und somit die Ungewissheit, wie (zu welchem Preis) alles "abgerechnet" wird. Durch den Handel wird der Spread versichert und vergrößert. Sie müssen nur die Zeit zwischen dem Ende und dem Beginn der Handelssitzung einplanen.

Ja, aber das steht nicht in der Spezifikation des Instruments.

Dort ist der Überschlag um 22:00 Uhr.

Und das ist der Rollover bei 00-00.


 
Vitaly Muzichenko:

Ja, aber das steht nicht in der Spezifikation des Tools.

TimeCurrent()-TimeGMT()
 

Hoffentlich wird in der endgültigen Fassung alles berücksichtigt

MqlDateTime dt;
bool CheckSpr(int _sp)
{
  TimeGMT(dt);
  static int ts=0, res=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);
   return(res>_sp?true:false);
}
 
Vitaly Muzichenko:

Hoffentlich werden in der endgültigen Fassung alle

zwei Variablen

datetime daLAST=0;

datetime daOLD=0;


In jeder Funktion, die "handeln" kann, d.h. die Zeit des Ticks ermitteln kann

daOLD = daLAST;

daLAST= "Tick-Zeit"

Wenn ( daLAST - daOLD > "Zeitlücke") - eine neue Sitzung begann, gab es eine Zeitlücke

{

//speichern, verwenden und löschen Sie dies nach Belieben

}

 
Mikhail Mishanin:

zwei Variablen

datetime daLAST=0;

datetime daOLD=0;


In jeder Funktion, die "handeln" kann, d.h. den Zeitpunkt des Ticks ermitteln kann

daOLD = daLAST;

daLAST="tick time"

Wenn ( daLAST - daOLD > "Zeitlücke") - eine neue Sitzung begann, gab es eine Zeitlücke

{

//speichern, verwenden und löschen Sie dies nach Belieben

}

Es gibt einige Paare und Dilemmas, bei denen die asiatische Sitzung bis zu mehreren Minuten keinen Tick hat, mit einer Rollover-Zeit von 21-59 bis 22-01, die schneller ist als die Ankunft des Ticks in Asien.

 
Vitaly Muzichenko:

Es gibt einige Paare und Dillings, bei denen in der asiatischen Session bis zu mehreren Minuten lang kein Tick zu sehen ist, mit einer Rollover-Zeit von 21-59 bis 22-01, d.h. schneller als die Ankunft des Ticks in Asien.

Also zurück zum Anfang.

Was ist das Ziel? Geschäfte mit einem exorbitant ausgeweiteten Spread zu überspringen - richtig?

Dann können wir wahrscheinlich die Zeit ignorieren und die Streuung selbst analysieren.

wenn Ask - Bid > "threshold" - Tracking/Akkumulation aktivieren.

wennAsk - Bid < "Schwelle" - ausschalten oder auch akkumulieren.

Solch eine "Kuh" scheint auch für mich nützlich zu sein, ich werde so etwas sammeln, es wird Statistiken sammeln...


Und wenn es einige Minuten lang keinen neuen Tick gibt, ist es sinnvoller, den oder die ersten Ticks im Handel zu überspringen.

Die Statistiken sollten für bestimmte Paare und Dillinge erstellt werden, da jede "Krümmung" sowohl in "-" als auch in "+" funktionieren kann.

 
Mikhail Mishanin:

Dann fangen wir wieder von vorne an.

Was ist das Ziel? Geschäfte mit einem exorbitant ausgeweiteten Spread zu überspringen - richtig?

Dann können wir wahrscheinlich die Zeit ignorieren und die Streuung selbst analysieren.

wenn Ask - Bid > "threshold" - Tracking/Akkumulation aktivieren.

wennAsk - Bid < "Schwelle" - ausschalten oder auch akkumulieren.

Solch eine "Kuh" scheint auch für mich nützlich zu sein, ich werde so etwas sammeln, es wird Statistiken sammeln...


Und wenn es einige Minuten lang keinen neuen Tick gibt, ist es sinnvoller, den oder die ersten Ticks im Handel zu überspringen.

Die Statistiken sollten für bestimmte Paare und Dillinge erstellt werden, da jede "Krümmung" sowohl in "-" als auch in "+" funktionieren kann.

Alles, was Sie beschrieben haben, macht den obigen Code aus, mit Ausnahme von gelb - ich denke, es ist redundant und nicht ganz korrekt. Irgendwie nie getroffen, dass Rollover war jemand zu einer anderen Zeit, immer alle in ein und demselben - um 22-00 GMT, obwohl ich mich irren kann.

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

---

Prüfen Sie den Code, vielleicht können Sie etwas ändern:

//+------------------------------------------------------------------+
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);
   return(res>_sp?true:false);
}
 
Vitaly Muzichenko:

Alle sind zur gleichen Zeit da - 22 Uhr GMT, aber ich könnte mich irren.

Sie haben nicht unrecht.

Grund der Beschwerde: