Non c'è modo di ottenere la storia. Ho provato questo:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE );
Ho provato questo:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, 0, inpStartTime*1000 );
Provato questo:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000 );
Provato questo:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000, (inpStartTime+72000)*1000 );
La risposta è sempre la stessa:
2016.11.30 21:36:45.965 UseCopyTicks: Получено 288181 тиков за 93009 мкс
2016.11.30 21:36:47.908 UseCopyTicksRange: ОШИБКА #4401 (Запрашиваемая история не найдена). Тики не получены!
2016.11.30 21:36:48.011 UseCopyTicks: Получено 288186 тиков за 102971 мкс
2016.11.30 21:36:49.992 UseCopyTicksRange: ОШИБКА #4401 (Запрашиваемая история не найдена). Тики не получены!
2016.11.30 21:36:50.090 UseCopyTicks: Получено 288189 тиков за 98423 мкс
Provato su futures VTBR-12.16, BR-12.16, RTS-12.16. Provato su tick COPY_TICKS_ALL - stesso risultato. Cari sviluppatori, state trollando gli utenti? O siete semplicemente annoiati di testare i vostri sviluppi prima del rilascio?
Non c'è modo di ottenere la storia. Ho provato questo:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE );
Ho provato questo:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, 0, inpStartTime*1000 );
Provato questo:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000 );
Provato questo:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000, (inpStartTime+72000)*1000 );
La risposta è sempre la stessa:
2016.11.30 21:36:45.965 UseCopyTicks: Получено 288181 тиков за 93009 мкс
2016.11.30 21:36:47.908 UseCopyTicksRange: ОШИБКА #4401 (Запрашиваемая история не найдена). Тики не получены!
2016.11.30 21:36:48.011 UseCopyTicks: Получено 288186 тиков за 102971 мкс
2016.11.30 21:36:49.992 UseCopyTicksRange: ОШИБКА #4401 (Запрашиваемая история не найдена). Тики не получены!
2016.11.30 21:36:50.090 UseCopyTicks: Получено 288189 тиков за 98423 мкс
Provato su futures VTBR-12.16, BR-12.16, RTS-12.16. Provato su tick COPY_TICKS_ALL - stesso risultato. Cari sviluppatori, state trollando gli utenti? O siete semplicemente annoiati di testare i vostri sviluppi prima del rilascio?
Demotivator È la centesima modifica e ancora non funziona...
http://demotivatorium.ru/sstorage/3/2012/03/2703120956251657.jpgNon c'è modo di ottenere la storia. Ho provato questo:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE );
Ho provato questo:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, 0, inpStartTime*1000 );
Ho provato questo:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000 );
Provato questo:
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000, (inpStartTime+72000)*1000 );
La risposta è sempre la stessa:
2016.11.30 21:36:45.965 UseCopyTicks: Получено 288181 тиков за 93009 мкс
2016.11.30 21:36:47.908 UseCopyTicksRange: ОШИБКА #4401 (Запрашиваемая история не найдена). Тики не получены!
2016.11.30 21:36:48.011 UseCopyTicks: Получено 288186 тиков за 102971 мкс
2016.11.30 21:36:49.992 UseCopyTicksRange: ОШИБКА #4401 (Запрашиваемая история не найдена). Тики не получены!
2016.11.30 21:36:50.090 UseCopyTicks: Получено 288189 тиков за 98423 мкс
Provato su futures VTBR-12.16, BR-12.16, RTS-12.16. Provato su tick COPY_TICKS_ALL - stesso risultato. Cari sviluppatori, state trollando gli utenti? O siete semplicemente annoiati di testare i vostri sviluppi prima del rilascio?
Chi non lavora, mangia studente
Imparare lo studente
http://rusdemotivator.ru/uploads/posts/2013-03/1362153136_s01bb56czdsk.jpg
Imparare lo studente
http://rusdemotivator.ru/uploads/posts/2013-03/1362153136_s01bb56czdsk.jpg
Penso che sia solo un bug nella documentazione web, è davvero ancora vuoto in ME. Oppure la funzione è ancora in sviluppo. In secondo luogo, stai richiedendo dati da qualche parte dal 1970 e ti chiedi perché le zecche del secolo scorso non stanno restituendo ))!!! Cosa stai fumando lì?
È così che funziona.
{
datetime dt1 = D'2016.11.28 00:00:00', dt2 = D'2016.11.30 00:00:00';
MqlTick ticks[];
ulong start, msc;
//--- Замеряем время старта перед получением тиков
start=GetMicrosecondCount();
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_ALL, dt1*1000, dt2*1000);
//--- Рассчитаем, за сколько мс получена история
msc=GetMicrosecondCount()-start;
Print("copied=", copied, " msc=", msc);
return;
}
// вывод
2016.12.01 04:52:08.134 TestCopyTicks (EURUSD.m,M15) copied=333081 msc=1294871
2016.12.01 04:52:16.877 TestCopyTicks (EURUSD.m,M15) copied=333081 msc=318596
***
Penso che sia solo un bug nella documentazione web, non è ancora in ME. Oppure la funzione è ancora in sviluppo. In secondo luogo, stai richiedendo dati da qualche parte dal 1970 e ti chiedi perché le zecche del secolo scorso non stanno restituendo ))!!! Cosa stai fumando lì?
È così che funziona.
{
datetime dt1 = D'2016.11.28 00:00:00', dt2 = D'2016.11.30 00:00:00';
MqlTick ticks[];
ulong start, msc;
//--- Замеряем время старта перед получением тиков
start=GetMicrosecondCount();
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_ALL, dt1*1000, dt2*1000);
//--- Рассчитаем, за сколько мс получена история
msc=GetMicrosecondCount()-start;
Print("copied=", copied, " msc=", msc);
return;
}
// вывод
2016.12.01 04:52:08.134 TestCopyTicks (EURUSD.m,M15) copied=333081 msc=1294871
2016.12.01 04:52:16.877 TestCopyTicks (EURUSD.m,M15) copied=333081 msc=318596
***
Alexey, grazie per aver partecipato ai test. Come potete vedere, ho provato sia da una data specifica che a una data specifica e senza data. Ma il punto è: 1. Ho usato __DATE__ e sembra che ci siano problemi con le sostituzioni di macro; 2. Ho testato su futures; Sì, se guardi la documentazione - dovrebbe almeno aver iniziato a caricare i tick. Tuttavia - non succede niente.
Hai provato ad eseguire il mio indicatore nel tuo ambiente?
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Continuare a lottare per migliorare: zecche, accesso alle zecche e sincronizzazione delle zecche. @Slawa, @Renat Fatkhullin e i responsabili delle zecche, per favore unitevi alla discussione. Credo che troveremo più di un errore. Inoltre, penso che sarà interessante per @fxsaber, @coderex e altri utenti di tick.
Cominciamo:
1. Non c'è una parola sulla nuova funzione CopyTicksRange() nella documentazione di ME build 1486. Non è molto utile dal sito web. Aggiungilo alla documentazione dell'editor, per favore;
2. Quando si cerca di richiedere i tick tramite CopyTicksRange():
int copied = CopyTicksRange( _Symbol, ticks, COPY_TICKS_TRADE, inpStartTime*1000 );
Otteniamo costantemente -1 e l'errore #4401 "storia richiesta non trovata". E dovrebbe essere così:
Если параметр to_msc не указан, то отдаются все тики до конца истории.
Il codice è completamente qui sotto:
//| test_CopyTicksRange.mq5 |
//| Tapochun |
//| https://www.mql5.com/ru/users/tapochun |
//+------------------------------------------------------------------+
#property copyright "Tapochun"
#property link "https://www.mql5.com/ru/users/tapochun"
#property version "1.00"
#property indicator_chart_window
#property indicator_plots 0
//---
#include <errordescription.mqh>
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
input datetime inpStartTime=__DATE__; // Время начала загрузки истории
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
if(prev_calculated<=0)
{
//---
UseCopyTicksRange();
//---
UseCopyTicks();
}
//---
return(rates_total);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void UseCopyTicksRange()
{
MqlTick ticks[];
//--- Замеряем время старта перед получением тиков
ulong start=GetMicrosecondCount();
//--- Запрашиваем тиковую историю
int copied=CopyTicksRange(_Symbol,ticks,COPY_TICKS_TRADE,inpStartTime*1000);
//--- Рассчитаем, за сколько мс получена история
ulong msc=GetMicrosecondCount()-start;
//--- Проверяем количество скопированных тиков
if(copied>0) // Если история получена
{
//--- Выведем информацию о количестве тиков и затраченном времени
Print(__FUNCTION__,": Получено ",copied," тиков за ",msc," мкс");
//--- Проверка синхронизации тиковой истории
if(GetLastError()==0) // Если история синхронизирована
{
//--- Выходим
return;
}
else // Если история рассинхронизирована - сообщение
{
Print(__FUNCTION__,": Получено ",copied," тиков за ",msc," мкс. Тики еще не синхронизированы!");
return;
}
}
else if(copied==0) // Если получено 0 тиков - сообщение
Print(__FUNCTION__,": ВНИМАНИЕ! Получено 0 тиков. Возможно установлен некорректный параметр from ("+
TimeToString(inpStartTime,TIME_DATE|TIME_SECONDS)+".",inpStartTime*1000%1000,"). Текущее время "+TimeToString(TimeCurrent()));
else // Если тики не получены - ошибка
Print(__FUNCTION__,": ОШИБКА #",GetLastError()," ("+ErrorDescription(_LastError)+"). Тики не получены!");
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void UseCopyTicks()
{
MqlTick ticks[];
//--- Замеряем время старта перед получением тиков
ulong start=GetMicrosecondCount();
//--- Запрашиваем тиковую историю
int copied=CopyTicks(_Symbol,ticks,COPY_TICKS_TRADE,inpStartTime*1000,10000000);
//--- Рассчитаем, за сколько мс получена история
ulong msc=GetMicrosecondCount()-start;
//--- Проверяем количество скопированных тиков
if(copied>0) // Если история получена
{
//--- Выведем информацию о количестве тиков и затраченном времени
Print(__FUNCTION__,": Получено ",copied," тиков за ",msc," мкс");
//--- Проверка синхронизации тиковой истории
if(GetLastError()==0) // Если история синхронизирована
{
//--- Выходим
return;
}
else // Если история рассинхронизирована - сообщение
{
Print(__FUNCTION__,": Получено ",copied," тиков за ",msc," мкс. Тики еще не синхронизированы!");
return;
}
}
else if(copied==0) // Если получено 0 тиков - сообщение
Print(__FUNCTION__,": ВНИМАНИЕ! Получено 0 тиков. Возможно установлен некорректный параметр from ("+
TimeToString(inpStartTime,TIME_DATE|TIME_SECONDS)+".",inpStartTime*1000%1000,"). Текущее время "+TimeToString(TimeCurrent()));
else // Если тики не получены - ошибка
Print(__FUNCTION__,": ОШИБКА #",GetLastError()," ("+ErrorDescription(_LastError)+"). Тики не получены!");
}
//+------------------------------------------------------------------+
CopyTicks() restituisce un risultato corretto.