'CopyTicks' 테스트 - 페이지 40

 
Kopitix는 기존 틱을 가져올 수 없습니다.
 struct MQLTICK
{
   uchar Data[ sizeof ( MqlTick )];
};

union UNION
{
  MQLTICK Tick1;
   MqlTick Tick2;  
  
  UNION()
  {
     ArrayInitialize ( this .Tick1.Data, 1 );
  }
};

#define TOSTRING(A) #A + " = " + ( string )(A)

void OnStart ()
{  
   const string Name = "A1234" ;

   if ( CustomSymbolCreate (Name) || SymbolInfoInteger (Name, SYMBOL_CUSTOM ))
  {    
    UNION Union;
    
     MqlTick Ticks[] = {{ 0 }};
    Ticks[ 0 ] = Union.Tick2;
    
    Ticks[ 0 ].time = TimeCurrent ();
    Ticks[ 0 ].time_msc = Ticks[ 0 ].time * 1000 ;
    
     Print (TOSTRING( CustomTicksReplace (Name, Ticks[ 0 ].time_msc, Ticks[ 0 ].time_msc, Ticks))); // Тик записали без проблем
    
     MqlTick Ticks2[];
    
     SymbolSelect (Name, true );            
    
     // Прочесть тик не можем
     Print (TOSTRING( CopyTicksRange (Name, Ticks2)));
     Print (TOSTRING( CopyTicks (Name, Ticks2)));
    
     SymbolSelect (Name, false );            
     CustomSymbolDelete (Name);    
  }
}

결과

 CustomTicksReplace (Name,Ticks[ 0 ].time_msc,Ticks[ 0 ].time_msc,Ticks) = 1
CopyTicksRange (Name,Ticks2) = 0
CopyTicks (Name,Ticks2) = 0
 

Kopitix는 원본 데이터를 변경합니다.

 struct MQLTICK
{
   uchar Data[ sizeof ( MqlTick )];
};

union UNION
{
  MQLTICK Tick1;
   MqlTick Tick2;  
  
  UNION()
  {
     ArrayInitialize ( this .Tick1.Data, 1 );
  }
};

#define TOSTRING(A) #A + " = " + ( string )(A)

void OnStart ()
{  
   const string Name = "A1234" ;

   if ( CustomSymbolCreate (Name) || SymbolInfoInteger (Name, SYMBOL_CUSTOM ))
  {    
    UNION Union;
    
     MqlTick Ticks[] = {{ 0 }};
    Ticks[ 0 ] = Union.Tick2;
    
    Ticks[ 0 ].time = 0 ;
    Ticks[ 0 ].time_msc = 0 ;

     Print (TOSTRING(Ticks[ 0 ].ask));
    
     Print (TOSTRING( CustomTicksReplace (Name, Ticks[ 0 ].time_msc, Ticks[ 0 ].time_msc, Ticks)));
    
     MqlTick Ticks2[];
    
     SymbolSelect (Name, true );            
    
     // Прочесть тик не можем
     Print (TOSTRING( CopyTicksRange (Name, Ticks2)));

     Print (TOSTRING(Ticks2[ 0 ].ask));
    
     SymbolSelect (Name, false );            
     CustomSymbolDelete (Name);    
  }
}


결과

 Ticks[ 0 ].ask = 7.748604185489348 e- 304
CustomTicksReplace (Name,Ticks[ 0 ].time_msc,Ticks[ 0 ].time_msc,Ticks) = 1
CopyTicksRange (Name,Ticks2) = 1
Ticks2[ 0 ].ask = 0.0
 

왜 여분의 진드기가 형성됩니까?


스크립트는 추가 눈금을 표시합니다.

 string GetTickFlag( uint tickflag )
{
   string flag = "" ;

#define TICKFLAG_MACRO(A) flag += (( bool )(tickflag & TICK_FLAG_ ##A)) ? " TICK_FLAG_" + #A : "" ;
  TICKFLAG_MACRO(BID)
  TICKFLAG_MACRO(ASK)
  TICKFLAG_MACRO(LAST)
  TICKFLAG_MACRO(VOLUME)
  TICKFLAG_MACRO(BUY)
  TICKFLAG_MACRO(SELL)
#undef TICKFLAG_MACRO

   if (flag == "" )
    flag = " FLAG_UNKNOWN (" + ( string )tickflag + ")" ;
     
   return (flag);
}

#define TOSTRING(A) " " + #A + " = " + ( string )Tick.A

