Quando è la nuova versione di MT5 e dove si scopre cosa è previsto in essa? - pagina 26

 

C'è un modo software per determinare la profondità della storia del ticchettio?

Provato questo:

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());
 
  }

tutto il tempo ottiene 2.000 tick. L'aiuto dice che se non viene specificato il tempo, non vengono trasmesse più di 2000 zecche. Il tempo è specificato in millisecondi e i secondi sono moltiplicati per 1000.

Inoltre, l'aiuto specifica che si tratta di tick per la sessione corrente. Quindi, si scopre che i dati storici non sono accessibili?

 
forexman77:

C'è un modo software per determinare la profondità della storia del ticchettio?

Provato questo:

tutto il tempo ottiene 2.000 tick. L'aiuto dice che se non viene specificato il tempo, non vengono trasmesse più di 2000 zecche. Il tempo è specificato in millisecondi e i secondi sono moltiplicati per 1000.

Inoltre, l'aiuto specifica che si tratta di tick per la sessione corrente. Quindi, si scopre che non si può accedere ai dati storici?

Vuoi prendere tutte le zecche? :)

Per prima cosa, controlla se il tuo computer può contenere così tanti tick (se il tuo computer si brucia, non è colpa mia):

//+------------------------------------------------------------------+
//|                                                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");
  }
//+------------------------------------------------------------------+
File:
 
Karputov Vladimir:

Vuoi prendere tutti i tic? :)

Per prima cosa, controlla se il tuo computer può gestire così tanti tic (se il tuo computer si brucia, non è colpa mia):

Sì, ho bisogno di sapere da quale data ci sono dati (cioè da quale data è possibile eseguire un test su tick reali).

E quanto non è un problema per il computer da interrogare? Bruciarsi è un'esagerazione, è più probabile che si blocchi?

 
forexman77:

Sì, ho bisogno di sapere da quale data ci sono dati (cioè da quale data il test può essere eseguito su tick reali).

E quanto non è un problema per il computer da interrogare? Stai esagerando, è più probabile che si congeli?

Invece di "200000000000" metti "20000" e una data, qualsiasi data nel 1971. Detto questo, è molto probabile che avrete bisogno di eseguire lo script più di una volta. Il fatto è che la prima richiesta inizializzerà tutta la storia scaricata (perché avete ordinato la storia dal 1971), e se lo script non risponde per molto tempo, darà i dati che sono disponibili, ma il download andrà oltre. Pertanto, la seconda richiesta può mostrare una storia più profonda.
 
forexman77:

C'è un modo software per determinare la profondità della storia del ticchettio?

Provato questo:

tutto il tempo ottiene 2.000 tick. L'aiuto dice che se non viene specificato il tempo, non vengono trasmesse più di 2000 zecche. Il tempo è specificato in millisecondi e i secondi sono moltiplicati per 1000.

Inoltre, l'aiuto specifica che si tratta di tick per la sessione corrente. Quindi si scopre che non si può accedere ai dati storici?

Non potete ottenere tutti i tick per il simbolo, se sono più di INT_MAX, perché il valore di ritorno

della funzione CopyTicks è intero. Pertanto, è necessario ottenerli in parti.

 
prostotrader:

Non potete ottenere tutti i tick per carattere se sono maggiori di INT_MAX, perché il valore di ritorno

della funzione CopyTicks è intero. Perciò dovete procurarveli in parti.

Tuttavia, è possibile ottenere la data di inizio delle zecche richiedendo solo 20000 (ventimila) zecche - la cosa principale è specificare la data di inizio, che garantisce, che in questa data non c'erano ancora zecche e il 1971 è il migliore per questo.
 
Karputov Vladimir:
Tuttavia, è possibile scoprire la data di inizio delle zecche richiedendo solo 20000 (ventimila) zecche - la cosa principale è specificare la data di inizio, che garantisce che in questa data non c'erano ancora zecche, e 1971 è il modo migliore per farlo.

Richiesto un sacco di dati, è iniziata una frenata davvero forte:

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

Per il mio compito, 100 tick sono sufficienti. Grazie comunque!

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:
Sì, i grafici personalizzati e i propri datafeed saranno presto disponibili.

Ciao Renat, qualche aggiornamento su queste caratteristiche? (scusate se è da qualche altra parte, non l'ho trovato).

Ciao Renat, qualche aggiornamento su queste caratteristiche? (scusate se è altrove, non l'ho trovato).

Motivazione: