Импульс - страница 21

 
Karputov Vladimir:
  1. Хорошо. Время прихода тика можно записывать не в приращении, а непосредственно в микросекундах с момента начала работы MQL5-программы. Кому как надо, тот так и будет потом вычислять паузу между тиками.
  2. Тогда второе поле будет цена массива close[] - это и есть Bid.
  3. Насчёт Ask сомнение. Стоит ли его получать? Индикатор получает массив spread[] - вот его можно записывать. Кому надо - будет вычислять Ask.
  4. Имя файла в таком формате: Data_ticks_GBPUSD.f_2015.07.20 16_02_36.csv

Добавлено: Получается такая вот таблица:

Совсем нет обратной совместимости с версиями терминалов. Для МТ4 полностью переделывать. Что мешает записывать дату, а не некое синтетическое время? Дату можно привязать к чему угодно, использовать её без перерасчётов с чем угодно. Зачем самим себе геморрой устраивать сознательно в дальнейшем? Мало ли что ещё придётся делать со временем ... А тут выходит, нам его ещё и пересчитывать/конвертировать придётся...

Что мешает записывать текущий Ask, а не массив spread[], который бесполезен в МТ4 ? Сознательно отрезаете себе ногу по самую шею? :)))

 

Хорошо. Вот такой формат файла:

Время тика, микросекунд Время тика, секунд      Bid             Ask
76718                   20.07.2015 18:09        1.55962         1.55981
76838                   20.07.2015 18:09        1.55962         1.55981
190796                  20.07.2015 18:09        1.55961         1.55980
533045                  20.07.2015 18:09        1.55960         1.55979
989364                  20.07.2015 18:09        1.55961         1.55980
2058082                 20.07.2015 18:09        1.55960         1.55979
2397266                 20.07.2015 18:09        1.55961         1.55980
3498990                 20.07.2015 18:09        1.55962         1.55981
5276197                 20.07.2015 18:09        1.55962         1.55981
5276318                 20.07.2015 18:09        1.55962         1.55981
5714501                 20.07.2015 18:09        1.55967         1.55986
5825529                 20.07.2015 18:09        1.55968         1.55987
5825630                 20.07.2015 18:09        1.55968         1.55987
6095716                 20.07.2015 18:09        1.55969         1.55988
6419932                 20.07.2015 18:09        1.55968         1.55987
6795191                 20.07.2015 18:09        1.55969         1.55988
6972306                 20.07.2015 18:09        1.55968         1.55987
7017356                 20.07.2015 18:09        1.55967         1.55986
Годится?
 
Roman Shiredchenko:

Есть что по теме добавить...

Тут ссыль на видео - выкладывал удалили - сочли рекламой.

Как можно поделиться скальпинговой стратегией по которой сейчас сам пишу индикаторы?

Выложить видео с ютуба в  ветку "Интересное видео за июль"?

Ссыль не выкладываю - отправляю в гугл: "Главные особенности стратегии “Forex Speedometer” – отсутствие индикаторов и простота торговли. Тип стратегии – скальпинг. Стратегию можно использовать на любой валютной паре, но желательно выбирать высоковолатильные с небольшим спрэдом."

------------------------------------------------------------------------------------------

Тут тема также эта затрагивалась. Что считать время прихода каждого тика в массив и как считать скорость...

Ясно что тут возможны варианты. Понятно что в миллисекундах будет видно время каждого пойманного тика... (Как это потом использовать? возможно...)

Артём напиши, плз. ещё раз для особо одарённых... :-)

Там предлагается именно считать тики в секунду - тут тоже такой вариант предлагался...

Тут ещё вопрос в другом - как её тестировать? На счетах ндд моего брокера с мин. спредом  нет демо. На его демо и реал ндд счётом проверял кол-во тиков - небо и земля...

Т.е. будет вопрос, как программно обрабатывать собранные данные по виртуальным торгам в csv файле екселя и тики... с реал счетов.

Торговать на реале на не затестированном экспе, как -то не кАтит... :-)

Как записанные тики в файле csv  засунуть в историю для тестера стратегий МТ4?

Что то подобное я делал (не по этой стратегии, а свою изобретал) совсем недавно, но забросил это дело. Тестировать такую систему надо в реальном времени, так как тестер тики только моделирует. Два часа наблюдаю за советником потом 5 минут привил код и так далее потом надоело все это. Да и результаты были не очень много сделок с небольшим профитом, но один стоплос в разы перекрывает все профиты. Как вариант без стоплоса но тогда что бы не накапливался убыток по эквити надо применять мартингейл. А советник на мартине у меня и без этого есть и реализован гораздо проще. 
 

Основа для записи тиков есть.

//+------------------------------------------------------------------+
//|                                             IndTickCollector.mq5 |
//|                              Copyright © 2015, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.01"
#property indicator_chart_window
#property description "Индикатор хранит тики. Время тика, микросекунд, Время тика, секунд , Bid, Ask"
#property indicator_buffers 0
#property indicator_plots   0
//+------------------------------------------------------------------+
//| Индикатор расчитывает скорость прихода тиков.                    |
//+------------------------------------------------------------------+
//--- parameters
int file_handle; // хэндл файла
string FileName; // имя файла
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- open file
//--- время начала сбора тиков - текущее
   datetime time_start=TimeCurrent();