string TickToString( const MqlTick &Tick )
{
   return (TOSTRING(time) + "." + ( string ) IntegerToString (Tick.time_msc % 1000 , 3 , '0' ) +
         TOSTRING(bid) + TOSTRING(ask) + TOSTRING(last)+ TOSTRING(volume) + GetTickFlag(Tick.flags));
}

struct MQLTICK : public MqlTick
{
   bool operator ==( const MqlTick &Tick ) const
  {
     return ((!Tick.ask || (Tick.ask == this .ask)) &&
           (!Tick.bid || (Tick.bid == this .bid)));
  }
  
   void operator =( const MqlTick &Tick )
  {
     this .ask = Tick.ask ? Tick.ask : this .ask;
     this .bid = Tick.bid ? Tick.bid : this .bid;
  }
};

void OnStart ()
{
   MqlTick Ticks[];
   const int Amount = CopyTicks ( _Symbol , Ticks, COPY_TICKS_ALL , 0 , 1 e4 );

  MQLTICK Tick = { 0 };  
  
   for ( int i = 0 ; i < Amount; i++)
     if (Tick == Ticks[i])
       Print (TickToString(Ticks[i]));
     else
      Tick = Ticks[i];
}


EURUSD 메타쿼트-데모에 대한 결과

 time = 2017.11 . 14 02 : 27 : 14.352 bid = 1.16679 ask = 1.16682 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK
 time = 2017.11 . 14 02 : 29 : 11.325 bid = 1.16685 ask = 1.16687 last = 0.0 volume = 0 TICK_FLAG_ASK
 time = 2017.11 . 14 03 : 04 : 02.402 bid = 1.16715 ask = 1.16717 last = 0.0 volume = 0 TICK_FLAG_ASK
 time = 2017.11 . 14 03 : 41 : 09.453 bid = 1.16707 ask = 1.1671 last = 0.0 volume = 0 TICK_FLAG_ASK
 time = 2017.11 . 14 03 : 42 : 53.101 bid = 1.16718 ask = 1.16721 last = 0.0 volume = 0 TICK_FLAG_BID
 time = 2017.11 . 14 04 : 51 : 22.072 bid = 1.16719 ask = 1.16721 last = 0.0 volume = 0 TICK_FLAG_BID
 time = 2017.11 . 14 04 : 53 : 55.649 bid = 1.16714 ask = 1.16717 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK
 time = 2017.11 . 14 04 : 56 : 12.254 bid = 1.16713 ask = 1.16716 last = 0.0 volume = 0 TICK_FLAG_ASK
 time = 2017.11 . 14 04 : 57 : 12.497 bid = 1.16713 ask = 1.16716 last = 0.0 volume = 0 TICK_FLAG_ASK
 time = 2017.11 . 14 04 : 58 : 28.934 bid = 1.16719 ask = 1.16722 last = 0.0 volume = 0 TICK_FLAG_ASK
 time = 2017.11 . 14 05 : 18 : 44.717 bid = 1.16728 ask = 1.16731 last = 0.0 volume = 0 TICK_FLAG_ASK
 time = 2017.11 . 14 05 : 25 : 39.559 bid = 1.16725 ask = 1.16728 last = 0.0 volume = 0 TICK_FLAG_BID
 time = 2017.11 . 14 05 : 27 : 54.243 bid = 1.16718 ask = 1.1672 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK
 time = 2017.11 . 14 05 : 29 : 38.909 bid = 1.16718 ask = 1.1672 last = 0.0 volume = 0 TICK_FLAG_BID
 time = 2017.11 . 14 05 : 31 : 40.868 bid = 1.16719 ask = 1.1672 last = 0.0 volume = 0 TICK_FLAG_ASK
 time = 2017.11 . 14 05 : 38 : 29.393 bid = 1.16709 ask = 1.16712 last = 0.0 volume = 0 TICK_FLAG_BID
 time = 2017.11 . 14 05 : 39 : 29.429 bid = 1.16709 ask = 1.16712 last = 0.0 volume = 0 TICK_FLAG_BID
 time = 2017.11 . 14 05 : 47 : 36.539 bid = 1.16718 ask = 1.1672 last = 0.0 volume = 0 TICK_FLAG_BID
 time = 2017.11 . 14 06 : 19 : 44.287 bid = 1.16726 ask = 1.16729 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK
 time = 2017.11 . 14 06 : 21 : 11.941 bid = 1.16729 ask = 1.16732 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK
 time = 2017.11 . 14 06 : 22 : 22.686 bid = 1.16729 ask = 1.16732 last = 0.0 volume = 0 TICK_FLAG_ASK
 time = 2017.11 . 14 06 : 23 : 11.019 bid = 1.16729 ask = 1.16732 last = 0.0 volume = 0 TICK_FLAG_BID
 time = 2017.11 . 14 06 : 23 : 24.926 bid = 1.16729 ask = 1.16732 last = 0.0 volume = 0 TICK_FLAG_ASK
 time = 2017.11 . 14 06 : 24 : 22.060 bid = 1.16729 ask = 1.16732 last = 0.0 volume = 0 TICK_FLAG_BID
 time = 2017.11 . 14 06 : 24 : 26.871 bid = 1.16729 ask = 1.16732 last = 0.0 volume = 0 TICK_FLAG_ASK
 time = 2017.11 . 14 06 : 25 : 26.704 bid = 1.16729 ask = 1.16732 last = 0.0 volume = 0 TICK_FLAG_BID
 time = 2017.11 . 14 06 : 25 : 27.401 bid = 1.16729 ask = 1.16732 last = 0.0 volume = 0 TICK_FLAG_ASK
 time = 2017.11 . 14 06 : 42 : 16.087 bid = 1.16729 ask = 1.16732 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK
 time = 2017.11 . 14 06 : 44 : 00.557 bid = 1.16734 ask = 1.16737 last = 0.0 volume = 0 TICK_FLAG_ASK
 time = 2017.11 . 14 06 : 44 : 36.362 bid = 1.16734 ask = 1.16737 last = 0.0 volume = 0 TICK_FLAG_BID
 time = 2017.11 . 14 06 : 45 : 00.577 bid = 1.16734 ask = 1.16737 last = 0.0 volume = 0 TICK_FLAG_ASK
 time = 2017.11 . 14 06 : 51 : 36.472 bid = 1.16734 ask = 1.16737 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK
 time = 2017.11 . 14 06 : 52 : 37.091 bid = 1.16734 ask = 1.16737 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK
 time = 2017.11 . 14 06 : 53 : 38.025 bid = 1.16734 ask = 1.16737 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK
 time = 2017.11 . 14 06 : 56 : 11.389 bid = 1.16729 ask = 1.16732 last = 0.0 volume = 0 TICK_FLAG_BID
 time = 2017.11 . 14 07 : 03 : 22.022 bid = 1.16708 ask = 1.16711 last = 0.0 volume = 0 TICK_FLAG_BID
 time = 2017.11 . 14 07 : 08 : 35.305 bid = 1.16718 ask = 1.16721 last = 0.0 volume = 0 TICK_FLAG_BID
 time = 2017.11 . 14 07 : 24 : 15.039 bid = 1.16755 ask = 1.16758 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK
 time = 2017.11 . 14 07 : 27 : 16.339 bid = 1.16751 ask = 1.16754 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK
 time = 2017.11 . 14 07 : 39 : 26.342 bid = 1.16739 ask = 1.16742 last = 0.0 volume = 0 TICK_FLAG_ASK
 time = 2017.11 . 14 07 : 43 : 33.909 bid = 1.16744 ask = 1.16747 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK
 time = 2017.11 . 14 07 : 45 : 25.462 bid = 1.16744 ask = 1.16747 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK
 time = 2017.11 . 14 07 : 47 : 05.824 bid = 1.16741 ask = 1.16744 last = 0.0 volume = 0 TICK_FLAG_ASK
 time = 2017.11 . 14 07 : 48 : 19.985 bid = 1.16744 ask = 1.16747 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK
 time = 2017.11 . 14 07 : 49 : 57.642 bid = 1.16744 ask = 1.16747 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK
 time = 2017.11 . 14 07 : 52 : 39.036 bid = 1.16738 ask = 1.16741 last = 0.0 volume = 0 TICK_FLAG_ASK
 time = 2017.11 . 14 08 : 04 : 47.750 bid = 1.16739 ask = 1.16741 last = 0.0 volume = 0 TICK_FLAG_BID
 time = 2017.11 . 14 08 : 23 : 23.778 bid = 1.16705 ask = 1.16707 last = 0.0 volume = 0 TICK_FLAG_BID TICK_FLAG_ASK
 time = 2017.11 . 14 08 : 28 : 22.233 bid = 1.16706 ask = 1.16708 last = 0.0 volume = 0 TICK_FLAG_BID
 time = 2017.11 . 14 08 : 28 : 37.245 bid = 1.16706 ask = 1.16708 last = 0.0 volume = 0 TICK_FLAG_ASK
 

