無料でロボットをダウンロードする方法を見る
Facebook上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
ビュー:
156
評価:
(6)
パブリッシュ済み:
\MQL5\Scripts\fxsaber\ \MQL5\Include\fxsaber\TicksShort\
Table.mqh (100 KB) ビュー
MQL5フリーランス このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

このライブラリは、サイズに対するパフォーマンス(読み書き)の比率が良いティックストレージフォーマットでの作業を実装しています。



オリジナルのMqlTickの以下のフィールドのみが格納されます

struct MqlTick
  {
   datetime     time;          // 価格の最終更新時刻
   double       bid;           // 現在の価格 入札
   double       ask;           // 現在の売値
   double       last;          // 最後の取引の現在価格 (Last)
   ulong        volume;        // 現在価格の出来高 Last
   long         time_msc;      // 価格の最終更新時刻(ミリ秒単位
   uint         flags;         // ティックフラグ
   double       volume_real;   // 現在の価格の出来高 精度を高めた最終価格
  };


例。

ホットキーALT+MでMetaEditorのライブラリメソッドを見ることができます。以下はその使用例である。


ファイル経由での書き込み/読み込み

#property script_show_inputs

input datetime inFrom = D'2024.12.01';

#include <fxsaber\TicksShort\TicksShort.mqh> // 短いティックの保存形式。

void OnStart()
{        
  MqlTick Ticks[]; // ソースティック用。

  if (CopyTicksRange(_Symbol, Ticks, COPY_TICKS_ALL,(ulong)inFrom * 1000) > 0)
  {
    FileSave("Ticks.bin", Ticks); // ファイルサイズを比較できるように、通常の刻みを保存した。
    
    TICKS_SHORT::Save("TicksShort.bin", Ticks); // 刻みを圧縮して保存する。

    MqlTick Ticks2[]; // ダニをつぶす。
    TICKS_SHORT::Load("TicksShort.bin", Ticks2); // 刻み目を圧縮形式からダウンロード。
    
    Print("Ratio = " + DoubleToString((double)FileGetInteger("Ticks.bin", FILE_SIZE) /
                                      FileGetInteger("TicksShort.bin", FILE_SIZE), 3));
    
    Print("Correct = " + (string)TICKS_SHORT::IsEqual(Ticks, Ticks2)); // 比較される。
  }
}

上記のスクリプトは、ティックを新しいフォーマットファイルに保存し、ファイルからロードします。


結果は以下の通り。

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

ログへの出力は、圧縮率が10倍であることを示している。また、圧縮を解除すると、刻みは元の刻みと一致する。



#property script_show_inputs

input datetime inFrom = D'2024.12.01';

#include <fxsaber\TicksShort\TicksShort.mqh> // 短いティックの保存形式。

// 配列のサイズをバイト数で返す。
template <typename T>
ulong GetSize( const T &Array[] ) { return((ulong)sizeof(T) * ArraySize(Array)); }

// 圧縮フォーマットの性能基準。
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[]; // ソースティック用。

  if (CopyTicksRange(_Symbol, Ticks, COPY_TICKS_ALL,(ulong)inFrom * 1000) > 0)
  {
    TICK_SHORT Ticks2[]; // 刻みを圧縮する。
    
    ulong Interval = GetMicrosecondCount();
    TICKS_SHORT::Compress(Ticks, Ticks2); // スクイーズ
    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[]; // ダニをつぶす。
    
    ulong Interval2 = GetMicrosecondCount();
    TICKS_SHORT::Decompress(Ticks2, Ticks3); // 握りを解く。
    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)); // 比較される。
  }
}

このスクリプトは、ティックのソース配列を圧縮配列に変換して戻します。パフォーマンス/効率データが出力されます。


結果。

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

毎秒4000万ティック以上の速度で、元の情報を保持したまま書き込みと読み出しが実行される。



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

MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/61126

Symbol Swap Panel Utility Symbol Swap Panel Utility

シンボル交換パネル:チャート上のアクティブなシンボルを簡単に切り替えると同時に、新しいシンボルを Market Watch に追加できます。このツールは、シームレスな統合とリアルタイムのマーケットデータへのアクセスを保証し、取引ワークフローを最適化します。

Checking the server time changes due to the daylight saving time (DST) changeover Checking the server time changes due to the daylight saving time (DST) changeover

残念なことに、一部のブローカーはサマータイム(DST)によるサーバーの時間変更に少し杜撰であることを発見した。 これは予想外のことで、とても驚いた。誰でも自分のブローカーをチェックできるスクリプトを紹介しよう。

Auto Tp Auto Tp

自動TPとSL設定: 「自動TPとSL設定」(テイクプロフィットとストップロス)機能は、リスクとリターンの管理を自動化するために設計された、あらゆる取引戦略において重要なツールです。この機能を使用すると、トレーダーは、利益確保(TP)または損失限定(SL)のために取引を自動的にクローズする固定価格レベルを定義することができ、常に手動で監視する必要がなくなります。 この機能を有効にすると、各ポジションは、特定のpips数、残高のパーセンテージ、またはテクニカルレベルなどのカスタムパラメータに基づいて、事前に定義されたテイクプロフィットおよびストップロスレベルを自動的に含みます。これは時間の節約になるだけでなく、お客様のトレードが突然の市場の動きや感情的な意思決定から保護されることを保証します。

Monthly VWAP Monthly VWAP

月次VWAP(出来高加重平均価格)は、各取引月の出来高加重平均価格を計算・表示するMQL5に不可欠なインジケーターです。長期的な市場センチメントを理解し、主要な月次フェアバリューを特定し、戦略的意思決定に役立てるための強力なツールです。