- 配列、バッファ及び時系列における索引付けの方向
- データアクセスの整理
- SeriesInfoInteger
- Bars
- BarsCalculated
- IndicatorCreate
- IndicatorParameters
- IndicatorRelease
- CopyBuffer
- CopyRates
- CopySeries
- CopyTime
- CopyOpen
- CopyHigh
- CopyLow
- CopyClose
- CopyTickVolume
- CopyRealVolume
- CopySpread
- CopyTicks
- CopyTicksRange
- iBars
- iBarShift
- iClose
- iHigh
- iHighest
- iLow
- iLowest
- iOpen
- iTime
- iTickVolume
- iRealVolume
- iVolume
- iSpread
CopyTicks
이 함수는 MqlTick ticks_array로의 형태에서 틱을 수신합니다. 이 경우 틱은 과거에서 현재로 인덱싱되며, 즉, 0 인덱스는 배열에서 가장 오래된 틱입니다. 틱 분석을 위해서는 틱에서 정확히 변경된 내용을 보여주는 플래그 필드를 확인하십시오.
int CopyTicks(
|
Parameters
symbol_name
[in] 심볼.
ticks_array
[out] 틱 수신용 MqlTick 유형의 배열.
flags
[in] 요청된 틱 유형을 정의하는 플래그. COPY_TICKS_INFO – 입찰 및/또는 요청 사항이 있는 틱, COPY_TICKS_TRADE – Last 및 Volume이 변경된 틱, COPY_TICKS_ALL – 모든 틱. 모든 요청 유형의 경우 이전 틱 값이 MqlTick 구조의 나머지 필드에 추가됩니다.
from
[in] 틱 요청 시작일. 1970.01.01 이후 밀리초. from=0이면, 최근 count 틱이 반환됩니다.
count
[in] 요청된 틱 수. 'from' 및 'count' 매개 변수를 지정하지 않으면 사용 가능한 모든 최근 눈금(2000개 이하)이 ticks_array[]에 기록됩니다.
Returned value
오류가 발생한 경우 복사된 틱의 수 또는 -1입니다.
참고
CopyTicks() 함수를 사용하면 수신된 모든 틱을 요청하고 분석할 수 있습니다. CopyTicks()를 처음 호출하면 하드 디스크에 저장된 심볼의 틱 데이터베이스 동기화가 시작됩니다. 로컬 데이터베이스가 요청된 모든 틱을 제공하지 않는 경우 누락된 틱이 트레이드 서버에서 자동으로 다운로드됩니다. CopyTicks()에 지정된 from 날짜부터 시작하여 현재 순간이 동기화될 때까지 체크합니다. 그런 다음 이 심볼에 대해 도착하는 모든 틱이 틱 데이터베이스에 추가되므로 동기화된 상태를 유지합니다.
from 및 count 매개 변수를 지정하지 않으면 사용 가능한 모든 최근 틱(2000개 이하)이 ticks_array[]에 기록됩니다. 플래그 매개 변수를 사용하면 필요한 틱 유형을 지정할 수 있습니다.
COPY_TICKS_INFO – 입찰 및/또는 가격 변경이 포함된 틱이 반환됩니다. 다른 필드의 데이터도 추가됩니다. 예를 들어, Bid만 변경된 경우 요청 및 거래량 필드는 마지막으로 알려진 값으로 채워집니다. 변경된 내용을 정확하게 확인하려면 TICK_FLAG_BID 및/또는 TICK_FLAG_ASK 값을 갖는 플래그 필드를 분석합니다. 틱이 입찰 및 청구가격의 값을 0으로 하고 플래그에 해당 데이터가 변경되었음을 나타내는 경우 (플래그=TICK_FLAG_BID|TICK_FLAG_ASK), 이것은 주문장(Market Depth)가 비어 있음을 의미합니다. 다시 말해, 사고파는 주문이 없습니다.
COPY_TICKS_TRADE – 마지막 가격 및 거래량 변경 내용이 포함된 틱이 반환됩니다. 다른 필드의 데이터도 추가됩니다. 즉, 마지막으로 알려진 입찰 및 요청 값이 해당 필드에 지정됩니다. 변경된 내용을 정확하게 확인하려면 TICK_FLAG_LAST 및 TICK_FLAG_VOLUME 값을 갖는 플래그 필드를 분석합니다.
COPY_TICKS_ALL – 변경 내용이 포함된 모든 틱이 반환됩니다. 변경되지 않은 필드는 마지막으로 알려진 값으로 채워집니다.
COPY_TICKS_ALL 플래그가 있는 CopyTicks()를 호출하면 요청 간격에서 모든 틱이 즉시 반환되는 반면, 다른 모드의 호출에서는 틱을 처리하고 선택하는 데 약간의 시간이 필요하므로 속도 이점이 크지 않습니다.
틱 요청시(COPY_TICKS_INFO 또는 COPY_TICKS_TRADE), 모든 틱에는 틱 시간의 전체 가격 정보(입찰, 요청, 최근 및 거래량)가 포함됩니다. 이 함수는 각 틱의 시점의 거래 상태를 보다 쉽게 분석할 수 있도록 제공되므로, 상세 틱 내역을 요청하거나 다른 필드의 값을 검색할 필요가 없습니다.
지표에서 CopyTicks() 함수는 다음과 같은 결과를 반환합니다: 지표에서 호출되면 CopyTick()은 즉시 심볼의 사용 가능한 모든 틱을 반환하고 사용 가능한 데이터가 충분하지 않은 경우 틱 데이터베이스의 동기화를 시작합니다. 하나의 심볼에 있는 모든 지표는 하나의 공통된 스레드에서 작동하므로 동기화가 완료될 때까지 기다릴 수 없습니다. 동기화 후 CopyTicks()는 다음 호출 중에 요청된 모든 틱을 반환합니다. 지표에서 OnCalculate() 함수는 각 틱이 도착한 후에 호출됩니다.
CopyTicks()는 Expert Advisor 및 스크립트에서 결과를 45초간 기다릴 수 있습니다: 지표와 달리 모든 Expert Advisor와 스크립트는 별도의 스레드로 작동하므로 동기화가 완료될 때까지 45초 동안 기다릴 수 있습니다. 이 시간 동안 필요한 양의 틱이 동기화되지 않으면 CopyTicks()는 시간 초과 시 사용 가능한 틱을 반환하고 동기화를 계속합니다. OnTick()은 모든 틱을 처리하는 것은 아니며 시장의 변화에 대해서만 Expert Advisor에게 알립니다. 이것은 변경 사항 일괄 처리일 수 있습니다: 터미널에서 몇 가지 틱을 동시에 할 수 있지만 OnTick()은 한 번만 호출되어 EA에 최신 마켓의 상태를 알립니다.
데이터 반환 속도: 고속 액세스 캐시에서 각 금융상품당 4,096개의 마지막 틱(Market Depth가 실행 중인 심볼의 경우 65,536개의 틱)에 터미널이 저장됩니다. 현재 거래 세션에 대해 요청된 틱이 캐시를 벗어나면 CopyTicks()가 터미널 메모리에 저장된 틱을 호출합니다. 이러한 요청은 실행하는 데 더 많은 시간이 필요합니다. 이 경우 디스크에서 데이터를 읽기 때문에 다른 날짜에 대해 틱을 요청하는 요청이 가장 느립니다.
예:
#property copyright "Copyright 2016, MetaQuotes Software Corp."
|
더 보기