Skripte: ThirdPartyTicks - Seite 2

 
Maxim Dmitrievsky:

Ich habe nur laut gedacht, sorry, ich kann frühere Beiträge löschen, sollte ich das tun? )

Ich kämpfe nicht für die Reinheit der Ränge, lass sie leben. Wenn du etwas über den Werkzeugkasten hast, schreibe.

Für MO-Neulinge würde ich als erstes einen Leistungsvergleich mit anderen Quellen anstellen.

Und für die mehr bodenständigen - Tester.


ZЫ Schlagen Sie den "Kameraden im Laden" vor.

Машинное обучение в трейдинге: теория и практика (торговля и не только)
Машинное обучение в трейдинге: теория и практика (торговля и не только)
  • 2016.05.26
  • www.mql5.com
Добрый день всем, Знаю, что есть на форуме энтузиасты machine learning и статистики...
[Gelöscht]  
fxsaber:

Ich kämpfe nicht für die Reinheit der Ränge, sondern lasse sie leben. Wenn Sie etwas über den Werkzeugkasten haben, schreiben Sie mir.

Für MO-Fremde würde ich als erstes vergleichende Merkmale mit anderen Quellen durchführen.

Und für die mehr bodenständigen - Tester.


ZY Vorschlag an "Mitstreiter".

unwahrscheinlich, dass von jemandem außer mir wahrgenommen werden, bis ich sie auf meine Finger zeigen, aber ich schrieb :)

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Bibliotheken: Symbol

fxsaber, 2018.04.07 22:37

Gleichzeitig auch ein kurzer Test dieser Implementierung (nur Bar Spread anders gezählt)

Es werden zwei Modi verglichen: "Alle Ticks" und "OHLC M1".


Alle Ticks

final balance 10006150.00 EUR
TESTER4_Censored,M1: 6576734 ticks, 60353 bars generated. Test passed in 0:00:04.587 (including ticks preprocessing 0:00:00.343).
394 Mb memory used including 27 Mb of history data, 128 Mb of tick data


OHLC M1

final balance 10006119.00 EUR
TESTER_Censored,M1: 240366 ticks, 60353 bars generated. Test passed in 0:00:00.359 (including ticks preprocessing 0:00:00.031).
306 Mb memory used including 27 Mb of history data, 64 Mb of tick data


Backtest-Qualität ist gleich, die Performance der zweiten Variante in einem Durchgang ist 12 mal höher.

 
Исторически сложилось, что для MetaTrader 4 пользуются популярностью сторонние приложения, позволяющие получать тиковую историю из различных источников. Как правило, ее используют в Тестере Стратегий как полигон для проверки советников, а также для исследований (машинное обучение и т.д.). Некоторые источники котировок в обсуждениях стали почти стандартом при поиске "грааля".
Ein einfaches Beispiel, das zeigt, dass so viele Menschen auf der Suche nach einem funktionierenden TC unter Unsinn leiden. Vor allem die Fans des maschinellen Lernens.

Lassen wir die EA-Optimierung (nach echten Ticks) in der ersten Aprilwoche im Modus "Alle im Market Watch-Fenster ausgewählten Symbole" laufen

#include <fxsaber\ThirdPartyTicks\Data.mqh>

input double inCommissionProcent = 0.002;
sinput bool inLog = true;
sinput int inOnTester = 0;

#define  RESERVE 100000

// Potenzieller Gewinn in relativen und absoluten Werten (Pips)
class MAXPROFIT : public DATA<double>
{
private:    
  bool FlagUP;
  double MinMax;

  const double MarkupAsk;  
  const double MarkupBid;

  void SetMarkup( MqlTick &Tick ) const
  {
    Tick.bid *= this.MarkupBid;
    Tick.ask *= this.MarkupAsk;
    
    return;
  }
  
  static void MathLog( MqlTick &Tick )
  {
    Tick.bid = ::MathLog(Tick.bid);
    Tick.ask = ::MathLog(Tick.ask);
    
    return;
  }
  