COPY_TICKS_ALL 모드의 Kopitiks는 자영업입니다. null Bid/Ask 필드를 채웁니다.

 void OnStart ()
{
   MqlTick Ticks[];
   const int Amount = CopyTicks ( _Symbol , Ticks);
  
   ArrayPrint (Ticks);
}
[ 1986 ] 2017.11 . 14 10 : 12 : 11 1.16873 1.16873 0.0000          0 1510654331879        6
[ 1987 ] 2017.11 . 14 10 : 12 : 12 1.16871 1.16873 0.0000          0 1510654332026        2
[ 1988 ] 2017.11 . 14 10 : 12 : 12 1.16871 1.16871 0.0000          0 1510654332947        4
[ 1989 ] 2017.11 . 14 10 : 12 : 16 1.16869 1.16870 0.0000          0 1510654336930        6
[ 1990 ] 2017.11 . 14 10 : 12 : 17 1.16867 1.16868 0.0000          0 1510654337028        6
[ 1991 ] 2017.11 . 14 10 : 12 : 20 1.16866 1.16868 0.0000          0 1510654340943        2
[ 1992 ] 2017.11 . 14 10 : 12 : 22 1.16868 1.16869 0.0000          0 1510654342728        6
[ 1993 ] 2017.11 . 14 10 : 12 : 22 1.16868 1.16870 0.0000          0 1510654342834        4
[ 1994 ] 2017.11 . 14 10 : 12 : 22 1.16868 1.16869 0.0000          0 1510654342954        4
[ 1995 ] 2017.11 . 14 10 : 12 : 23 1.16867 1.16869 0.0000          0 1510654343339        2
[ 1996 ] 2017.11 . 14 10 : 12 : 27 1.16867 1.16868 0.0000          0 1510654347042        4
[ 1997 ] 2017.11 . 14 10 : 12 : 31 1.16867 1.16869 0.0000          0 1510654351428        4
[ 1998 ] 2017.11 . 14 10 : 12 : 31 1.16868 1.16869 0.0000          0 1510654351832        2
[ 1999 ] 2017.11 . 14 10 : 12 : 31 1.16869 1.16871 0.0000          0 1510654351942        6


