'CopyTicks' 테스트 - 페이지 39

 
[삭제]  
fxsaber :

속도를 늦추거나 거래 서버에 의존해서는 안 됩니다.

발행 속도: 터미널은 빠른 액세스를 위해 각 기호에 대한 마지막 4096 틱을 캐시에 저장합니다. 캐시 외부에서 현재 거래 세션의 틱을 요청할 때 CopyTicks()는 이미 터미널의 메모리에 저장된 틱을 참조하므로 이러한 요청을 실행하는 데 더 많은 시간이 필요합니다. 다른 날의 틱 요청이 가장 느립니다. 이 경우 디스크에서 데이터를 이미 읽었기 때문입니다.

터미널이 동일한 디스크에 있으면 이론상으로는 맞습니다.

여러 테스트를 수행 했습니까? 특정 서버에서 지속적인 지연이 발생합니까? 테스트 당시 갑자기 디스크가 다른 작업으로 바빴던 것뿐...

 
Alexey Kozitsyn :

터미널이 동일한 디스크에 있으면 이론적으로 맞습니다.

여러 테스트를 수행 했습니까? 특정 서버에서 지속적인 지연이 발생합니까? 테스트 당시 갑자기 디스크가 다른 작업으로 바빴던 것뿐...

100% 재현 가능. 터미널은 동일합니다.

 

표시기의 OnDeinit에서 틱을 얻는 방법은 무엇입니까? 이미 tkc 파일에 있고 거의 즉시 제공되는 틱을 얻고 싶습니다. 그러나 어떤 틱이 있고 어떤 것이 아닌지 결정하는 방법은 무엇입니까?

CopyTicks의 단순함의 모든 외적 매력 뒤에는 실제로 숨겨진 함정이 있으며, 이러한 외적 매력을 위해 제한된 기능으로 인해 우회할 수 없습니다.

[삭제]  
fxsaber :

표시기의 OnDeinit에서 틱을 얻는 방법은 무엇입니까? 이미 tkc 파일에 있고 거의 즉시 제공되는 틱을 얻고 싶습니다. 그러나 어떤 틱이 있고 어떤 것이 아닌지 결정하는 방법은 무엇입니까?

CopyTicks의 단순함의 모든 외적 매력 뒤에는 실제로 숨겨진 함정이 있으며, 이러한 외적 매력을 위해 제한된 기능으로 인해 우회할 수 없습니다.

OnDeinit()에서 틱을 받는 이유는 무엇입니까?
 
Alexey Kozitsyn :
OnDeinit()에서 틱을 받는 이유는 무엇입니까?

사용자 지정 기호를 만들고 이미 tkc 파일에 있는 변환된 전체 틱 기록 (특정 날짜부터)을 기록해야 합니다. 차에 없는 틱은 관심 없습니다. 따라서 이러한 작업으로 인해 표시기가 느려져서는 안 됩니다. 그러나 CopyTicks에서는 이러한 방식으로 틱을 얻을 수 없습니다.

 
OnInit에서 다른 사람의 기호를 확인하려고 합니다.
 #include <Trade\Trade.mqh>

bool OpenPos( const string Symb )
{
   static CTrade Trade;
  
   return (Trade.Buy( 1 , Symb));
}

void OnInit ()
{
   Sleep ( 3600 * 1000 );    
  
  OpenPos( "NZDUSD" ); // Заставляем Агент получить тики по чужому символу

   MqlTick Ticks[];
  
   Print ( CopyTicks ( "NZDUSD" , Ticks, COPY_TICKS_INFO , 0 , 5 )); // 0
  
   ArrayPrint (Ticks);
}


결과

