Rejoignez notre page de fans
- Vues:
- 95
- Note:
- Publié:
-
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.
Traduit du russe par MetaQuotes Ltd.
Code original : https://www.mql5.com/ru/code/61126

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

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

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.

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