티크 역사 - 페이지 16

 
Karputov Vladimir :

질문한 내용은 다음과 같습니다.

하루의 전환이 맞습니다.
확인 방법: 터미널이 켜져 있을 때 틱 기록 파일을 지웠습니다. 그런 다음 스크립트를 두 번 실행했습니다(히스토리가 없었기 때문에 스크립트의 첫 번째 실행은 이력 로드를 초기화했습니다).

네, 감사합니다. 저도 그렇게 했습니다. 도움이 되었습니다. 그러나 매우 이상한 행동.
 

이상한 행동은 여기서 끝나지 않습니다. 같은 역사를 가진 두 요청의 순간을 비교하기로 했다.

첫 번째 순간은 내가 금요일에서 월요일로 오는 오류에 대해 썼던 어제였습니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

티크 역사

타포춘 , 2015.10.19 08:48

조금 후에 - 이것은 사진입니다. ALL 3000 틱 모드:

 2015.10 . 19 11 : 46 : 33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 2774 2015.10 . 16 23 : 59 : 05 : spread = 0 , ask = 0.00000 , bid = 0.00000 , last = 1.54356
2015.10 . 19 11 : 46 : 33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 2775 2015.10 . 16 23 : 59 : 05 : spread = 72 , ask = 1.54428 , bid = 1.54356 , last = 0.00000
2015.10 . 19 11 : 46 : 33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 2776 2015.10 . 16 23 : 59 : 06 : spread = 0 , ask = 0.00000 , bid = 0.00000 , last = 1.54356
2015.10 . 19 11 : 46 : 33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 2777 2015.10 . 16 23 : 59 : 06 : spread = 75 , ask = 1.54431 , bid = 1.54356 , last = 0.00000
2015.10 . 19 11 : 46 : 33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 2778 2015.10 . 16 23 : 59 : 07 : spread = 0 , ask = 0.00000 , bid = 0.00000 , last = 1.54357
2015.10 . 19 11 : 46 : 33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 2779 2015.10 . 16 23 : 59 : 07 : spread = 74 , ask = 1.54431 , bid = 1.54357 , last = 0.00000
2015.10 . 19 11 : 46 : 33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 2780 2015.10 . 16 23 : 59 : 10 : spread = 0 , ask = 0.00000 , bid = 0.00000 , last = 0.00000
2015.10 . 19 11 : 46 : 33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 2781 2015.10 . 19 09 : 44 : 41 : spread = 18 , ask = 1.54498 , bid = 1.54480 , last = 1.54480
2015.10 . 19 11 : 46 : 33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 2782 2015.10 . 19 09 : 44 : 41 : spread = 19 , ask = 1.54499 , bid = 1.54480 , last = 0.00000
2015.10 . 19 11 : 46 : 33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 2783 2015.10 . 19 09 : 44 : 42 : spread = 19 , ask = 1.54499 , bid = 1.54480 , last = 1.54480
2015.10 . 19 11 : 46 : 33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 2784 2015.10 . 19 09 : 44 : 42 : spread = 18 , ask = 1.54498 , bid = 1.54480 , last = 0.00000
2015.10 . 19 11 : 46 : 33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 2785 2015.10 . 19 09 : 44 : 42 : spread = 18 , ask = 1.54498 , bid = 1.54480 , last = 1.54480
2015.10 . 19 11 : 46 : 33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 2786 2015.10 . 19 09 : 44 : 42 : spread = 19 , ask = 1.54499 , bid = 1.54480 , last = 0.00000
2015.10 . 19 11 : 46 : 33.144 test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 2787 2015.10 . 19 09 : 44 : 42 : spread = 19 , ask = 1.54499 , bid = 1.54480 , last = 1.54480

역사의 구멍. INFO 모드에서 - 유사하게.

9.44.41 이후에 들어오는 틱에 주목하십시오. 이제 오늘만 요청된 동일한 모드(ALL)에서 동일한 기호에 대한 기록이 동시에 요청되었습니다.

