Skripte: ThirdPartyTicks

 

ThirdPartyTicks:

Eine Bibliothek für die Arbeit mit einem Tick-Archiv eines Drittanbieters.


Autor: fxsaber

 
Automated-Trading:

ThirdPartyTicks:

Autor: fxsaber

Aber der Strategietester von mt5 kann nicht mit diesen Tickdaten arbeiten - richtig? :(

Würden Sie ein Skript programmieren, das aus den Tickdaten ein künstliches Symbol für MT5 erstellt, so dass dieses künstliche Symbol(e) mit den eigenen lokalen Tickdaten getestet und optimiert werden kann?

== google translate ====>

Aber mt5 strategy tester kann nicht mit Tickdaten arbeiten - richtig? :(

Würden Sie ein Skript programmieren, das ein künstliches Symbol für MT5 aus Tickdaten erstellt, so dass dieses künstliche Symbol bzw. diese künstlichen Symbole mit den eigenen lokalen Tickdaten getestet und optimiert werden können?
 
Carl Schreiber:

Aber der Strategietester von mt5 kann nicht mit diesen Tickdaten arbeiten - richtig? :(

Würden Sie ein Skript programmieren, das ein künstliches Symbol für MT5 aus den Tickdaten erstellt, so dass dieses künstliche Symbol (oder diese künstlichen Symbole) mit den eigenen lokalen Tickdaten getestet und optimiert werden kann?

Dieses Skript erstellt ein benutzerdefiniertes Symbol, das Sie zum Testen im Strategy Tester verwenden können.

 
// https://www.mql5.com/de/code/20225
#include <fxsaber\ThirdPartyTicks\Web.mqh>
#include <fxsaber\ThirdPartyTicks\String.mqh>
#include <fxsaber\ThirdPartyTicks\Data.mqh>

struct SYMBOL_PROFILE 
{
  string Name;
  
  double BuyLots;
  double SellLots;
  
  bool operator ==( const SYMBOL_PROFILE &Value) const
  {
    return(this.Name == Value.Name);
  }
  
  string ToString( void ) const
  {
    return(this.Name + " +" + ::DoubleToString(this.BuyLots, 2) + " -" + ::DoubleToString(this.SellLots, 2));
  }
};

class SYMBOLS_PROFILE : public DATA<SYMBOL_PROFILE >
{
private:
  static const uchar CensoredURL[];
  
public:
  SYMBOLS_PROFILE( const string URL = NULL )
  {
    uchar Bytes[];
    
    if (WEB::Get(Bytes, (URL == NULL) ? ::CharArrayToString(SYMBOLS_PROFILE::CensoredURL) : URL))
    {
      string Str = ::CharArrayToString(Bytes);
      
      STRING::Between(Str, "<tbody>", "</tbody");
      STRING::Between(Str, "<tbody>", "</tbody");
      Str = STRING::Between(Str, "<tbody>", "</tbody");
      
      SYMBOL_PROFILE SymbProfile;
      
      while (::StringLen(Str) > 400)
      {
        SymbProfile.Name = STRING::Between(Str, "<td width=\"10%\">", "</td>");
        SymbProfile.BuyLots = (double)STRING::Between(Str, "<span>", "</span>");
        SymbProfile.SellLots = (double)STRING::Between(Str, "<span>", "</span>");
        
        this.Add(SymbProfile);
      }
    }
  }
  
  string ToString(void ) const
  {
    string Res = NULL;
    
    const uint Size = this.GetAmount();
    
    for (uint i = 0; i < Size; i++)
      Res += this[i].ToString() + "\n";
    
    return(Res);
  }
};

static const uchar SYMBOLS_PROFILE::CensoredURL[] =
{
  0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x72, 0x61, 0x6E, 0x6E, 0x66, 0x6F,
  0x72, 0x65, 0x78, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x72, 0x75, 0x2F, 0x73, 0x68, 0x6F,
  0x77, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x2F
};

// Profil
void OnStart()
{
  SYMBOLS_PROFILE Symbols;
  
  Print(Symbols.ToString());
}


Ergebnis

AUDCAD +0.06 -0.00
AUDCHF +0.02 -0.03
AUDUSD +0.05 -0.04
CADCHF +0.02 -0.03
CHFJPY +0.00 -0.01
DAX30 +0.00 -0.10
DJI30 +0.90 -0.00
EURAUD +0.16 -0.08
EURCAD +0.12 -0.00
EURCHF +0.00 -0.03
EURGBP +1.35 -19.99
EURJPY +0.00 -0.28
EURNZD +0.10 -0.00
EURRUB +0.00 -0.02
EURUSD +0.29 -0.19
GBPAUD +0.04 -0.03
GBPCAD +0.22 -0.54
GBPCHF +0.00 -0.06
GBPNZD +0.00 -0.05
GBPUSD +0.02 -0.02
NZDCAD +0.00 -0.01
NZDUSD +0.00 -0.01
USDCAD +0.09 -0.01
USDCHF +0.05 -0.01
USDJPY +0.15 -0.02
USDRUB +0.00 -0.02
USDZAR +0.00 -0.01
XAGUSD +0.00 -0.01
XAUUSD +0.02 -0.00
XBRUSD +0.00 -0.10
 
Библиотеки: Symbol
Библиотеки: Symbol
  • 2017.10.13
  • www.mql5.com
Symbol: Автор: fxsaber...
 

Bei ThirdPartyTicks-Kursen ohne Deaktivierung der Slippage von Limit-Orders mit Hilfe dieser Bibliothek können wir im Tester folgendes Bild erhalten

final balance 10005004.00 RUR
OnTester result 10004391
2018.04.04 23:59:57   deal #397 balance -613.00 [withdrawal] done
TESTER_Censored,M1: 6268667 ticks, 57486 bars generated. Environment synchronized in 0:00:00.468. Test passed in 0:00:03.416 (including ticks preprocessing 0:00:00.811).
TESTER_Censored,M1: total time from login to stop testing 0:00:03.884 (including 0:00:00.468 for history data synchronization)

D.h. ein Gewinn von 5004 Pips, während 631 Pips (jeder achte Pip) ein "Bonus" des Testers ist, was nicht gut ist.


mit der Deaktivierung der Slippage von Limit-Orders.

final balance 10004391.00 RUR
OnTester result 10004391
TESTER_Censored,M1: 6268667 ticks, 57486 bars generated. Environment synchronized in 0:00:00.031. Test passed in 0:00:03.432 (including ticks preprocessing 0:00:00.827).
TESTER_Censored,M1: total time from login to stop testing 0:00:03.463 (including 0:00:00.031 for history data synchronization)

der "Bonus" ist nicht vorhanden, was nicht irreführend ist.

SlipPage
SlipPage
  • Stimmen: 20
  • 2016.08.25
  • fxsaber
  • www.mql5.com
Проскальзывания при исполнении ордеров вносят несистемные прибыль/убыток. Данный скрипт выводит величины этих проскальзываний в валюте счета. Можно оценить качество исполнения ордеров торговавшей ТС — вклад несистемных проскальзываний в ее мат. ожидание. Тестер в режиме...
[Gelöscht]  

Sie erwähnten die Verwendung von Besetzungszeichen für MO, können Sie das etwas näher erläutern?

Ich verstehe, dass dies in der aktuellen Version Arbitrage ist. Oder gibt es Optionen, um andere Daten zu laden?

Ich bin auch daran interessiert, Daten von einem anderen offenen Echtzeit-Terminal zu laden, wie kann dies durch die Bibliothek korrekt implementiert werden?

 
Maxim Dmitrievsky:

Sie erwähnten die Verwendung von Darstellern für MO, können Sie das etwas näher erläutern?

Ich habe Geschichte für das MoD vorgeschlagen. Ich habe es nicht erklärt - siehe die Beschreibung. Benutzerdefinierte Symbole sind praktisch, weil sie über MQL und im Tester gleichzeitig verwendet werden können.

Ich verstehe, dass in der aktuellen Version ist es Arbitrage. Oder gibt es Varianten zum Laden anderer Daten?

Aktuelle Version von was? Ich selbst sehe keinen Grund, andere Quellen zu verwenden.

auch daran interessiert, das Laden von Daten aus einem anderen offenen Terminal in Echtzeit, wie kann dies mehr richtig durch die Bibliothek implementiert werden?

Eigene Echtzeitdaten sind sehr einfach zu implementieren. Ein Echtzeit-Aktiensymbol (mit automatisch generierter M1- und "Tick"-Historie) ist zum Beispiel in 5-10 Zeilen Code in reinem MQL erstellt.

Ich selbst verwende Customs bisher nur zur Erstellung von TS auf Basis von Tester/Optimiser. Dazu verwende ich dieses Toolkit als Ausgangsmaterial.

Ich beschleunige und passe den Tester/Optimiser mit anderen Tools an - siehe den Beitrag oben.

[Gelöscht]  
fxsaber:

Die aktuelle Version von was? Ich sehe keinen Grund, andere Quellen zu verwenden.

Aktuelle Version - im Sinne der Verwendung von Kursen aus einer Drittquelle, es ist möglich, einige makroökonomische Indikatoren und so weiter hinzuzufügen, aber das ist nur ein Forschungsthema für das Verteidigungsministerium

Aber für Arbitrage (Multi-Währungs-Tests) auf verschiedenen Kursen - sehr interessant, man kann interessante Modelle schreiben, aber auch ein Thema für die Forschung.

Es gibt auch eine Idee, Werte aus beliebigen Verteilungen in ein benutzerdefiniertes Symbol zu übersetzen... aber wie man das weiter anwendet, ist auch ein Thema der Forschung :)

 
Maxim Dmitrievsky:

aktuelle Version - im Sinne der Verwendung von Zitaten einer Drittquelle, es ist möglich, einige makroökonomische Indikatoren usw. hineinzupacken, aber das ist nur ein Forschungsgegenstand für das Verteidigungsministerium.

Aber für Arbitrage (Multi-Währungs-Tests) auf verschiedenen Kursen - sehr interessant, man kann interessante Modelle erstellen, aber das ist auch ein Thema für die Forschung.

Es gibt auch eine Idee, Werte aus beliebigen Verteilungen in ein benutzerdefiniertes Symbol zu übersetzen... aber wie man das weiter anwendet, ist auch ein Thema der Forschung :)

In diesem Thread geht es nicht um Methoden zur Verwendung von benutzerdefinierten Symbolen. Hier geht es nur um eine Drittanbieter-Tickgeschichte in Form eben dieser Symbole.

Und warum genau es gewählt wird - siehe Beschreibung.

[Gelöscht]  
fxsaber:

Dieser Thread ist nicht über Methoden der Verwendung von benutzerdefinierten Symbolen, nachdem alle. Hier ist nur ein Dritter tick Geschichte in Form von diesen sehr Symbole.

Und warum genau es gewählt wird - siehe die Beschreibung.

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