Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Справочник MQL5 доступен на 8 языках. Изучай MQL5 на удобном тебе языке!
Даниил Анатольевич
22
Подскажите пожалуйста, как узнать какая была цена Ask и Bid в интересующий момент времени? Должна же быть функция что то типа, ask = функция(Symbol(), PERIOD_CURRENT, Time, Ask);, чтоб время вставить просто и все. 
Ihor Herasko
8890
Ihor Herasko 2015.11.22 13:50  

Такое было бы возможно, если бы МТ4 сохранял тиковую историю да еще и со спредами. Но этого, к сожалению, нет. Во-первых, максимальная детализация истории - минута с ценами OHLC, а, во-вторых, это цены только Bid. Цена Ask вообще никак не запоминается. Можно получить только последнюю известную цену Ask.

Для получения цены открытия какой-либо свечи по времени, следует использовать следующий алгоритм:

int barIndex = iBarShift(NULL, 0, time);                            // Определение индекса бара, соответствующего времени time
double openPrice = iOpen(NULL, 0, barIndex);                        // Определение Bid цены открытия бара barIndex
Даниил Анатольевич
22
Даниил Анатольевич 2015.11.22 13:59  
Scriptong:

Такое было бы возможно, если бы МТ4 сохранял тиковую историю да еще и со спредами. Но этого, к сожалению, нет. Во-первых, максимальная детализация истории - минута с ценами OHLC, а, во-вторых, это цены только Bid. Цена Ask вообще никак не запоминается. Можно получить только последнюю известную цену Ask.

Для получения цены открытия какой-либо свечи по времени, следует использовать следующий алгоритм:

 

то есть узнать цену внутри бара не представляется возможным? ( H1 к примеру и надо узнать цену  25 минут назад напиример) Графики же он рисует как то(((

Ihor Herasko
8890
Ihor Herasko 2015.11.22 14:06  
DaniilAG:

то есть узнать цену внутри бара не представляется возможным? ( H1 к примеру и надо узнать цену  25 минут назад напиример)

Никак, если нет данных младшего таймфрейма. Но даже самый младший таймфрейм - М1. То есть для Н1 существует детализация движения цены (М30, М15, М5, М1), а вот для М1 - нет, только цены OHLC.

 Графики же он рисует как то(((

Только OHLC, больше ничего терминал не отображает.
Даниил Анатольевич
22
Даниил Анатольевич 2015.11.22 14:07  
Scriptong:

Никак, если нет данных младшего таймфрейма. Но даже самый младший таймфрейм - М1. То есть для Н1 существует детализация движения цены (М30, М15, М5, М1), а вот для М1 - нет, только цены OHLC.

Только OHLC, больше ничего терминал не отображает.

ясно, спасибо

Даниил Анатольевич
22
Даниил Анатольевич 2015.11.22 14:10  
Scriptong:

Никак, если нет данных младшего таймфрейма. Но даже самый младший таймфрейм - М1. То есть для Н1 существует детализация движения цены (М30, М15, М5, М1), а вот для М1 - нет, только цены OHLC.

Только OHLC, больше ничего терминал не отображает.

а как то сохранить реально поступающие цены в файл или куда нибудь, а потом их оттуда дернуть?

Boris
3902
Boris 2015.11.22 17:18  
DaniilAG:

а как то сохранить реально поступающие цены в файл или куда нибудь, а потом их оттуда дернуть?

 

Я решил эту проблему, принтуя любое действие советника одновременно с проверками на ошибки и на положительный результат! Только не удаётся отследить момент срабатывания СЛ и ТП, да сервер сам себя выдаёт, если превышает разрешённые проскальзывания.
Viktor
228
Viktor 2015.11.22 19:57  
Scriptong:

Такое было бы возможно, если бы МТ4 сохранял тиковую историю да еще и со спредами. Но этого, к сожалению, нет. Во-первых, максимальная детализация истории - минута с ценами OHLC, а, во-вторых, это цены только Bid. Цена Ask вообще никак не запоминается. Можно получить только последнюю известную цену Ask.

 Для МТ5 уже сделали такую функцию, надеюсь и до МТ4 руки дойдут.

В терминале есть внутренний буфер тиков, размер = 2000 тиков, 
вот в пятерке к нему и дали программный доступ.

int  CopyTicks( 
   string           symbol_name,           // имя символа 
   MqlTick&         ticks_array[],         // массив для приема тиков 
   uint             flags=COPY_TICKS_ALL,  // флаг, определяющий тип получаемых тиков 
   ulong            from=0,                // дата, начиная с которой запрашиваются тики 
   uint             count=0                // количество последних тиков, которые необходимо получить 
   );
 
Ihor Herasko
8890
Ihor Herasko 2015.11.22 20:26  
DaniilAG:

а как то сохранить реально поступающие цены в файл или куда нибудь, а потом их оттуда дернуть?

Посмотрите на мои работы в CodeBase - там уже давно есть решение всех этих проблем.
Даниил Анатольевич
22
Даниил Анатольевич 2015.11.30 06:02  

Scriptong:
Посмотрите на мои работы в CodeBase - там уже давно есть решение всех этих проблем.

если не сложно, дайте ссылочку 

Ihor Herasko
8890
Ihor Herasko 2015.11.30 09:49  

DaniilAG:

если не сложно, дайте ссылочку  

Если конкретно по сбору тиков, то - Сборщик тиков.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий