请观看如何免费下载自动交易
请在Facebook上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
显示:
139
等级:
(6)
已发布:
\MQL5\Scripts\fxsaber\ \MQL5\Include\fxsaber\TicksShort\
TickShort.mqh (6.38 KB) 预览
Table.mqh (100 KB) 预览
MQL5自由职业者 需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务

该库使用 tick 存储格式实现工作,该格式具有良好的性能(读/写)与大小比。


格式。

只存储原始 MqlTick的以下字段

struct MqlTick
  {
   datetime     time;          // 上次更新价格的时间
   double       bid;           // 当前出价
   double       ask;           // 当前要价
   double       last;          // 最后一笔交易的当前价格 (Last)
   ulong        volume;        // 当前价格的成交量
   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)); // Compared.
  }
}

上面的脚本将刻度保存到一个新的格式文件中,并从文件中加载刻度。


结果。

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); // Squeezed.
    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)); // Compared.
  }
}

该脚本将刻度源数组转换为压缩数组,然后再转换回来。输出性能/效率数据。


结果。

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

设置自动止盈和止损:"设置自动止盈和止损"(Take Profit and Stop Loss)功能是任何交易策略中的重要工具,旨在自动进行风险和回报管理。它允许交易者定义固定价位,在该价位上交易应自动平仓,以确保盈利(TP)或限制亏损(SL),从而无需持续进行手动监控。 启用该功能后,您开立的每个仓位都将根据您的自定义参数(如特定点数、余额百分比或技术水平)自动包含预定义的止盈和止损价位。这不仅能节省时间,还能确保您的交易不受市场突然波动和情绪化决策的影响。

Monthly VWAP Monthly VWAP

月度 VWAP(成交量加权平均价)是一个重要的 MQL5 指标,用于计算和显示每个交易月的成交量加权平均价。它是了解长期市场情绪、识别关键月度公允价值以及为战略决策提供信息的强大工具。