거래 로봇을 무료로 다운로드 하는 법을 시청해보세요
당사를 Telegram에서 찾아주십시오!
당사 팬 페이지에 가입하십시오
스크립트가 흥미로우신가요?
그렇다면 링크 to it -
하셔서 다른 이들이 평가할 수 있도록 해보세요
스크립트가 마음에 드시나요? MetaTrader 5 터미널에서 시도해보십시오
조회수:
16
평가:
(4)
게시됨:
\MQL5\Scripts\fxsaber\ \MQL5\Include\fxsaber\TicksShort\
TickShort.mqh (6.38 KB) 조회
Table.mqh (100 KB) 조회
MQL5 프리랜스 이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동

이 라이브러리는 크기 대비 성능(읽기/쓰기)이 좋은 틱 스토리지 포맷으로 작업을 구현합니다.


형식:

원본 MqlTick의다음 필드만 저장됩니다:

struct MqlTick
  {
   datetime     time;          // 마지막 가격 업데이트 시간
   double       bid;           // 현재 가격 입찰
   double       ask;           // 현재 요청 가격
   double       last;          // 마지막 거래의 현재 가격(마지막)
   ulong        volume;        // 현재 가격의 볼륨 마지막
   long         time_msc;      // 마지막 가격 업데이트 시간(밀리초)
   uint         flags;         // 틱 플래그
   double       volume_real;   // 정확도가 향상된 현재 가격의 볼륨 지속
  };


예.

메타에디터에서 단축키 ALT+M으로 라이브러리 메서드를 볼 수 있습니다. 다음은 몇 가지 사용 예입니다.


파일을 통해 쓰기/읽기.

#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

초당 4천만 틱 이상의 속도로 원본 정보를 보존하면서 쓰기 및 읽기가 수행됩니다.


대안.

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

MetaQuotes Ltd에서 러시아어로 번역함.
원본 코드: https://www.mql5.com/ru/code/61126

T3 인디케이터 기반 트레이딩 신호 모듈 T3 인디케이터 기반 트레이딩 신호 모듈

포지션 개시 신호는 T3 인디케이터 라인과 가격이 교차하는 것입니다.

T3 T3

가격 계열의 다중 지수 평활화를 사용한 T3 이동 평균입니다.

Auto Tp Auto Tp

자동 TP 및 SL 설정: "자동 TP 및 SL 설정"(이익실현 및 손절매) 기능은 모든 트레이딩 전략에서 중요한 도구로, 위험 및 보상 관리를 자동화하도록 설계되었습니다. 이 기능을 사용하면 수익 확보(TP) 또는 손실 제한(SL)을 위해 거래를 자동으로 청산해야 하는 고정 가격 수준을 정의할 수 있으므로 지속적인 수동 모니터링이 필요 없습니다. 이 기능을 활성화하면 특정 핍 수, 잔고 비율 또는 기술 수준 등 사용자 지정 매개변수에 따라 각 포지션에 사전 정의된 이익실현 및 손절매 수준이 자동으로 포함됩니다. 이렇게 하면 시간을 절약할 수 있을 뿐만 아니라 갑작스러운 시장 움직임과 감정적인 의사결정으로부터 트레이딩을 보호할 수 있습니다.

Value Area Retracement Volume Indicator Value Area Retracement Volume Indicator

The Value Area Retracement indicator, is a powerful volume profile-based tool designed to identify key trading levels—Point of Control (POC), Value Area High (VAH), Value Area Low (VAL), and Profile High/Low—across different timeframes. It helps traders spot potential retracement opportunities to the POC, breakout zones, and value areas, making it useful for intraday, swing, and position trading.