MetaTester 5 started on 127.0 . 0.1 : 3000
initialization finished
login (build 1653 )
template file tester.tpl added. 2398 bytes loaded
38520 bytes of account info loaded
1482 bytes of tester parameters loaded
188 bytes of input parameters loaded
3456 bytes of symbols list loaded
expert file added: Experts\Test4.ex5. 44667 bytes loaded
initial deposit 10000000.00 USD, leverage 1 : 500
successfully initialized
48 Kb of total initialization data received
Intel Core i7- 2700 K  @ 3.50 GHz, 16301 MB
EURUSD: symbol to be synchronized
EURUSD: symbol synchronized, 3464 bytes of symbol info received
EURUSD: history synchronization started
EURUSD: load 27 bytes of history data to synchronize in 0 : 00 : 00.000
EURUSD: history synchronized from 2016.01 . 04 to 2017.10 . 11
EURUSD: ticks synchronization started
EURUSD: load 34 bytes of tick data to synchronize in 0 : 00 : 00.000
EURUSD: history ticks synchronized from 2017.04 . 03 to 2017.10 . 10
EURUSD,M1: history cache allocated for 667542 bars and contains 651824 bars from 2016.01 . 04 00 : 00 to 2017.09 . 29 23 : 59
EURUSD,M1: history begins from 2016.01 . 04 00 : 00
EURUSD,M1 (MetaQuotes-Demo): generating based on real ticks
EURUSD,M1: testing of Experts\Test4.ex5 from 2017.10 . 01 00 : 00 to 2017.10 . 11 00 : 00 started
EURUSD : real ticks begin from 2017.04 . 03 00 : 00 : 00
EURUSD : 2017.10 . 01 00 : 00 - 2017.10 . 11 00 : 00   last prices absent for 7 whole days, bars built by bid prices
NZDUSD: symbol to be synchronized
NZDUSD: symbol synchronized, 3464 bytes of symbol info received
NZDUSD: history synchronization started
NZDUSD: load 27 bytes of history data to synchronize in 0 : 00 : 00.000
NZDUSD: history synchronized from 2016.01 . 04 to 2017.10 . 11
NZDUSD: ticks synchronization started
NZDUSD: load 34 bytes of tick data to synchronize in 0 : 00 : 00.000
NZDUSD: history ticks synchronized from 2017.10 . 02 to 2017.10 . 10
2017.10 . 01 01 : 00 : 00    instant buy 1.00 NZDUSD at 0.72043 ( 0.72017 / 0.72043 )
2017.10 . 01 01 : 00 : 00    deal # 2 buy 1.00 NZDUSD at 0.72043 done (based on order # 2 )
2017.10 . 01 01 : 00 : 00    deal performed [# 2 buy 1.00 NZDUSD at 0.72043 ]
2017.10 . 01 01 : 00 : 00    order performed buy 1.00 at 0.72043 [# 2 buy 1.00 NZDUSD at 0.72043 ]
2017.10 . 01 01 : 00 : 00    CTrade::OrderSend: instant buy 1.00 NZDUSD at 0.72043 [done at 0.72043 ]
2017.10 . 01 01 : 00 : 00    true
2017.10 . 01 01 : 00 : 00    0
NZDUSD : real ticks begin from 2017.10 . 02 00 : 00 : 00
NZDUSD : 2017.10 . 01 00 : 00 - 2017.10 . 11 00 : 00   last prices absent for 7 whole days, bars built by bid prices


저것들. 다른 기호의 시작 부분에 눈금 데이터가 없습니다. 그리고 데이터베이스의 틱은 OnTick이 나타날 때 형성됩니다. 이것이 의도한 방식입니까, 아니면 주요 테스트 기호뿐만 아니라 외국 기호의 눈금을 사용할 수 있어야 합니까?

 
문서의 이 인용문은 무엇을 의미합니까?

Примечание

CopyTicksRange() 함수는 예를 들어 기록의 특정 날짜에 대해 엄격하게 지정된 범위에서 틱을 요청하도록 설계되었습니다. CopyTicks() 사용 하면 시작 날짜만 지정할 수 있지만, 예를 들어 월 초부터 현재 시점까지의 모든 틱을 가져올 수 있습니다.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicksRange
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyTicksRange
  • www.mql5.com
[out]  Cтатический или динамический массив MqlTick для приема тиков. Если в статический массив не вмещаются все тики из запрошенного интервала времени, то будет получено столько тиков, сколько помещается в массив. При этом функция сгенерирует ошибку ERR_HISTORY_SMALL_BUFFER (4407) . ERR_NOT_ENOUGH_MEMORY – не хватает памяти для получения...
 

CopyTicks는 Market Watch에 포함된 기호에서만 작동합니다. 그리고 이것은 사용자 정의 기호가 출현하기 전에 항상 논리적이었습니다.

세관에는 광범위한 적용 분야가 있으며 항상 시장 감시에 이러한 기호가 필요한 것은 아닙니다. 그러나 CopyTicks를 통해 틱 기록 의 일부를 가져와야 할 수도 있습니다.

따라서 Market Watch에서 사용자 지정이 선택되지 않은 경우 사용자 지정 기호에 대한 CopyTicks 오류 반환을 비활성화하십시오.

 
사용자 지정 기호의 경우 총 눈금 수를 찾으려면 CopyTicksRange(Symb, Ticks) ( 더하기 this )를 사용하고 배열의 크기를 확인해야 합니다. 그러나 이것은 매우 낭비입니다!