//--- откроем файл для записи значений индикатора (если его нет, то создастся автоматически)
   ResetLastError();
   FileName="Data_ticks_"+Symbol()+"_"+TimeToString(time_start,TIME_DATE|TIME_MINUTES|TIME_SECONDS)+".csv";
   StringReplace(FileName,":","-");
   file_handle=FileOpen(FileName,FILE_READ|FILE_WRITE|FILE_CSV);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("Файл %s открыт для записи",FileName);
      PrintFormat("Путь к файлу: %s\\MQL5\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- запишем название колонок
      FileWrite(file_handle,"Время тика, микросекунд","Время тика, секунд","Bid","Ask");
     }
   else
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",FileName,GetLastError());
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,      // размер массива price[]
                 const int prev_calculated,  // обработано баров на предыдущем вызове
                 const int begin,            // откуда начинаются значимые данные
                 const double& price[]       // массив для расчета
                 )
  {
   ulong microsecond_count=GetMicrosecondCount(); // зафиксировали вход в OnCalculate()
   int start=0;
   if(prev_calculated!=0) // работаем только на пришедших тиках, так как на истории нет времени тиков
     {
      MqlTick last_tick;
      //---
      if(SymbolInfoTick(Symbol(),last_tick))
        {
         FileWrite(file_handle,microsecond_count,last_tick.time,
                   DoubleToString(last_tick.bid,Digits()),DoubleToString(last_tick.ask,Digits()));
        }
      else Print("SymbolInfoTick() failed, error = ",GetLastError());
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- закрываем файл
   FileClose(file_handle);
   PrintFormat("Данные записаны, файл %s закрыт",FileName);
//--- очищаем комментарии
   Comment("");
  }
//+------------------------------------------------------------------+


Формат имени файла:

Data_ticks_GBPUSD.f_2015.07.21 12-06-14.csv

В файле четыре колонки:

Время тика, микросекунд Время тика, секунд      Bid             Ask
76718                   20.07.2015 18:09        1.55962         1.55981
76838                   20.07.2015 18:09        1.55962         1.55981
190796                  20.07.2015 18:09        1.55961         1.55980
533045                  20.07.2015 18:09        1.55960         1.55979
989364                  20.07.2015 18:09        1.55961         1.55980


Остаются вопросы - как часто начинать новые файлы. Думаю каждый час нужно  начинать каждый файл. Так будет легче потом анализировать.

 
Karputov Vladimir:

Основа для записи тиков есть.

Формат имени файла:

В файле четыре колонки:

Остаются вопросы - как часто начинать новые файлы. Думаю каждый час нужно  начинать каждый файл. Так будет легче потом анализировать.

Технически неоптимально сделано. Во первых, зачем писать микросекунды? Лучше такой формат:

Время, DD.MM.YYY HH:mm:ss:sss     Bid    Ask
20.07.2015 18:09:323            1.55962  1.55981 

От CSV формата лучше вообще отказаться в пользу XML. На лицо задача сериализации данных Object To Xml <--> XML To Object. В случае чего, легко будет дополнить новыми параметрами. Хранить конечно посуточно. 1 файл - 1 день тиковой истории

 
Что касается самой идеи - конечно полный бред (при всем уважении). Вы делаете тождество между волатильностью и импульсом (направленным движением). Хотя это в корне не верно. Такая зависимость практически отсутствует, а значит и выбранный подход никуда не приведет.
 
Vasiliy Sokolov:
Что касается самой идеи - конечно полный бред (при всем уважении). Вы делаете тождество между волатильностью и импульсом (направленным движением). Хотя это в корне не верно. Такая зависимость практически отсутствует, а значит и выбранный подход никуда не приведет.

Главное это собрать данные по тикам. Это как основа исследований. И уже на этой основе можно проверять разные модели.

Добавлено: И да, до сих пор нет чёткой формулировки импульса.

 
Karputov Vladimir:

Главное это собрать данные по тикам. Это как основа исследований. И уже на этой основе можно проверять разные модели.

Добавлено: И да, до сих пор нет чёткой формулировки импульса.

Уточню:  нет необходимой чёткой формулировки здесь...  а ведь это основа, действительно необходимая основа...   без такой формулировки всё будет шатко, валко...

Например, в импульсной технике такая чёткая формулировка есть.  Пример уже приводил ранее. Ну и одной картинкой ограничиваться нельзя, конечно. Теория эта обширная, и будет очень полезная для здешнего её применения.

 

ещё разок попытаюсь пояснить свою мысль...

хотя и очень грубо, но представление всё же даёт такая картинка :



а уж параметры импульсов - переменные параметры - надо определять на лету.

 
Олег avtomat:

ещё разок попытаюсь пояснить свою мысль...

хотя и очень грубо, но представление всё же даёт такая картинка :



а уж параметры - переменные параметры - импульсов надо определять на лету.

Олег, и где тут на картинке импульс? Вот и разложи его по тиково-временным составляющим, а не график дневок предлагай.
Причина обращения: