그리고 MT5의 새 버전은 언제이며 예상되는 내용은 어디에서 찾을 수 있습니까? - 페이지 26

 

틱 기록 의 깊이를 결정하는 프로그래밍 방식이 있습니까?

다음과 같이 시도했습니다.

 void OnStart ()
  {
MqlTick ExTicks[];  
datetime tm= StringToTime ( "1971.01.01 00:00:00" );
//--- вывод результата
ulong m=tm* 1000 ; 
int copied= CopyTicks ( _Symbol ,ExTicks, COPY_TICKS_ALL ,m);
Print ( "Получено тиков: " ,copied, " код ошибки: " , GetLastError ());
 
  }

항상 2000 틱을 얻습니다. 도움말에는 시간을 지정하지 않으면 2000틱 이하로 전송된다고 쓰여 있습니다. 밀리초 단위로 표시된 시간은 초에 1000을 곱한 것입니다.

도움말은 또한 이것이 현재 세션에 대한 틱임을 나타냅니다. 즉, 과거 데이터에 액세스할 수 없다는 것이 밝혀졌습니다.

 
forexman77 :

틱 기록 의 깊이를 결정하는 프로그래밍 방식이 있습니까?

다음과 같이 시도했습니다.

항상 2000 틱을 얻습니다. 도움말에는 시간을 지정하지 않으면 2000틱 이하로 전송된다고 쓰여 있습니다. 밀리초 단위로 표시된 시간은 초에 1000을 곱한 것입니다.

도움말은 또한 이것이 현재 세션에 대한 틱임을 나타냅니다. 즉, 과거 데이터에 액세스할 수 없다는 것이 밝혀졌습니다.

모든 진드기를 얻으시겠습니까? :)

먼저, 컴퓨터가 너무 많은 진드기를 뽑는지 확인하십시오(컴퓨터가 소진된 경우 내 잘못이 아닙니다).

 //+------------------------------------------------------------------+
//|                                                CopyTicks_1_02.mq5|
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.031"
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
input int   ticks= 200000000000 ;   // количество запрашиваемых тиков
input datetime start= D'1971.01.01 23:59' ; // с какой даты запрашивать тики
//---
MqlTick ExTicks[];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//--- запросим тики
   int copied= CopyTicks ( _Symbol ,ExTicks, COPY_TICKS_ALL ,( ulong )start* 1000 ,ticks);
//--- если тики получены, то выведем на график значения Bid и Ask  
   Print ( "Получено тиков: " ,copied, " код ошибки: " , GetLastError ());
   if (copied> 1 )
     {
       Print ( "Тик: " ,ExTicks[ 0 ].time, " bid: " ,ExTicks[ 0 ].bid, " ask: " ,ExTicks[ 0 ].ask, " last: " ,ExTicks[ 0 ].last, " [0]" );
       Print ( "Тик: " ,ExTicks[copied- 1 ].time, " bid: " ,ExTicks[copied- 1 ].bid, " ask: " ,ExTicks[copied- 1 ].ask, " last: " ,ExTicks[copied- 1 ].last, " [" ,copied- 1 , "]" );

       //datetime Start =D'2015.10.16 23:59';   // время наступления 2015 года
       //datetime End   =D'2015.10.19 00:02';   // время наступления 2015 года
       //for(int i=0;i<copied-1;i++)
       //   if(ExTicks[i].time>Start && ExTicks[i].time<End)
       //      Print("Тик: ",ExTicks[i].time," bid: ",ExTicks[i].bid," ask: ",ExTicks[i].ask," last: ",ExTicks[i].last," [i]");
     }
   Print ( "Size " ,(( long )copied* sizeof ( MqlTick ))>> 20 , " Mb" );
  }
//+------------------------------------------------------------------+
파일:
 
Karputov Vladimir :

모든 진드기를 얻으시겠습니까? :)

먼저, 컴퓨터가 너무 많은 진드기를 뽑는지 확인하십시오(컴퓨터가 소진된 경우 내 잘못이 아닙니다).

예, 데이터가 있는 날짜(즉, 실제 틱에 대한 테스트를 실행할 수 있는 날짜부터)를 알아야 합니다.

그리고 컴퓨터가 요구하는 것이 문제가 되지 않는 것은 어느 정도입니까? 태우라고 과장해서 매달릴 확률이 더 높겠죠?

 
forexman77 :

예, 데이터가 있는 날짜(즉, 실제 틱에 대한 테스트를 실행할 수 있는 날짜부터)를 알아야 합니다.

그리고 컴퓨터가 요구하는 것이 문제가 되지 않는 것은 어느 정도입니까? 태우라고 과장해서 매달릴 확률이 더 높겠죠?

"200000000000"을 "20000"으로 바꾸고 날짜(1971년의 임의 날짜)를 입력합니다. 이 경우 스크립트를 두 번 이상 실행해야 할 가능성이 매우 높습니다. 사실은 첫 번째 요청 시 전체 히스토리의 다운로드가 초기화되고(결국 히스토리는 1971년 이후 주문) 스크립트가 오랫동안 응답하지 않으면 사용 가능한 데이터를 수신하게 되는데, 그러나 다운로드는 계속됩니다. 따라서 두 번째 쿼리는 더 깊은 기록을 표시할 수 있습니다.
 
forexman77 :

틱 기록 의 깊이를 결정하는 프로그래밍 방식이 있습니까?

다음과 같이 시도했습니다.

항상 2000 틱을 얻습니다. 도움말에는 시간을 지정하지 않으면 2000틱 이하로 전송된다고 쓰여 있습니다. 밀리초 단위로 표시된 시간은 초에 1000을 곱한 것입니다.

도움말은 또한 이것이 현재 세션에 대한 틱임을 나타냅니다. 즉, 과거 데이터에 액세스할 수 없다는 것이 밝혀졌습니다.

반환 값이 INT_MAX보다 크면 기호에 대한 모든 틱을 얻을 수 없습니다.

기능 CopyTicks - 정수. 따라서 부분적으로 받아야 합니다.

 
prostotrader :

반환 값이 INT_MAX보다 크면 기호에 대한 모든 틱을 얻을 수 없습니다.

기능 CopyTicks - 정수. 따라서 부분적으로 받아야 합니다.

그러나 20,000(2만) 틱만 요청하여 틱의 시작 날짜를 찾을 수 있습니다. 가장 중요한 것은 시작 날짜를 지정하는 것입니다. 그러면 이 날짜에 틱이 없고 1971년이 가장 적합합니다.
 
Karputov Vladimir :
그러나 20,000(2만) 틱만 요청하여 틱의 시작 날짜를 찾을 수 있습니다. 가장 중요한 것은 시작 날짜를 지정하는 것입니다. 그러면 이 날짜에 틱이 없고 1971년이 가장 적합합니다.

많은 데이터를 요청했는데 정말 강력한 제동이 시작되었습니다.

 2016.08 . 21 22 : 24 : 03.918 CopyTicks (EURUSD,H1)   Size 2826 Mb
2016.08 . 21 22 : 24 : 03.918 CopyTicks (EURUSD,H1)   Тик: 2016.05 . 25 16 : 54 : 25 bid: 1.11497 ask: 1.11505 last: 0.0 [ 56999999 ]
2016.08 . 21 22 : 24 : 03.918 CopyTicks (EURUSD,H1)   Тик: 2016.01 . 13 09 : 45 : 44 bid: 1.08206 ask: 1.08236 last: 0.0 [ 0 ]
2016.08 . 21 22 : 24 : 03.903 CopyTicks (EURUSD,H1)   Получено тиков: 57000000 код ошибки: 0

내 작업에는 100틱이면 충분합니다. 일반적으로 감사합니다!

 2016.08 . 21 22 : 36 : 42.234 CopyTicks (EURUSD,H1)   Size 0 Mb
2016.08 . 21 22 : 36 : 42.234 CopyTicks (EURUSD,H1)   Тик: 2016.01 . 13 09 : 46 : 01 bid: 1.08206 ask: 1.08236 last: 1.08215 [ 99 ]
2016.08 . 21 22 : 36 : 42.234 CopyTicks (EURUSD,H1)   Тик: 2016.01 . 13 09 : 45 : 44 bid: 1.08206 ask: 1.08236 last: 0.0 [ 0 ]
2016.08 . 21 22 : 36 : 42.234 CopyTicks (EURUSD,H1)   Получено тиков: 100 код ошибки: 0
 
Renat Fatkhullin :
예, 사용자 정의 차트 및 자체 데이터 피드를 곧 사용할 수 있습니다.

안녕하세요 Renat, 이러한 기능에 대한 업데이트가 있습니까? (다른 곳에 있다면 제가 찾지 못한 점 죄송합니다.)

안녕하세요 Renat, 이러한 기능에 대한 소식이 있습니까? (이미 어딘가에 존재한다면 찾을 수 없습니다.)