무엇을 위한 것입니까? INFO 모드에서는 이 동작이 편리하지만 ALL에서는 원시 데이터를 기다리고 있으며 GUI만 이를 보여줍니다.



가격이 변경되지 않은 경우 단순히 0입니다. 그리고 플래그 는 추가 엔티티라는 것이 밝혀졌습니다. 가격을 0으로 표시하는 대신 이 플래그로 MqlTick 구조를 늘렸습니다.

tkc는 플래그만 저장합니까(0 가격 없음), 플래그 없이 가격만 저장합니까, 아니면 플래그와 가격을 모두 비합리적으로 표시합니까?


그리고 왜 국기가 도입 되었습니까?

  • TICK_FLAG_VOLUME – тик изменил объем

볼륨이 변경되었는지 여부는 전혀 중요하지 않습니다. 아니면 내가 뭔가를 이해하지 못합니까?


Threat Raw ALL-데이터는 특히 사용자 지정 문자 tk에 필요합니다. 이것은 사용자 지정 기호를 통한 데이터 교환 채널 문제와 직접 관련이 있습니다.

 
fxsaber :

COPY_TICKS_ALL 모드의 Kopitiks는 자영업입니다. null Bid/Ask 필드를 채웁니다.


무엇을 위한 것입니까? INFO 모드에서는 이 동작이 편리하지만 ALL에서는 원시 데이터를 기다리고 있으며 GUI만 이를 보여줍니다.



가격이 변경되지 않은 경우 단순히 0입니다. 그리고 플래그 는 추가 엔티티라는 것이 밝혀졌습니다. 가격을 0으로 표시하는 대신 이 플래그로 MqlTick 구조를 늘렸습니다.

tkc는 플래그만 저장합니까(0 가격 없음), 플래그 없이 가격만 저장합니까, 아니면 플래그와 가격을 모두 비합리적으로 표시합니까?


그리고 왜 국기가 도입 되었습니까?

볼륨이 변경되었는지 여부는 전혀 중요하지 않습니다. 아니면 내가 뭔가를 이해하지 못합니까?


Threat Raw ALL-데이터는 특히 사용자 지정 문자 tk에 필요합니다. 이것은 사용자 정의 기호를 통한 데이터 교환 채널의 문제와 직접적으로 관련됩니다.


당신은 당신이 식별한 결점에 대해 서비스 데스크에 편지를 쓰나요?

모든 것이 텅 비어 있는 느낌입니다.


그리고 왜 국기가 도입 되었습니까?

  • TICK_FLAG_VOLUME - 변경된 볼륨 틱

