Merkmale der Sprache mql4, Feinheiten und Techniken - Seite 20

 
fxsaber:

Das wird sie nicht. Der TimeCurrent-Algorithmus ist davon nur indirekt betroffen. Sie können Barzeiten usw. nehmen.

Sie müssen nur das Datum des letzten Sonntags (in der Balkenhistorie) auf irgendeine Weise berechnen - so dass es Balken vor und nach dem Sonntag gibt. Sie können dafür TimeLocal verwenden.

Das Ergebnis ist immer GMT+3, wenn das Datum der Notierung gegen 00:00 Uhr liegt (Non-Stop-Sitzungen), oder GMT+3+N - wobei N die Anzahl der Stunden von Sitzungsschluss bis Mitternacht oder von Mitternacht bis Öffnung ist. Was hat das mit der Zeitzone der Zitate zu tun?

 
Ivan Titov:

Das Ergebnis ist immer GMT+3, wenn es Anführungszeichen um 00:00 Uhr gibt (24-Stunden-Sitzungen), oder GMT+3+N - wobei N die Anzahl der Stunden von Sitzungsschluss bis Mitternacht oder von Mitternacht bis Öffnung ist. Was hat das mit der Zeitzone der Anführungszeichen zu tun?

Ich kann mich an dieses Thema überhaupt nicht erinnern, daher kann ich die Frage nicht beantworten. Wenn es irgendeine Ungereimtheit gibt, sollten Sie damit beginnen, sie zu beweisen.

 
fxsaber:

Ich erinnere mich überhaupt nicht an dieses Thema und kann daher die Frage nicht beantworten. Wenn es irgendeine Ungereimtheit gibt, dann sollten Sie sie zunächst einmal nachweisen.

In diesem Code auf dem BCS-Terminal (Symbol ED-9.19) gibt die FunktionTimeServerGMT() die Zeit 2019.08.11 22:48:55 zurück, wenn TimeCurrent() 2019.08.12 11:48:55 lautet.

 
Ivan Titov:

Nach diesem Code auf dem BCS-Terminal (Symbol ED-9.19) gibt die Funktion TimeServerGMT() die Zeit 2019.08.11 22:48:55 zurück, wenn TimeCurrent() 2019.08.12 11:48:55 ist

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Merkmale der Sprache mql4, Feinheiten und Tricks

fxsaber, 2018.03.29 14:32

// Работает для FOREX-символов, когда M1-история доступна за ближайшую неделю

Ich habe diesen Kommentar im Code nicht beachtet.

 
fxsaber:

Ich habe diesen Kommentar im Code nicht beachtet.

Wollen Sie damit sagen, dass es nicht funktioniert, wenn keine Forex-Zeichen in der Geschichte vorhanden sind?

Auch hier ist ein Beispiel für Forex auf Alpari-Demo EURUSD,H1 im Tester:

Für 2019.02.19 14:00:00 Rückgabe 2019.02.19 11:00:00

Für 2019.06.19 14:00:00-Rückkehr 2019.06.19 11:00:00

Im Winter sollte es jedoch GMT+2 und im Sommer GMT+3 (EET) sein.

 
Ivan Titov:

Wollen Sie damit sagen, dass es nicht funktioniert, wenn Nicht-Forex-Charaktere einen Verlauf zur Verfügung haben?

Das weiß ich nicht mehr. Aber es wurde wahrscheinlich aus einem bestimmten Grund geschrieben.


Es ist wichtig zu wissen, wofür der GMT-Offset verwendet wird. Vielleicht ist meine Sichtweise dieses Wertes zu eng gefasst, aber ich sehe seinen Nutzen nur in einem Punkt - in der Möglichkeit, verschiedene Preis-GP miteinander zu synchronisieren.

Ich sehe keine anderen Gründe. Diese Funktionen müssen also in der Lage sein, z.B. EURUSD bei verschiedenen Brokern (mit unterschiedlicher GMT-Verschiebung) zu synchronisieren. Nur wenn dies nicht geschieht, liegt ein Fehler vor.

 
fxsaber:

Es ist wichtig zu wissen, wozu die GMT-Verschiebung dient. Vielleicht ist meine Sichtweise dieses Wertes zu eng, aber ich sehe seinen Nutzen nur in einem Punkt - der Möglichkeit, die verschiedenen Preis-GP miteinander zu synchronisieren.

Ich sehe keine anderen Gründe. Diese Funktionen müssen also in der Lage sein, z.B. EURUSD bei verschiedenen Brokern (mit unterschiedlicher GMT-Verschiebung) zu synchronisieren. Nur wenn dies nicht geschieht, liegt ein Fehler vor.

Oder ein Preis BP mit einigen Nachrichten BP. Dann wird der Trick nicht funktionieren?

 
Andrey Khatimlianskii:

Oder ein Preis BP mit einer Art von Nachrichten. Wird der Trick dann scheitern?

Zunächst werden die beiden Devisensymbole der verschiedenen Quellen synchronisiert. Danach wird die Voreingenommenheit des einen gegenüber dem anderen deutlich. Auf der Grundlage dieser Daten werden die übrigen Symbole

dieser Quellen.

Die Synchronisierung mit dem Kalender sollte überprüft werden. Nehmen Sie die Nachrichten im Winter und im Sommer. Und sehen Sie, ob es übereinstimmt oder nicht.

 
Kommentare, die sich nicht auf dieses Thema beziehen, wurden nach "Fragen von Neulingen zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes" verschoben.
 

Rentabilitätsberechnung.

// Вычисляет профитность на истории не пересекающихся закрытых позиций.
bool GetSumGain( const double Risk, double &SumGain, double &MaxDD, double &RF, const string Symb, const int Magic = -1 )
{
  bool Res = true;
  const double Leverage = Risk * 100;  
      
  SumGain = 1;
  MaxDD = 0;
  RF = 1;

  double MaxGain = SumGain;
  double DDGain = SumGain;
    
  for (int i = OrdersHistoryTotal() - 1; (i >= 0) && (Res = (SumGain > 0)); i--)
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderType() <= OP_SELL) &&
        (OrderSymbol() == Symb) && ((Magic == -1) || (OrderMagicNumber() == Magic)))        
    {
      SumGain *= 1 - Leverage * ((OrderType() << 1) - 1) * (1 - OrderOpenPrice() / OrderClosePrice());
      
      if (SumGain > MaxGain)
        MaxGain = SumGain;
      else if (1 - SumGain / MaxGain > MaxDD)
      {
        MaxDD = 1 - SumGain / MaxGain;
        
        DDGain = SumGain;
      }
    }
    
  RF = SumGain / DDGain;
      
  return(Res);
}


Die Anwendung

#property strict
#property  show_inputs

input int MagicNumber = 1; // Для какого мэджика вычислить профитность?

#define  D(A) DoubleToString(A, 2)

void OnStart()
{
  for (int i = 1; i <= 20; i++)
  {
    double SumGain, MaxDD, RF;    
    const double Risk = i * 0.1;
    
    if (GetSumGain(Risk, SumGain, MaxDD, RF, _Symbol, MagicNumber))   
      Print((string)MagicNumber + ": при риске " + D(Risk) +
                                  " увеличение было бы в " + D(SumGain) + " раза" +
                                  " с максимальной относительной просадкой по балансу " + D(MaxDD) + 
                                  ", фактор восстановления = " + D(RF));   
  }
       
}


Ergebnis

1: при риске 0.30 увеличение было бы в 2.16 раза с максимальной относительной просадкой по балансу 0.19, фактор восстановления = 2.01
1: при риске 0.20 увеличение было бы в 1.68 раза с максимальной относительной просадкой по балансу 0.13, фактор восстановления = 1.60
1: при риске 0.10 увеличение было бы в 1.30 раза с максимальной относительной просадкой по балансу 0.07, фактор восстановления = 1.27