QK       0        13 : 04 : 51.698     test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 289463 2015.10 . 19 09 : 44 : 41 : spread = 0 , ask = 0.00000 , bid = 0.00000 , last = 1.54480
LN       0        13 : 04 : 51.698     test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 289464 2015.10 . 19 09 : 44 : 41 : spread = 19 , ask = 1.54499 , bid = 1.54480 , last = 0.00000
DO       0        13 : 04 : 51.698     test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 289465 2015.10 . 19 09 : 44 : 42 : spread = 0 , ask = 0.00000 , bid = 0.00000 , last = 1.54480
ES       0        13 : 04 : 51.698     test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 289466 2015.10 . 19 09 : 44 : 42 : spread = 18 , ask = 1.54498 , bid = 1.54480 , last = 0.00000
HR       0        13 : 04 : 51.698     test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 289467 2015.10 . 19 09 : 44 : 42 : spread = 0 , ask = 0.00000 , bid = 0.00000 , last = 1.54480
EG       0        13 : 04 : 51.698     test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 289468 2015.10 . 19 09 : 44 : 42 : spread = 19 , ask = 1.54499 , bid = 1.54480 , last = 0.00000
DI       0        13 : 04 : 51.698     test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 289469 2015.10 . 19 09 : 44 : 42 : spread = 0 , ask = 0.00000 , bid = 0.00000 , last = 1.54480
DH       0        13 : 04 : 51.698     test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 289470 2015.10 . 19 09 : 44 : 42 : spread = 18 , ask = 1.54498 , bid = 1.54480 , last = 0.00000
IM       0        13 : 04 : 51.698     test_CopyTicks_1178 (GBPUSD,M5) OnStart : # 289471 2015.10 . 19 09 : 44 : 42 : spread = 0 , ask = 0.00000 , bid = 0.00000 , last = 1.54480

배송 방법이 다릅니다. 그리고 확실히 밀리초로는 충분하지 않습니다.

그리고 그러한 상황에서 진드기를 분석하는 방법?!

 
Renat Fatkhullin :

괜찮은.

방금 지적했습니다. 눈금을 채우는 데 구조나 논리가 없습니다. 각 가격 필드는 다른 필드와 독립적입니다. 공급자로부터 오는 것은 방송된다.

레나트, 같은 공급자의 진드기라도 요청 시기에 따라 다른 방식으로 올 수 있다는 사실이 밝혀졌다!?

히스토리 형식은 연결된 서버에 따라 달라지나요?

 
Tapochun :

약속에 따르면 다음 빌드에서 칩이 있을 것이라고 확신합니다.

'칩'만 없었더라면 좋았을 텐데, 그게 아니라면 테스터가 아니라 장난감이다. 그리고 당신은 바를 닫는 전략에 많은 죽을 만들 수 없습니다 ..

 
Maxim Dmitrievsky :

'칩'만 없었더라면 좋았을 텐데, 그게 아니라면 테스터가 아니라 장난감이다. 그리고 당신은 바를 닫는 전략에 많은 죽을 만들 수 없습니다 ..

칩이 없으면 즉시 발생하는 경우는 드뭅니다. 티크 이야기 는 오래 전부터 기다려 왔고 가능한 한 빨리 그것을 마음에 떠올리고 싶습니다. 테스터와 실생활 모두에서. 불행히도 큰 반발은 없었습니다. 떠올리는 작업이 진행되기를 바랍니다.

 
Karputov Vladimir :

틱 수신 플래그를 확인하십시오. COPY_TICKS_INFO (Bid 및 Ask만) - Bid 및 Ask는 값 "0" 또는 COPY_TICKS_INFO 모드에서 계속할 수 있습니다. - Bid 및 Ask는 0을 포함하지 않으며 틱의 흐름은 다음과 유사합니다 . 터미널에서 "시장 감시" 창의 "틱" 탭에서?


빌드 1200에서 결정할 것:

MQL5: 확장 MqlTick 구조 형식입니다. 이제 밀리초 단위의 틱 도착 시간과 변경된 특정 틱 매개변수를 확인할 수 있는 플래그를 전송합니다.
 struct MqlTick
  {
   datetime      time;           // Время последнего обновления цен
   double        bid;           // Текущая цена Bid
   double        ask;           // Текущая цена Ask
   double        last;           // Текущая цена последней сделки (Last)
   ulong         volume;         // Объем для текущей цены Last
   long          time_msc;       // Время последнего обновления цен в миллисекундах
   uint          flags;         // Флаги тиков
  };
각 틱에 대해 데이터가 이전 틱과 비교하여 변경되었는지 여부에 관계없이 모든 매개변수가 항상 채워집니다. 이를 통해 틱 기록에서 이전 값을 찾지 않고도 항상 현재 가격 상태를 확인할 수 있습니다. 예를 들어, 틱으로 입찰 가격만 변경할 수 있지만 새 가격 외에도 이전 요청 가격, 볼륨 등 다른 매개변수가 구조에 표시됩니다. 현재 틱으로 변경된 데이터를 정확히 찾으려면 해당 플래그를 분석하십시오.

  • TICK_FLAG_BID - 틱이 입찰 가격을 변경했습니다.
  • TICK_FLAG_ASK - 매도호가를 변경한 틱
  • TICK_FLAG_LAST - 틱이 마지막 거래의 가격을 변경했습니다.
  • TICK_FLAG_VOLUME - 변경된 볼륨 틱
  • TICK_FLAG_BUY - 매수 거래의 결과로 발생한 틱
  • TICK_FLAG_SELL - 매도 거래의 결과로 발생한 틱