제 생각에는 이것은 매우 중요한 지표입니다. 입찰 요청을 변경한 것이 아니라 거래가 이루어졌는지 어떻게 알 수 있습니까?

 
Sergey Chalyshev :

당신은 당신이 식별한 결점에 대해 서비스 데스크에 편지를 쓰나요?

이사회는 모든 요청에 신속하게 응답합니다. 추가 논의가 진행 중입니다.

제 생각에는 이것은 매우 중요한 지표입니다. 입찰 요청을 변경한 것이 아니라 거래가 이루어졌는지 어떻게 알 수 있습니까?

깃발만 있으면 충분해

  • TICK_FLAG_LAST - 틱이 마지막 거래의 가격을 변경했습니다.
"합격"으로 다시 만듭니다. 마지막 가격이 변경 되었다는 사실은 아무도 귀찮게하지 않습니다. 가격과 거래량이 완전히 일치하는 여러 개의 연속 거래가 있을 수 있습니다. 따라서 하나의 플래그(거래)만 있어야 합니다.
 

TICK_FLAG_VOLUME - 변경된 볼륨

어쩐지 이전에 도움말에 쓰여진 내용에 대해 생각하지 못했습니다.

그는 무엇을 변경 했습니까?

위의 내용은 실제로 무엇을 의미합니까?

 
fxsaber :

이사회는 모든 요청에 신속하게 응답합니다. 추가 논의가 진행 중입니다.

깃발만 있으면 충분해

"합격"으로 다시 만듭니다. 최종 가격이 변경되었다는 사실은 누구에게도 영향을 미치지 않습니다. 가격과 거래량이 완전히 일치하는 여러 개의 연속 거래가 있을 수 있습니다. 따라서 하나의 플래그(거래)만 있어야 합니다.

반응이 좋다면.

플래그 정보:

상황을 분석하고 일치하는 거래를 결합하는 고문의 아이디어도있었습니다.이대로 충분합니다.

이러한 상황 - 교환 시간, 서버 시간, 컴퓨터 시간이 일치하지 않습니다. MarketClosed를 확인하는 방법, 거래가 마지막 가격에도 도달했다면 거래가 진행 중인 것입니다.

그리고 모든 거래를 한 수준에서 결합하면 해당 수준이 거래된 기간이 명확하지 않습니까?

PS Extra 플래그는 전송된 플래그의 양에 영향을 미치지 않습니다.

 
Sergey Chalyshev :

반응이 좋다면.

플래그 정보:

상황을 분석하고 일치하는 거래를 결합하는 고문의 아이디어도있었습니다.이대로 충분합니다.

이러한 상황 - 교환 시간, 서버 시간, 컴퓨터 시간이 일치하지 않습니다. MarketClosed를 확인하는 방법, 거래가 마지막 가격에도 도달했다면 거래가 진행 중인 것입니다.

그리고 모든 거래를 한 수준에서 결합하면 해당 수준이 거래된 기간이 명확하지 않습니까?

같은 수준에서 병합하는 이유는 무엇입니까? 나는 결합하지 않고 테이프를 그대로 둡니다. 교환에서 나온 것입니다.

PS Extra 플래그는 전송된 플래그의 양에 영향을 미치지 않습니다.
플래그는 필요한 조치입니다. 원시 MQ 데이터는 반환되지 않습니다. CopyTicks 내에서 수정합니다.
 

tkc 파일은 월별로 분류됩니다. 이에 대한 질문

  1. 틱 데이터가 아직 터미널에 다운로드되지 않은 경우 CopyTicks가 호출될 때 터미널은 어떤 tkc 파일을 가져올지 어떻게 압니까?
  2. CopyTicksRange는 CopyTicks를 기반으로 합니까 아니면 독립 실행형입니까?
  3. 예를 들어, CopyTicksRange를 사용하면 CopyTicksRange를 사용하는 것이 항상 9월에 대한 틱을 얻는 것이 더 빠를 것이라는 것을 올바르게 이해하고 있습니까? CopyTicks는 입력 매개변수를 통해 어떤 월 데이터를 가져와야 하는지 알지 못합니까?
  4. 가능한 한 빨리 지표에서 이력을 가져와야 합니다. CopyTicksRange를 통해 요청하고 모든 것이 다운로드될 때까지 -1 형식으로 쿵쾅거릴 수 있습니다. 그리고 월별로 묻는 경우: 현재, 이전 등 속도는 느려지지 않지만 동시에 표시기는 적어도 일부 기록으로 작동할 준비가 됩니다. 권리?