Этот форум переведен в режим чтения, просим обсуждать вопросы на форумах MQL4.community и MQL5.community
|
Jhonny
18.10.2006 08:44
Я думаю в предложенном solandrом есть рациональное зерно, но лично мне они нужны для исследований и я боюсь что за неделю врядли что то серьезное смогу предоставить, а заготовка индикатора такого у меня есть как раз за неделю до возникновения ветки один мой товарищ написал, только там проблемма он затирает файл с тиками после каждой инициализации, а доделать руки ни у него и ни у меня не дошли. Формирует бары по фиксированному объему, так как иногда тик приходит а объем поменялся не на 1.
//+------------------------------------------------------------------+
//| TickSaver.mq4 |
//| Copyright © 2006, Cherednikov K.M. |
//| mailto:chkm76@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Cherednikov K.M."
#property link "mailto:chkm76@mail.ru"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Black
#include <WinUser32.mqh>
//---- input parameters
extern int NumTicksPerBar=3;
extern int Minutes_for_HSTfilename=3;
//---- buffers
double ExtMapBuffer1[];
//---- глобальные переменные
int hFile=-1;
int iFilePos;
int CurrTickNumber=0;
datetime i_time, i_time_bar0;
double d_open, d_low, d_high, d_close, d_volume;
double d_low_bar0, d_high_bar0, d_volume_bar0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
int nVersion=400;
string szCopyright;
string szSymbol=Symbol();
int iDigits=Digits;
int iUnused[13];
//---- indicators
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
hFile=FileOpenHistory(szSymbol + Minutes_for_HSTfilename + ".hst", FILE_READ);
if(FileSize(hFile)<0){
// Дабы не затереть реальные файлы историй, в имя файла добавлен "0" перед периодом
hFile=FileOpenHistory(szSymbol + Minutes_for_HSTfilename + ".hst", FILE_BIN|FILE_WRITE);
if(hFile < 0) return(-1);
//---- Записать заголовок hst-файла
szCopyright="(C)opyright 2003, MetaQuotes Software Corp.";
FileWriteInteger(hFile, nVersion, LONG_VALUE);
FileWriteString(hFile, szCopyright, 64);
FileWriteString(hFile, szSymbol, 12);
FileWriteInteger(hFile, Minutes_for_HSTfilename, LONG_VALUE); // файл - М2
FileWriteInteger(hFile, iDigits, LONG_VALUE);
FileWriteInteger(hFile, 0, LONG_VALUE);
FileWriteInteger(hFile, 0, LONG_VALUE);
FileWriteArray(hFile, iUnused, 0, 13);
FileFlush(hFile);
iFilePos=FileTell(hFile);
}
else{ iFilePos=FileTell(hFile); }
i_time = CurTime();
i_time_bar0 = Time[0];
d_open = Close[0];
d_low = d_open;
d_high = d_open;
d_close = d_open;
d_volume = 1;
d_volume_bar0 = Volume[0];
/*d_low_bar0 = Low[0];
d_high_bar0 = High[0];*/
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
if(hFile>=0)
{
FileClose(hFile);
hFile=-1;
}
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
CurrTickNumber++;
//********* Обновление данных в переменных текущего бара **************
d_close = Close[0];
if (d_low > d_close) d_low = d_close;
if (d_high < d_close) d_high = d_close;
// Объем
if (i_time_bar0!=Time[0]) // если на реальном графике появился новый бар, а для
// нас еще не набралось тиков закончить тиковый бар...
{ //расчитать изменение объема с учетом пополнения предыдущего реального бара
d_volume += Volume[1] + Volume[0] - d_volume_bar0;
i_time_bar0 = Time[0];
}
else
{ //расчитать изменение объема только с учетом текущего реального бара
d_volume += Volume[0] - d_volume_bar0;
}
d_volume_bar0 = Volume[0];
// Обновление данных последнего бара
FileSeek(hFile, iFilePos, SEEK_SET);
FileWriteInteger(hFile, i_time, LONG_VALUE);
FileWriteDouble(hFile, d_open, DOUBLE_VALUE);
FileWriteDouble(hFile, d_low, DOUBLE_VALUE);
FileWriteDouble(hFile, d_high, DOUBLE_VALUE);
FileWriteDouble(hFile, d_close, DOUBLE_VALUE);
FileWriteDouble(hFile, d_volume, DOUBLE_VALUE);
if (CurrTickNumber==NumTicksPerBar)
{
iFilePos=FileTell(hFile);
CurrTickNumber=0;
i_time = CurTime();// / 60 / Minutes_for_HSTfilename;
//i_time *= 60 * Minutes_for_HSTfilename;
d_open = Close[0];
d_low = d_open;
d_high = d_open;
d_close = d_open;
d_volume = 1;
FileWriteInteger(hFile, i_time, LONG_VALUE);
FileWriteDouble(hFile, d_open, DOUBLE_VALUE);
FileWriteDouble(hFile, d_low, DOUBLE_VALUE);
FileWriteDouble(hFile, d_high, DOUBLE_VALUE);
FileWriteDouble(hFile, d_close, DOUBLE_VALUE);
FileWriteDouble(hFile, d_volume, DOUBLE_VALUE);
}
FileFlush(hFile);
// Обновление окна автономно открытого файла
int hwnd=WindowHandle(Symbol(), Minutes_for_HSTfilename);
if (hwnd!=0) PostMessageA(hwnd, WM_COMMAND, 33324, 0);
Comment("Отладочная Инфа: \n"+
"Тиков в баре: " + CurrTickNumber +
"\nOpen=" + d_open + " Close=" + d_close +
"\nHigh=" + d_high + " Low=" + d_low +
"\nVol=" + d_volume +
"\nПозиция файла: " + iFilePos
);
return(0);
}
//+------------------------------------------------------------------+ |
|
fuerMT
18.10.2006 12:19
лично мне кажется, что разработчики искусственно придумывают тех. проблемы чтобы оправдаться перед нежеланием (или невозможностью) доработки МТ в плане тиковой истории. Строка тикового файла (Time,Close,Volume) = (int,double,double) = (4,8,8,) = 20 байт. Котировки можно хранить в целых числах, умножив их на 10000 и 100(для Японцев) соответственно. Кроме того можно хранить ключевые точки и смещение относительно последней котировки. Это все - технические проблемы. Главная же проблема - стратегическая. Квотовцы НЕ ХОТЯТ и, я думаю, не будут этого делать. Только, если терминал потеснят конкуренты, возникнут предпосылки к созданию тикового терминала. Есть еще одна проблема. Клиенты не платят за терминал. Он оплачивается ДЦ, которые покупают сервера, а ДЦ НЕ ЗАИНТЕРЕСОВАНЫ в тиковом терминале, т.к. появяться умельцы-пипсовики, работающие на особенностях котировок ДЦ. |
|
solandr
18.10.2006 12:48
ДЦ НЕ ЗАИНТЕРЕСОВАНЫ в тиковом терминале, т.к. появяться умельцы-пипсовики, работающие на особенностях котировок ДЦ. Вряд ли ДЦ думают о том каким вообще должен быть терминал (таймовый или тиковый). У них сугубо другие интересы. Всё что нужно ДЦ наверное разработчики, думаю, что уже всё предоставили (разрешение/запрет автотрейдинга, отмена сделок по нерыночным ценам и т.д. и т.п.). Статистика чемпионата показывает, что любой ДЦ может организовать неплохую "кухню" и появление какого-то особого тикового терминала ничего принципиального не поменяет, по крайней мере ДЦ вряд ли будут сопротивляться его введению в эксплуатацию, если таковой будет разработан. Ну а поскольку детальных доказательств необходимости введения тиковых серий пока что нет, то и вопрос будет там же, где и сейчас. Было бы интересно взглянуть на результаты тиковых доказательств с платформы Omega, которая "делает что угодно - любые тик и тайм-фреймы". Хотя обсуждение брокеров уже выходит за рамки форума. Сейчас наверное всё тут подчистят?:o) |
|
komposter
18.10.2006 15:08
Я думаю в предложенном solandrом есть рациональное зерно, но лично мне они нужны для исследований и я боюсь что за неделю врядли что то серьезное смогу предоставить... "MQL4: Сборщик тиков" Эксперт сохраняет тиковую историю по указанным символам |
|
Yurixx
18.10.2006 20:36
Предлагаю от бесконечной и бессмысленной словесной полемики по вопросу тик-серий перейти к детальным доказательствам. Для это нужно сделать следующее. Желающие могут написать незамысловатый скрипт, который формирует тик-серии с выбранным объёмом тиков и записывает данные в CSV файл. Далее открыв этот файл в EXCEL можно будет стандартными средствами EXCEL построить график тик-серий. При наличии такого графика за неделю например при заданном тик-фрейме можно провести его сравнение со стандартным графиком МТ4 и показать что вот тик-график дал такие-то дополнительные точки входа/выхода, которые не могли быть никоим образом получены из стандартных таймсерий например при использовании трендовых линий поддержки/сопротивления, ну или ещё чего-нибудь там. Уважаемый solandr ! Почему Вас так раздражает эта полемика ? Почему Вы упорно считаете, что про будущее Вам все известно - и что надо делать, и что не надо ? Программа "построения доказательства", предложенная Вами, неверна в принципе. Вы хотите успешность торговли с помощью тиков сделать единственным достоверным аргументом. Если так рассуждать, то ни один из существующих т/ф вообще не нужен, - никто ведь не сообщил еще, что он добился радикального успеха благодаря конкретному т/ф. Сообщаю Вам. Взяв за основу period_converter, я давно уже написал эксперта, который не только пишет тиковую историю, но и отображает в реальном времени ее на графике. Таким образом, все, что можно делать на других т/ф, можно делать и на тиковом графике. Это еще раз говорит о том, какой мощный инструмент МТ4+МКЛ4. А также и о том, что сделать этот сервис встроенным не так уж сложно. Кроме того, я немало времени потратил на исследование тиковых данных. Абсолютно не имеет никакого значения, добился я благодаря этому успехов на рынке или нет. Люди добиваются чего-то или нет, благодаря их способностям и труду. Но для того, чтобы результат был получен, В ПЕРВУЮ очередь они должны иметь возможность. Это условие не достаточное, но необходимое ! :-) Почему спрашивается возможность для работы с тайм-фреймами есть, а с тик-фреймами нет ? Эта ситуация вполне объяснима ограниченностью возможностей (временнЫх, людских, или т.п.) разработчиков. Но она совершенно неприемлема с точки зрения полноты сервиса и его стратегии. Поэтому если на сегодняшний день она более-менее устраивает рынок, то завтра этого уже не будет. |
|
Yurixx
18.10.2006 20:43
2 Jhonny
Я думаю в предложенном solandrом есть рациональное зерно, но лично мне они нужны для исследований и я боюсь что за неделю врядли что то серьезное смогу предоставить, а заготовка индикатора такого у меня есть Вот-вот !. И я о том же. Кстати, эту штуку нужно реализовывать как эксперта. Индикатор пропускает тики ! Чтобы файл не затирался его надо открывать так : FILE_BIN|FILE_READ|FILE_WRITE А перед тем как писать в него надо установить указатель записи в конец файла. |
|
solandr
18.10.2006 20:51
Yurixx, я всего навсего высказал свою точку зрения! Это ведь свободный форум и каждый имеет право на высказывание своего мнения? Или же надо всегда слушать мнение большинства? Но ведь большинство "сливает" - посмотрите на Чемпионат!
Люди попросили разработчиков сделать тиковую историю, разработчики ответили категорическим отказом. Ну и что дальше? Вы будете просто писать здесь горы жалоб на то, что разработчики не прислушались к "пожеланиям трудящихся"? Я со своей стороны просто предложил рациональный вариант давления на разработчиков - всего навсего! Если всем нужны просто бесконечные словесные жалобы без реальных подвижек в вопросе, то, пожалуйста, я лично ничего против не имею. |
|
Jhonny
18.10.2006 20:53
"MQL4: Сборщик тиков" Эксперт сохраняет тиковую историю по указанным символам За эксперт конечно спасибо, но я так глянул на скорую руку, он вроде в csv сохраняет, а мой задумывался чтоб в хистори, и сразу ентот график автономно можно открыть и анализировать. |
|
komposter
18.10.2006 22:08
За эксперт конечно спасибо, но я так глянул на скорую руку, он вроде в csv сохраняет, а мой задумывался чтоб в хистори, и сразу ентот график автономно можно открыть и анализировать. "MQL4: simple_csv2fxt" Простой конвертер из csv в fxt. Надо объединить моего эксперта и этот скрипт, и чуток подлатать - будет то, что надо ;) |
|
Alexz
19.10.2006 12:14
Мне кажется что спроить нужны ли тиковые данные бесполезно потому что ответ очевиден - чем больше предоставляется возможностей, тем более полон и качественен сервис и всегда найдутся люди которым нужно одно или совсем другое... Ответ же на вопрос будет ли эта возможность реализована в скором времени? - так же очевидно будет "нет"... На то есть на мой взгляд одна важная причина... А именно - реализовано будет только то что приносит компании Метаквотес доход на данном этапе в форме заключения новых контрактов и это логично и правильно... Так как доход приносят посреднические компании (брокеры, ДЦ и т д) то и будет реализовано то что упрощает им жизнь, а отнюдь не то что им жизнь усложнит...
Тиковые же данные усложнят им жизнь по следующим причинам: 1. При доступности тиковых данных неизбежно возникнут эксперты торгующие на тиковом ТФ и соответственно возникнут ОГРОМНЫЕ трудности с перекрытием таких экспертов 2. Также при наличии достоверных тиковых данных станет доступной возможность обкатывать тиковых экспертов в тестере (что также повысит их число) 3. После доступа к тиковым данным общественность потребует доступа к РЕАЛЬНЫМ объемам :)))))) 4. И аж на 4-м месте нежелание или занятость разработчиков (был бы спрос со стороны ДЦ сделали бы за две недели :)) 5. И наконец "козырный" аргумент про сумасшедший траффик и место на диске... |
Скачай MetaTrader 5 (300 Кб, веб-установщик) — новый терминал для финансовых рынков