MqlTick 구조는 두 가지 방법으로 사용됩니다.

  • CopyTicks - 메서드가 이전 구조 형식을 지원하지 않습니다. 이전 틱 형식을 사용하여 이전에 컴파일된 EX5 파일은 CopyTicks 함수를 호출할 때 오류 4006(ERR_MQL_INVALID_ARRAY)을 반환합니다.
  • SymbolInfoTick - 메서드는 이전 및 새 구조 형식을 모두 지원합니다.
 

그래서:

MetaTrader 5 x64 build 1192 started (MetaQuotes Software Corp.)
...
authorized on MetaQuotes-Demo through Access Point Asia (ping: 556.27 ms)

업데이트된 MqlTick 구조:

업데이트된 MqlTick 구조

 
Karputov Vladimir :

그래서:

업데이트된 MqlTick 구조:


그리고 터미널에서 새 틱의 도착을 추적하는 방법은 무엇입니까? 예를 들어 테스터에서.

"OnTick() 함수는 각 틱에 대한 핸들러가 아니며 시장의 변경 사항을 EA에 알립니다. 변경 사항을 패키징할 수 있습니다. 여러 틱이 동시에 터미널에 도착할 수 있지만 OnTick() 함수가 호출됩니다. 시장의 최신 상태에 대해 EA에 알리기 위해 한 번만."

 
Maxim Dmitrievsky :

그리고 터미널에서 새 틱의 도착을 추적하는 방법은 무엇입니까? 예를 들어 테스터에서.

"OnTick() 함수는 각 틱에 대한 핸들러가 아니며 시장의 변경 사항을 EA에 알립니다. 변경 사항을 패키징할 수 있습니다. 여러 틱이 동시에 터미널에 도착할 수 있지만 OnTick() 함수가 호출됩니다. 시장의 최신 상태에 대해 EA에 알리기 위해 한 번만."

모든 눈금 을 추적해야 하는 경우 표시기에서 추적해야 합니다. 표시기는 어드바이저와 달리 각 틱을 처리합니다.

추가됨: 이제 Expert Advisor에서 모든 눈금을 분석할 수 있습니다. 검사만 입력하면 됩니다(예: 깊이가 5틱인 CopyTicks 요청 분석).

 

빌드 1192. Windows 10 x32.

이전에는 MetaQuotes-Demo 서버의 틱 기록 폴더를 완전히 삭제했습니다. 지시자

 //+------------------------------------------------------------------+
//|                                                         test.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property indicator_chart_window
#property indicator_plots 0
//--- input parameter
input int    InpShowTicks= 500 ;     // клубина истории тиков
//--- parameters
MqlTick      arr_mql_tick[];       // массив структур хранящий тики
bool         bingo= false ;         // false - скачано тиков меньше запрошенного
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit ()
  {
   Comment ( "" );
   ResetLastError ();
//--- новый размер массива структур тиков
   if ( ArrayResize (arr_mql_tick,InpShowTicks)==- 1 )
     {
       Print ( "Error OnInit #1" , GetLastError ());
       return ( INIT_FAILED );
     }
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
   static int count;
   string text= "" ;
   if (bingo)
       return (rates_total);
   int copied=CopyTicks( _Symbol ,arr_mql_tick,COPY_TICKS_INFO, 0 ,InpShowTicks);
   if (copied==InpShowTicks)
      bingo= true ;
   text= "Запрошено " + IntegerToString (InpShowTicks)+ " тиков, скачано " + IntegerToString (copied);
   Comment (text);
   count++;
   return (rates_total);
  }
//+------------------------------------------------------------------+

나는 진드기의 다운로드를 확인합니다. 일부 상품에서는 필요한 500틱이 문자 그대로 첫 번째 또는 두 번째 틱에서 다운로드되며 동시에 200KB 이하로 다운로드됩니다("시장 조사"에서 차트로 도구를 드래그하기만 하면 됩니다).

그러나 일부에서는 기적이 시작됩니다. 틱 기록은 필요한 500틱을 제공하고 싶지 않지만 동시에 터미널은 약 20MB의 기록(10개월 및 9개월 동안의 기록)을 다운로드합니다.

파일:
test.mq5  3 kb