Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
//+------------------------------------------------------------------+ //| 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); } //+------------------------------------------------------------------+Котировки можно хранить в целых числах, умножив их на 10000 и 100(для Японцев) соответственно.
Кроме того можно хранить ключевые точки и смещение относительно последней котировки.
Это все - технические проблемы.
Главная же проблема - стратегическая.
Квотовцы НЕ ХОТЯТ и, я думаю, не будут этого делать. Только, если терминал потеснят конкуренты, возникнут предпосылки к созданию тикового терминала.
Есть еще одна проблема. Клиенты не платят за терминал.
Он оплачивается ДЦ, которые покупают сервера, а ДЦ НЕ ЗАИНТЕРЕСОВАНЫ в тиковом терминале, т.к. появяться умельцы-пипсовики, работающие на особенностях котировок ДЦ.
Вряд ли ДЦ думают о том каким вообще должен быть терминал (таймовый или тиковый). У них сугубо другие интересы. Всё что нужно ДЦ наверное разработчики, думаю, что уже всё предоставили (разрешение/запрет автотрейдинга, отмена сделок по нерыночным ценам и т.д. и т.п.). Статистика чемпионата показывает, что любой ДЦ может организовать неплохую "кухню" и появление какого-то особого тикового терминала ничего принципиального не поменяет, по крайней мере ДЦ вряд ли будут сопротивляться его введению в эксплуатацию, если таковой будет разработан. Ну а поскольку детальных доказательств необходимости введения тиковых серий пока что нет, то и вопрос будет там же, где и сейчас.
Было бы интересно взглянуть на результаты тиковых доказательств с платформы Omega, которая "делает что угодно - любые тик и тайм-фреймы".
Хотя обсуждение брокеров уже выходит за рамки форума. Сейчас наверное всё тут подчистят?:o)
"MQL4: Сборщик тиков"
Эксперт сохраняет тиковую историю по указанным символам
Уважаемый solandr !
Почему Вас так раздражает эта полемика ? Почему Вы упорно считаете, что про будущее Вам все известно - и что надо делать, и что не надо ?
Программа "построения доказательства", предложенная Вами, неверна в принципе. Вы хотите успешность торговли с помощью тиков сделать единственным достоверным аргументом. Если так рассуждать, то ни один из существующих т/ф вообще не нужен, - никто ведь не сообщил еще, что он добился радикального успеха благодаря конкретному т/ф.
Сообщаю Вам. Взяв за основу period_converter, я давно уже написал эксперта, который не только пишет тиковую историю, но и отображает в реальном времени ее на графике. Таким образом, все, что можно делать на других т/ф, можно делать и на тиковом графике. Это еще раз говорит о том, какой мощный инструмент МТ4+МКЛ4. А также и о том, что сделать этот сервис встроенным не так уж сложно.
Кроме того, я немало времени потратил на исследование тиковых данных. Абсолютно не имеет никакого значения, добился я благодаря этому успехов на рынке или нет. Люди добиваются чего-то или нет, благодаря их способностям и труду. Но для того, чтобы результат был получен, В ПЕРВУЮ очередь они должны иметь возможность. Это условие не достаточное, но необходимое ! :-)
Почему спрашивается возможность для работы с тайм-фреймами есть, а с тик-фреймами нет ? Эта ситуация вполне объяснима ограниченностью возможностей (временнЫх, людских, или т.п.) разработчиков. Но она совершенно неприемлема с точки зрения полноты сервиса и его стратегии. Поэтому если на сегодняшний день она более-менее устраивает рынок, то завтра этого уже не будет.
Вот-вот !. И я о том же.
Кстати, эту штуку нужно реализовывать как эксперта. Индикатор пропускает тики !
Чтобы файл не затирался его надо открывать так : FILE_BIN|FILE_READ|FILE_WRITE
А перед тем как писать в него надо установить указатель записи в конец файла.
Люди попросили разработчиков сделать тиковую историю, разработчики ответили категорическим отказом. Ну и что дальше? Вы будете просто писать здесь горы жалоб на то, что разработчики не прислушались к "пожеланиям трудящихся"? Я со своей стороны просто предложил рациональный вариант давления на разработчиков - всего навсего! Если всем нужны просто бесконечные словесные жалобы без реальных подвижек в вопросе, то, пожалуйста, я лично ничего против не имею.
Эксперт сохраняет тиковую историю по указанным символам
За эксперт конечно спасибо, но я так глянул на скорую руку, он вроде в csv сохраняет, а мой задумывался чтоб в хистори, и сразу ентот график автономно можно открыть и анализировать.
Простой конвертер из csv в fxt.
Надо объединить моего эксперта и этот скрипт, и чуток подлатать - будет то, что надо ;)
Тиковые же данные усложнят им жизнь по следующим причинам:
1. При доступности тиковых данных неизбежно возникнут эксперты торгующие на тиковом ТФ и соответственно возникнут ОГРОМНЫЕ трудности с перекрытием таких экспертов
2. Также при наличии достоверных тиковых данных станет доступной возможность обкатывать тиковых экспертов в тестере (что также повысит их число)
3. После доступа к тиковым данным общественность потребует доступа к РЕАЛЬНЫМ объемам :))))))
4. И аж на 4-м месте нежелание или занятость разработчиков (был бы спрос со стороны ДЦ сделали бы за две недели :))
5. И наконец "козырный" аргумент про сумасшедший траффик и место на диске...