  double MathRelative( const double Value ) const
  {
    return(this.Relative ? ::MathExp(Value) : Value);
  }
  
public:  
  const bool Relative;
  
  MAXPROFIT( const double Commission = 0, const bool inRelative = false ) : FlagUP(true), MinMax(-DBL_MAX), Relative(inRelative),
                                                                            MarkupBid(1 - Commission), MarkupAsk(1 + Commission)
  {
  }
  
  void AddTick( MqlTick &Tick )
  {
    this.SetMarkup(Tick);
    
    if (this.Relative)
      MAXPROFIT::MathLog(Tick);
    
    if (this.FlagUP)
    {
      if (Tick.bid > this.MinMax)
        this.MinMax = Tick.bid;
      else if (Tick.ask < this.MinMax)
      {
        this.Add(this.MinMax, RESERVE);
        
        this.MinMax = Tick.ask;
        this.FlagUP = false;
      }
    }
    else
    {
      if (Tick.ask < this.MinMax)
        this.MinMax = Tick.ask;
      else if (Tick.bid > this.MinMax)
      {
        this.Add(this.MinMax, RESERVE);
        
        this.MinMax = Tick.bid;
        this.FlagUP = true;
      }
    }
    
    return;
  }
  
  double GetProfit() const
  {
    double Res = 0;
    
    const uint Size = this.GetAmount();
    
    for (uint i = 1; i < Size; i++)
      Res += this.MathRelative(::MathAbs(this.Data[i] - this.Data[i - 1]));
      
    if (Size)
      Res += this.MathRelative(::MathAbs(this.MinMax - this.Data[Size - 1]));
      
    return(Res);
  }
};

MAXPROFIT MaxProfit(inCommissionProcent / 100, inLog);

void OnTick()
{  
  MqlTick Tick;
  
  if (SymbolInfoTick(_Symbol, Tick))
    MaxProfit.AddTick(Tick);
}

double OnTester()
{  
  switch (inOnTester)
  {
  case 0:
    return(MaxProfit.Relative ? MaxProfit.GetProfit() : (int)(MaxProfit.GetProfit() / _Point + 0.1));
  case 1:
    return(MaxProfit.GetAmount());
  case 2:
    return((MaxProfit.Relative ? MaxProfit.GetProfit() : (int)(MaxProfit.GetProfit() / _Point + 0.1)) / MaxProfit.GetAmount());
  }
  
  return(0);
}


Ergebnis

Der numerische Wert ist der maximal mögliche Gewinn aus der Geschichte (einschließlich Provision).

Auf dem Screenshot ist EURUSD hervorgehoben, das von MQ-Demo übernommen wurde, die anderen Symbole sind ThirdPartyTicks. Wir können sehen, dass EURUSD 8878.74 hat, während sein ThirdParty-Namensvetter 15134.94 hat. Das bedeutet, dass jeder TS auf EURUSD weniger Gewinn als auf seinem Namensvetter-Symbol zeigt.

Es stellt sich heraus, dass jeder, der den gleichen MO auf MQ-Demo EURUSD durchführt, eine ganze Schicht möglicher profitabler TS verpasst. Und er wird das FOREX-Symbol stark unterschätzen.


Ganz oben steht GBPAUD. Sein Niveau zeigt, dass es sehr einfach ist, einen Pipsaristen zu schreiben, der im Tester bei perfekter Ausführung Platz auf OOS zeigt.

Es ist nicht die Demo, die die Illusion des Grals brechen wird, weil die Demo auch ein perfektes Ergebnis zeigen wird. Aber, natürlich, die reale.


Zunächst einmal wird die Kommission stören, weil die Erwartung eines Piper niedrig ist ~ 8 Pips (* Tausende von Geschäften pro Woche). Aber was noch schlimmer ist, es wird das Ergebnis der Ausführung verzerren.

Im Falle einer Umsetzung durch die Märkte, werden wir eine Menge negativer Slippages bekommen, die zusammen mit der Kommission die matte Erwartung abdecken werden. Und es wird einen Abfluss geben.

