Доброе время суток, молодому пенсионеру захотелось вот такие кнопочки сделать в МТ5.
Подскажите в МТ5 можно реализовать такие кнопки, может уже есть у кого поделитесь кодом...
Кнопка "Пуск(Start)" и кнопка "Закрыть все ордера". перемещаются по экрану. МТ5, все пары, все таймфреймы, 4/5 знаков. начальный лот 0.01 в том числе центовый. Предусмотреть проскальзывание и реквоты.
Функции для кнопки "Пуск(Start)"
После того как растяну фибо в ручную, нужно открыть от 1 до 11 ордеров сразу в BAY или SELL по текущей цене, предварительно
выбрав в настройках сколько ордеров открывать и каких (1, 2, 5, 7 или все 11) в сторону развернутого фибо.
В настройках каждому ордеру была возможно указывать лотность в ручную или динамически увеличение/уменьшение.
ТР - Take Profit устанавливается в порядке возрастания от 1 до 11 ордеров на уровнях фибо 61,8; 78,6; 100.0;
Здравствуйте, если по ценам Ask и Bid из класса CSymbolInfo более или менее пнятно, то как получить например SessionInterest или SessionBuyOrdersVolume или SessionPriceLimitMin, Выдает ноли, не могу понять почему...
Здравствуйте, если по ценам Ask и Bid из класса CSymbolInfo более или менее пнятно, то как получить например SessionInterest или SessionBuyOrdersVolume или SessionPriceLimitMin, Выдает ноли, не могу понять почему...
Если торговый сервер транслирует эту информацию - Вы её получите.
Как правило эту информацию транслируют Брокеры для биржевых символов (не путайте Брокера и дилинговые центры).
Если торговый сервер транслирует эту информацию - Вы её получите.
Как правило эту информацию транслируют Брокеры для биржевых символов (не путайте Брокера и дилинговые центры).
Брокер Открытие, Фьючерс на индекс РТС, предполагаю, что должен транслировать по крайней мере SessionPriceLimitMin и SessionPriceLimitMax (т.к. они насколько я понимаю по ценам открытия используются в рыночных ордерах). Неужели открытие не транслирует... Прописываю например:
Print(m_symbol.Ask()," ",m_symbol.SessionBuyOrdersVolume()); - из вашего советника
Прошу помощи в написании кусочка кода, который правильно бы определял дату последнего бара с любым сдвигом в любом TF с точностью до текущего ТФ.
int N_bar=iBarShift(Symbol(),PERIOD_CURRENT,iTime(Symbol(),PERIOD_H1,0));//номер текущего бараdatetime StopDt=iTime(Symbol(),PERIOD_CURRENT,N_bar+1);//только для минуток и то может быть не корректно!Print("StopDt_Shift=",TimeToString(StopDt,TIME_DATE|TIME_MINUTES));
Такой код в целом рабочий, но если только время начала текущего бара совпадает с фактическим (с округлением до минуты) баром, так как мой текущий график M1. А если не совпадает, то возникают различные казусы, в зависимости от разных TF. К примеру, мне надо узнать дату начала последнего бара M1 в прошлом часе, если это был час 12 то проблем нет, время будет 12:59, а если это 13 часов, то время будет уже 13:58 так как бар часовой открылся не в 14:00, а в 14:05 и функция iBarShift вернула ближайший бар к 14:00, а именно 13:59.
Брокер Открытие, Фьючерс на индекс РТС, предполагаю, что должен транслировать по крайней мере SessionPriceLimitMin и SessionPriceLimitMax (т.к. они насколько я понимаю по ценам открытия используются в рыночных ордерах). Неужели открытие не транслирует... Прописываю например:
Print(m_symbol.Ask()," ",m_symbol.SessionBuyOrdersVolume()); - из вашего советника
Здравствуйте. Огромный респект всем тем кто помогает вникнуть в особенности МТ5. Без Вас это делать очень сложно... ступор, зависалово, бег по кругу. Так, что РЕСПЕКТ и УВАЖЕНИЕ.
Вопрос. Как лучше увязать rates_total и ограничения баров по истории? Верно ли увязал в коде? Спс за ответ, намек, подсказку.
//--- Проверка количества доступных баровif(rates_total<24) return0;
//--- Проверка и расчёт количества просчитываемых баровint limit=rates_total-prev_calculated;
if(limit>1)
limit=rates_total-1;
//Показать историю за CountPeriods недель барах по Н1int bars=PeriodSeconds(PERIOD_W1)/PeriodSeconds(PERIOD_H1)*CountPeriods; // CountPeriods=4; В глобальных переменных//РЕШИЛ ТАК НО ПО-МОЕМУ ЧУШЬ...int lm=iBarShift(NULL,PERIOD_H1,iTime(NULL,PERIOD_CURRENT,limit)); //rates_total-1 в дняхint start=lm-(lm-bars);
Comment(start," bars ",bars); //Равенство значений есть
СЕЙЧАС НАБЛЮДАЛ НАСТУПЛЕНИЕ НОВОГО ЧАСА. ВРОДЕ ВСЕ НОРМАЛЬНО РАБОТАЕТ.
Тогда вопрос: корректно ли я оформил в коде момент с rates_total ?
Если указаны параметры start_time и stop_time, то функция возвращает количество баров в диапазоне дат. Если эти параметры не указаны, то функция возвращает общее количество баров.
"
В справке не сказано, должны ли включатся даты начала или даты окончания, или нет, в результате не знаешь что ожидать от функции.
При любом из вариантов, в том числе закомментированных, StopDt получаем значение 2!
Особенно удивляет вариант, когда начальная дата (2018.01.04 10:00) позже по времени конечной (2018.01.03 23:49) в секундном выражении - почему не выдается ошибка или хотя бы 1?
Если начальная и конечная дата совпадают, то тут уж логично выдать единицу, а не опять двойку!
В OnTick()проверяем доступность минимально-требуемой советнику истории и, если она ещё не доступна - уходим в ожидание следующего тика.
И пока не будут получены все требуемые советнику данные, он так и будет ожидать следующий тик.
Как только все необходимые данные будут подкачаны и получены, советник начнёт работу с новым баром и нужной ему историей.
Как Вы предлагаете проверять доступность истории, я что-то не понял...
Добавьте перед MQL4-функцией эту строку
и она станет работать в MT5.
Гениально. Огромное спасибо!
Подскажите в МТ5 можно реализовать такие кнопки, может уже есть у кого поделитесь кодом...
Предусмотреть проскальзывание и реквоты.
Здравствуйте, если по ценам Ask и Bid из класса CSymbolInfo более или менее пнятно, то как получить например SessionInterest или SessionBuyOrdersVolume или SessionPriceLimitMin, Выдает ноли, не могу понять почему...
Здравствуйте, если по ценам Ask и Bid из класса CSymbolInfo более или менее пнятно, то как получить например SessionInterest или SessionBuyOrdersVolume или SessionPriceLimitMin, Выдает ноли, не могу понять почему...
Если торговый сервер транслирует эту информацию - Вы её получите.
Как правило эту информацию транслируют Брокеры для биржевых символов (не путайте Брокера и дилинговые центры).
Если торговый сервер транслирует эту информацию - Вы её получите.
Как правило эту информацию транслируют Брокеры для биржевых символов (не путайте Брокера и дилинговые центры).
Брокер Открытие, Фьючерс на индекс РТС, предполагаю, что должен транслировать по крайней мере SessionPriceLimitMin и SessionPriceLimitMax (т.к. они насколько я понимаю по ценам открытия используются в рыночных ордерах). Неужели открытие не транслирует... Прописываю например:
Print(m_symbol.Ask()," ",m_symbol.SessionBuyOrdersVolume()); - из вашего советника
В журнал получаю только цены Ask
Прошу помощи в написании кусочка кода, который правильно бы определял дату последнего бара с любым сдвигом в любом TF с точностью до текущего ТФ.
Такой код в целом рабочий, но если только время начала текущего бара совпадает с фактическим (с округлением до минуты) баром, так как мой текущий график M1. А если не совпадает, то возникают различные казусы, в зависимости от разных TF. К примеру, мне надо узнать дату начала последнего бара M1 в прошлом часе, если это был час 12 то проблем нет, время будет 12:59, а если это 13 часов, то время будет уже 13:58 так как бар часовой открылся не в 14:00, а в 14:05 и функция iBarShift вернула ближайший бар к 14:00, а именно 13:59.
Добавлено: сделал так, кажется работает
Брокер Открытие, Фьючерс на индекс РТС, предполагаю, что должен транслировать по крайней мере SessionPriceLimitMin и SessionPriceLimitMax (т.к. они насколько я понимаю по ценам открытия используются в рыночных ордерах). Неужели открытие не транслирует... Прописываю например:
Print(m_symbol.Ask()," ",m_symbol.SessionBuyOrdersVolume()); - из вашего советника
В журнал получаю только цены Ask
Здравствуйте. Огромный респект всем тем кто помогает вникнуть в особенности МТ5. Без Вас это делать очень сложно... ступор, зависалово, бег по кругу. Так, что РЕСПЕКТ и УВАЖЕНИЕ.
Вопрос. Как лучше увязать rates_total и ограничения баров по истории? Верно ли увязал в коде? Спс за ответ, намек, подсказку.
СЕЙЧАС НАБЛЮДАЛ НАСТУПЛЕНИЕ НОВОГО ЧАСА. ВРОДЕ ВСЕ НОРМАЛЬНО РАБОТАЕТ.
Тогда вопрос: корректно ли я оформил в коде момент с rates_total ?
Читаю внимательно справку к функции Bars:
"
Если указаны параметры start_time и stop_time, то функция возвращает количество баров в диапазоне дат. Если эти параметры не указаны, то функция возвращает общее количество баров.
"
В справке не сказано, должны ли включатся даты начала или даты окончания, или нет, в результате не знаешь что ожидать от функции.
Удивляет работа функции:
При любом из вариантов, в том числе закомментированных, StopDt получаем значение 2!
Особенно удивляет вариант, когда начальная дата (2018.01.04 10:00) позже по времени конечной (2018.01.03 23:49) в секундном выражении - почему не выдается ошибка или хотя бы 1?
Если начальная и конечная дата совпадают, то тут уж логично выдать единицу, а не опять двойку!
Проверяю на ФОРТС инструмент Si, график минутный.