Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Telegram !
Rejoignez notre page de fans
Un script intéressant ?
Poster un lien vers celui-ci -
laisser les autres l'évaluer
Vous avez aimé le script ? Essayez-le dans le terminal MetaTrader 5
Vues:
95
Note:
(6)
Publié:
\MQL5\Scripts\fxsaber\ \MQL5\Include\fxsaber\TicksShort\
Table.mqh (100 KB) afficher
MQL5 Freelance Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance

Cette bibliothèque permet de travailler avec le format de stockage tick, qui présente un bon rapport performance (lecture/écriture)/taille.


Format.

Seuls les champs suivants duMqlTick originalsont stockés:

struct MqlTick
  {
   datetime     time;          // Heure de la dernière mise à jour des prix
   double       bid;           // Prix actuel Offre
   double       ask;           // Prix demandé actuel
   double       last;          // Prix actuel de la dernière transaction (Last)
   ulong        volume;        // Volume pour le prix actuel Dernier
   long         time_msc;      // Heure de la dernière mise à jour des prix en millisecondes
   uint         flags;         // Drapeaux de cochage
   double       volume_real;   // Volume pour le prix actuel Dernier avec une précision accrue
  };


Exemples.

Vous pouvez voir les méthodes de la bibliothèque dans MetaEditor en appuyant sur les touches ALT+M. Vous trouverez ci-dessous quelques exemples de leur utilisation.


Écriture/lecture via un fichier.

#property script_show_inputs

input datetime inFrom = D'2024.12.01';

#include <fxsaber\TicksShort\TicksShort.mqh> // Format de stockage du tic-tac court.

void OnStart()
{        
  MqlTick Ticks[]; // Pour les ticks de la source.

  if (CopyTicksRange(_Symbol, Ticks, COPY_TICKS_ALL,(ulong)inFrom * 1000) > 0)
  {
    FileSave("Ticks.bin", Ticks); // Nous avons sauvegardé les ticks normaux afin de pouvoir comparer la taille des fichiers.
    
    TICKS_SHORT::Save("TicksShort.bin", Ticks); // Sauvegarde des ticks dans un format compressé.

    MqlTick Ticks2[]; // Pour les tiques écrasées.
    TICKS_SHORT::Load("TicksShort.bin", Ticks2); // Téléchargement des tiques à partir d'un format compressé.
    
    Print("Ratio = " + DoubleToString((double)FileGetInteger("Ticks.bin", FILE_SIZE) /
                                      FileGetInteger("TicksShort.bin", FILE_SIZE), 3));
    
    Print("Correct = " + (string)TICKS_SHORT::IsEqual(Ticks, Ticks2)); // Comparé.
  }
}

Le script ci-dessus enregistre les ticks dans un nouveau fichier de format et les charge à partir d'un fichier.


Résultat.

TicksShort_SaveLoad (EURUSD,M1) Ratio = 10.000
TicksShort_SaveLoad (EURUSD,M1) Correct = true

La sortie dans le journal montre que le taux de compression est de 10 fois. Et lorsqu'ils sont décompressés, les ticks correspondent à ceux d'origine.


Performance.

#property script_show_inputs

input datetime inFrom = D'2024.12.01';

#include <fxsaber\TicksShort\TicksShort.mqh> // Format de stockage du tic-tac court.

// Renvoie la taille du tableau en octets.
template <typename T>
ulong GetSize( const T &Array[] ) { return((ulong)sizeof(T) * ArraySize(Array)); }

// Critère de performance du format de compression.
template <typename T1, typename T2>
double Criterion( const T1 &Decompression[], const T2 &Compression[], const ulong Interval )
{
  const double Performance = (double)ArraySize(Decompression) / Interval;
  
  return(Performance * ((double)GetSize(Decompression) / GetSize(Compression)));
}

void OnStart()
{        
  MqlTick Ticks[]; // Pour les ticks de la source.

  if (CopyTicksRange(_Symbol, Ticks, COPY_TICKS_ALL,(ulong)inFrom * 1000) > 0)
  {
    TICK_SHORT Ticks2[]; // Pour les ticks comprimés.
    
    ulong Interval = GetMicrosecondCount();
    TICKS_SHORT::Compress(Ticks, Ticks2); // Pressé.
    Interval = GetMicrosecondCount() - Interval;
    const double Performance = (double)ArraySize(Ticks) / Interval;
    
    Print("Compress performance: " + DoubleToString(Performance, 1) + " Ticks (millions)/sec.");
    Print("Compress performance criterion: " + DoubleToString(Criterion(Ticks, Ticks2, Interval), 1));
    
    MqlTick Ticks3[]; // Pour les tiques écrasées.
    
    ulong Interval2 = GetMicrosecondCount();
    TICKS_SHORT::Decompress(Ticks2, Ticks3); // Détaché.
    Interval2 = GetMicrosecondCount() - Interval2;
    const double Performance2 = (double)ArraySize(Ticks3) / Interval2;
    
    Print("Decompress performance: " + DoubleToString((double)ArraySize(Ticks3) / Interval2, 1) + " Ticks (millions)/sec.");
    Print("Decompress performance criterion: " + DoubleToString(Criterion(Ticks3, Ticks2, Interval2), 1));
    
    Print("Correct = " + (string)TICKS_SHORT::IsEqual(Ticks, Ticks3)); // Comparé.
  }
}

Ce script convertit un tableau source de ticks en un tableau compressé et vice-versa. Les données de performance/efficacité sont affichées.


Résultat.

TicksShort_Performance (EURUSD,M1)      Compress performance: 67.7 Ticks (millions)/sec.
TicksShort_Performance (EURUSD,M1)      Compress performance criterion: 677.1
TicksShort_Performance (EURUSD,M1)      Decompress performance: 42.1 Ticks (millions)/sec.
TicksShort_Performance (EURUSD,M1)      Decompress performance criterion: 420.9
TicksShort_Performance (EURUSD,M1)      Correct = true

Les écritures et les lectures sont effectuées en préservant les informations d'origine à des vitesses supérieures à 40 millions de ticks par seconde.


Alternatives.

https://www.mql5.com/en/code/30791

Traduit du russe par MetaQuotes Ltd.
Code original : https://www.mql5.com/ru/code/61126

Module de signaux de trading, basé sur l'indicateur T3 Module de signaux de trading, basé sur l'indicateur T3

Le signal d'ouverture de position est le franchissement de la ligne de l'indicateur T3 par le prix.

T3 T3

Moyenne mobile T3 avec lissage exponentiel multiple de la série de prix.

Auto Tp Auto Tp

Set Auto TP and SL : La fonction "Set Auto TP and SL" (Take Profit et Stop Loss) est un outil crucial dans toute stratégie de trading, conçu pour automatiser la gestion du risque et de la récompense. Lorsque cette fonction est activée, chaque position que vous ouvrez comprendra automatiquement un niveau prédéfini de Take Profit et de Stop Loss basé sur vos paramètres personnalisés, tels qu'un nombre spécifique de pips, un pourcentage du solde ou des niveaux techniques. Cela permet non seulement de gagner du temps, mais aussi de protéger vos transactions des mouvements soudains du marché et des prises de décision émotionnelles.

Fibonacci retracement Fibonacci retracement

L'indicateur trace les niveaux de retracement de Fibonacci pour un nombre de barres défini par l'utilisateur.