Тестируем 'CopyTicks' - страница 3

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- Форексный VPS бесплатно на 24 часа
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я не тестирую, а напоминаю разработчикам. Практика показывает, что это не бывает лишним))
Насчет направления сделки - на фортс оно дается всегда биржей.
Тот алгоритм, который сейчас в терминале используется, не годится для этого - надо брать инфу с биржи обязательно.
Я не тестирую, а напоминаю разработчикам. Практика показывает, что это не бывает лишним))
Насчет направления сделки - на фортс оно дается всегда биржей.
Тот алгоритм, который сейчас в терминале используется, не годится для этого - надо брать инфу с биржи обязательно.
Тут просто уже несколько тем про copyticks (и mqltickinfo) заканчиваются на "ждемс".
Вот еще, например:
https://www.mql5.com/ru/forum/61607
Так что действительно, "ждемс" :-)
А как сейчас, в 1210 билде, обстоят дела с CopyTicks()?
А как сейчас, в 1210 билде, обстоят дела с CopyTicks()?
Почти работает. Двойников нет. Объемы не пропадают.
Но, направление сделок во флагах отсутствует. Вычисление по бид/аск не дает должной верности.
Структура реальная - старая и отличается от описанной в хелпе. Так понимаю, что это промежуточный билд. Посему, как всегда, ждем следующего))
Почти работает. Двойников нет. Объемы не пропадают.
Но, направление сделок во флагах отсутствует. Вычисление по бид/аск не дает должной верности.
Структура реальная - старая и отличается от описанной в хелпе. Так понимаю, что это промежуточный билд. Посему, как всегда, ждем следующего))
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
MqlTick
zimbabve15, 2016.02.03 06:15
Брокер "Открытие" инструмент ED-3.16 левая таблица - тиковые данные пишутся индикатором в процедуре OnCalculate через запрос SymbolInfoTick , правая таблица - через CopyTicks. Структура и там и там: время, бид, аск, ласт, объем, время_мсек, флаг.
Почему у одних и тех же тиков имеем разные значения объемов и флагов?
Если с рынка получаем через SymbolInfoTick сырые данные от брокера с нулевыми флагами, то выходит, что уже терминал обрабатывает пришедший тик и по результатам сравнения с предыдущим присваивает ему флаг? Как тогда быть с объемами? Разница значительная.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
MqlTick
zimbabve15, 2016.02.03 06:39
Брокер FiboFroup левая таблица тики через SymbolInfoTick , правая таблица - через CopyTicks. Структура и там и там: время, бид, аск, ласт, объем, время_мсек, флаг.
Флаги разные, т.к. пляшут значения bid/ask в одних и тех же тиках, записанных разными способами.
CopyTicks
//////////////////////////////////////////////////////////////////////////////////////////////////////////
MqlTick tick_array[];
int OnInit()}
void SaveTicksToFile(MqlTick &massiveTicks[])
{
string filename,file_buffer;
StringConcatenate(filename,Symbol(),".txt");
int file_handle=FileOpen(filename,FILE_READ|FILE_WRITE|FILE_ANSI|FILE_SHARE_READ);
FileSeek(file_handle,0,SEEK_END);
int sizeMassiveTicks=ArraySize(massiveTicks);
int i=0;
while(i<sizeMassiveTicks)
{
StringConcatenate(file_buffer,TimeToString(massiveTicks[i].time,TIME_DATE|TIME_SECONDS)," ",DoubleToString(massiveTicks[i].bid,_Digits)," ",DoubleToString(massiveTicks[i].ask,_Digits)," ",DoubleToString(massiveTicks[i].last,_Digits)," ",IntegerToString(massiveTicks[i].volume,_Digits)," ",IntegerToString(massiveTicks[i].time_msc)," ",IntegerToString(massiveTicks[i].flags,_Digits));
FileWrite(file_handle,file_buffer);
i++;
}
FileClose(file_handle);
}
SymbolInfoTick
////////////////////////////////////////////////////////////////////////
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[])
{
MqlTick last_tick;
SymbolInfoTick(Symbol(),last_tick);
TickStruct tick={0,0,0,0,0,0,0};
tick.time=TimeCurrent();
tick.bid=last_tick.bid;
tick.ask=last_tick.ask;
tick.flag=last_tick.flags;
tick.last=last_tick.last;
tick.time_msc=last_tick.time_msc;
tick.volume=last_tick.volume;
int total=ArraySize(g_ticks);
if(ArrayResize(g_ticks,total+1,1000)<0)
{
Alert(": индикатору не хватает памяти для сохранения данных об очередном тике.");
}
else
{
g_ticks[total]=tick;
UpTick[rates_total-1]=total;
}
if(total>999)
{
SaveTempTicks();
ArrayFree(g_ticks);
}
return(rates_total);
}
void SaveTempTicks()
{
// Создание файла тиковой истории
int hTicksFile=FileOpen(Symbol()+"fullTicks.tks",FILE_BIN|FILE_READ|FILE_WRITE|FILE_SHARE_READ|FILE_SHARE_WRITE);
if(hTicksFile<1)
return;
FileSeek(hTicksFile,0,SEEK_END);
// Запись файла
int total=ArraySize(g_ticks),i=0;
while(i<total)
{
if(FileWriteStruct(hTicksFile,g_ticks[i])==0)
{
Print("Ошибка сохранения данных во временный файл...");
return;
}
i++;
}
FileClose(hTicksFile);
}