Im Falle der Realisierung durch Limit-Order gibt es keine negativen Slippages (manchmal gibt es positive Slippages), aber wir werden durch sehr häufige Re-Jackets von Orders ruiniert, wenn sie einfach nicht ausgeführt werden können. Daher wird eine große Anzahl profitabler Trades, die auf derselben Demo gewesen wären, einfach ignoriert werden. Und das wird wieder zu einem Abfluss führen. Wenn es sich nicht um Forex, sondern um eine Börse handeln würde, wäre die Situation mit der Ausführung sicherlich viel besser.


Die Schlussfolgerung aus diesem einfachen Beispiel lässt sich wohl trotzdem ziehen. Bevor man einen TS schreibt, sollte man die besten Handelsbedingungen (Kurse) nicht nur nach der Quelle der Kurse (Broker), sondern auch nach dem Symbol auswählen. Dieser EA kann dabei ganz klar helfen. Mit dieser Methodik können Sie einen Broker im MT5 und dann einen anderen überprüfen. Und sofort verstehen, wo und mit welchem Symbol ein TS profitabler zu arbeiten ist.

[Gelöscht]  

Niemand tut dies, weil solche Tick-Strategien von den Brokern leicht abgewürgt werden

Es ist klar, dass niemand die Kurse der Demo-Metaquotes testet, sondern die Kurse des Brokers, bei dem sie handeln werden.

Und was die MO damit zu tun hat, ist immer noch nicht klar :)

 
Maxim Dmitrievsky:

Niemand tut das, denn solche Tick-Strategien werden von Brokern leicht abgewürgt.

Ich glaube nicht, dass wir hier über tick-basierte TSs gesprochen haben. Eine niedrige Erwartung ist kein Pipsing.

Es ist klar, dass niemand die Kurse von Demo-Metaquotes testet, sondern die Kurse des Brokers, bei dem sie handeln werden.

MQ-Demo war zum Beispiel. Was ist das Argument bei der Auswahl eines dts, dass die Suche nach TS darauf geht?

Und was der MO damit zu tun hat, ist immer noch nicht klar :)

Es sollte beachtet werden, dass ein vernünftiges und recherchiertes Objekt zuerst genommen wird, und nicht irgendein AUDCAD eines beliebigen Brokerhauses.

[Gelöscht]  
fxsaber:

Ich glaube nicht, dass hier von Tick-TS die Rede war. Niedrige mat. Erwartung ist nicht pipsing.

MQ-Demo war zum Beispiel. Was spricht bei der Auswahl eines Brokerhauses dafür, dass die Suche nach TS auf diesem durchgeführt wird?

Es sollte beachtet werden, dass zuerst ein vernünftiges und recherchiertes Objekt genommen wird, nicht irgendein AUDCAD von einem beliebigen Brokerhaus.

Normalerweise werden Strategien nur zu Eröffnungskursen genommen, Ticks beeinflussen sie überhaupt nicht. Dann spielt es keine Rolle, welcher Broker

 
Maxim Dmitrievsky:

Normalerweise werden Strategien nur zu Eröffnungskursen umgesetzt, Ticks haben keinen Einfluss. Dann spielt es keine Rolle, welcher Broker

Man kann auch H1 oder besser D1 nehmen, um völlig unabhängig zu werden. Im Allgemeinen, seltsame Jungs.

[Gelöscht]  
fxsaber:

Und man kann auch H1 oder besser noch D1 nehmen, um völlig unabhängig zu werden. Überhaupt, komische Typen.

Nun, auf 1-5 Minuten ist es ok :) Sie können Ihre eigenen TFs machen, dann brauchen Sie gute Ticks, ja.

Übrigens, nach Ihrem Archiv - sie haben LP Admiral Markets, vielleicht macht es Sinn, Kurse direkt von ihnen zu nehmen, es sollte das gleiche sein.

 
Maxim Dmitrievsky:

Nun, bei 1-5 Minuten ist es normal.)

Und wo ist die Grenze, wo es vorher "normal" und danach "nicht normal" ist?