Перейти к содержанию

Обучение языку MQL4 под MetaTrader 4


Рекомендуемые сообщения

Обучение языку MQL4 под MetaTrader 4 Опубликовано

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


Добавлено: 22-10-2014 22:06:45

Я так понимаю вы имеете в виду про файл .ex4? Да его там нет, поэтому я задался поиском решения. скрипт работает хорошо, но не учитывает проскальзывание. в про трейдер это учтено... В итоге при торговле на быстром рынке мой выставленный ордер не открывается по нужной мне цене. Не могли бы вы помочь добавить в скрипт величину проскальзывания? Изменено пользователем kist11122111
Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 6,8k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Смотрим видео-уроки, изучаем MQL:       Скачать видеокурс «MQL программирование. Как самому написать форекс советник/ индикатор/ скрипт»   P.S. Тема про Обучение MQ

Перейти

Циклы цикл for Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы. К примеру, мы хотим проанализировать последние 10 баров и выяснить наименьшую цен

Перейти

Речь идет о том, что не будет значимых нововведений. А только баги периодически будут править. А вот все новое мол - в МТ5. Когда они вживую сказали то же самое на конференции в Москве, я уточнил: "То

Перейти
Обучение языку MQL4 под MetaTrader 4 Опубликовано

Действительно слиппаж был 3 пипса. Вынес в настройки, заодно и коммент к ордерам

OpenStopOrderNet_v3.mq4

  • Лайк 3
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

СПАСИБО ОГРОМНОЕ \M/. Выручили....


Добавлено: 23-10-2014 15:57:29

Значение проскальзывания для 5 или 4х знака? Изменено пользователем kist11122111
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Значение проскальзывания для 5 или 4х знака?


проскальзывание для Вашего брокера. ;) - значение напрямую брокеру передаётся без форматирования. Изменено пользователем 0ll
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


не подскажите как правильно закрыть ордер по закрытию дневной свечи

Я так понял как закрывать ордера Вы знаете - нужно выписать условие на закрытие?
Вот код отслеживающий открытие новой свечи (само закрытие Вы не поймаете или надо ловить 23-55 чтоб своп не получить, но только если по инструменту тики будут):
static datetime ToDay;
if (ToDay {
//Первый тик нового дня
ToDay = iTime(_Symbol, PERIOD_D1, 1);
//Здесь Ваш код закрытия ...

}
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


хотя закрытие делаю iClose[0]

Я даже не понял, что Вы делаете... Может код дадите?
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


у меня открывает по сигналу дня недели и iOpen[0]
а закрывает тут же в эту секунду
хотя закрытие делаю iClose[0]



Для текущего, нулевого, бара iClose[0] равносильно текущему значению цены, если бар закрылся, то он уже не может быть нулевым, поэтому и происходит сразу закрытие.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано



По данной ссылке, представлены информаторы, которые показывают на графике уровень ТП и СЛ с суммой прибыли или убытка.
Я имел ввиду совсем другое.....

Информаторы показывают: лот Х пункты = прибыль
Ваша задача: лот = прибыль / пункты.
Справитесь?


Всем привет!
Что-то не получается решить данную задачу. Нужна помощь. :(
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Что-то не получается решить данную задачу. Нужна помощь. :(

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Всем добрый день!
Возник вопросик такой...
Мне нужно закрывать все ордера в первый торговый день нового месяца (или в последний, не суть)
Проблема в том, что выставив условие if (Day() == 1) , мы игнорируем те месяцы, где 1 число выпадает на выходные

Ведь как я понимаю, нельзя написать if (Day()
Как быть? :-?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
oleguitar Есть универсальный алгоритм
static int day_MN;
if (day_MN > Day())
{ //Новый месяц
...
}
day_MN = Day();
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано



Что-то не получается решить данную задачу. Нужна помощь. :(

Прости - уже не вспомню. Сформулируй свою задачу заново, может попытку решения - свою реализацию.


Всем привет!
Задача следующая: открыт ордер № 1 на покупку с лотом 0,01, цена опустилась ниже на 10 пунктов, необходимо открыть ордер № 2 на покупку с лотом N с условием что ордер № 2 при повышении цены на спред закрыл оба ордера в плюс. Какой должен быть лот ордера № 2? Например: профит по открытым ордерам на покупку составляет -4,59 руб, необходимо открыть еще ордер на покупку с увеличенным лотом, чтобы он за спред перекрыл отрицательный профит =-4,59 руб. Изменено пользователем Crik1978
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

static int day_MN; // -не совсем понятно, что такое static
if (day_MN > Day()) // - а чему равен day_MN , если эта переменная ничего не содержит?
{ //Новый месяц // - здесь нужно условия ставить ?
...
}
day_MN = Day();
В целом просто не понятно, что делает этот кусок кода, не вижу, можно в двух словах хотя бы?

И еще вопрос.. Столкнулся с проблемой очень медленного тестирования на истории, как ускорить процесс?
Если задавать все переменные в самом начале, еще перед void OnTick(), это поможет?
И какие в целом могут быть причины медленного тестирования?
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
Crik1978 Ответ: Лот2 = Лот1 * (ЦЗ - ЦО1) / (ЦО2 - ЦЗ), где ЦЗ - цена предполагаемого закрытия, ЦО - цена открытия. Обычной пропорцией решается. Если ЦЗ = ЦО2 + Спрэд, то в знаменателе остаётся спрэд.

oleguitar
про static - хотите чтоб я вам справочник сюда постил? x( В данном случае это глобальная переменная
day_MN при запуске = 0, а потом содержит пред. день недели
Цитата

здесь нужно условия ставить ?

А я - знаю? в скобках код, отрабатывающий на первом тике нового месяца = что хотите туда пишите.
Цитата

Столкнулся с проблемой очень медленного тестирования на истории, как ускорить процесс?

В любом случае слишком много циклов и на каждом тике, например народ любит на каждом тике ордера пересчитывать, до ещё и по нескольку раз. нужно разделять задачи. Например опрашивать индюки и искать точку входа только по закрытию бара (а не на каждом тике)
Да много чего - целую книгу можно написать об оптимизации кода. перенос переменных ничего не даст Изменено пользователем 0ll
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Я не подумал просто, что static - это тип такой) сори ;)
Теперь вроде ясно
А если бы мы объявили обычную int a = -1 , скажем, то, как я понимаю, она на каждом тике все равно принимала бы значение -1 ?

А.. то есть взять тот кусок кода, где я беру с индикаторов показания, можно запускать по разу в начале бара с помощью такой же статичной переменной?
например,

static int newHour;
if (newHour > Hour())
{ // Берем показания индикаторов
...
}
newHour = Hour();

Отсюда вопрос: а что будет, когда newBar будет равен 23, а новый час - 0 ?
можно ли так сделать:
void Ontick()
{
static int newBar;

if (newHour >24)
newBar = 0;
{
if (newBar > Hour())
{ // Берем показания индикаторов
...
}
}
newBar = Hour();



... Условия открытия ордера
}

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
oleguitar по int a = -1 на каждом проходе = -1
Не усложняй - всё проще:
static int newHour;
if (newHour != Hour())
{ // Берем показания индикаторов
...
}
newHour = Hour();

Иногда, если мне тики не нужны, делаю так:
static int newHour;
if (newHour == Hour()) return;
newHour = Hour(); //и далее код, исполняемый раз в начале нового часа
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Здравствуйте. Помогите пожалуйста доделать индикатор. Нужно что бы он не стирал предидущие линии, а что бы их можно было просмотреть на истории за N свечей.

cm_ind_Level.mq4

Изменено пользователем Strong-Tezis
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

спасибо всем решил проблему через тайм серию
еще вопрос может кто подскажет как отключить трал через bool значение
что то не получается
void Trailing()
{
trali=true;
{
for (int i = 0; i {
if ( OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)
{
if (OrderType() == OP_BUY)
{
if (Bid - OrderOpenPrice() > tralstop * Point)
{
if (OrderStopLoss() {
SL = NormalizeDouble(Bid - tralstop * Point, Digits);
if (OrderStopLoss() != SL)
if(OrderModify(OrderTicket(), OrderOpenPrice(), SL, 0, 0))
return(trali);


}
}
}

else if (OrderType() == OP_SELL)
{
if (OrderOpenPrice() - Ask > tralstop * Point)
{
if (OrderStopLoss() > Ask + (tralstop + tralstep) * Point)
{
SL = NormalizeDouble(Ask + tralstop * Point, Digits);
if (OrderStopLoss() != SL)
if(OrderModify(OrderTicket(), OrderOpenPrice(), SL, 0, 0))
return(trali);


}
}
}

}

}
}
}
return;
}

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Видимо опять мне придётся...
Кривоватый индюк, допилил:
- при снятии с графика - убирает за собой
- подрезал тонкие линии, иначе от их обилия свеч не видно.

cm_ind_Level_mod_0ll.mq4

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


еще вопрос может кто подскажет как отключить трал через bool значение

Зачем нам код Вашего трала? - трал выключается в том месте, где идёт вызов:
if (bool) Trailing();
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано



еще вопрос может кто подскажет как отключить трал через bool значение

Зачем нам код Вашего трала? - трал выключается в том месте, где идёт вызов:
if (bool) Trailing();

спасибо все получилось
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Видимо опять мне придётся...
Кривоватый индюк, допилил:
- при снятии с графика - убирает за собой
- подрезал тонкие линии, иначе от их обилия свеч не видно.



Спасибо за Вашу помощь и отзывчивость. Была идея кое что опробовать, наконец то посмотрю что получится. Еще раз огромное Спасибо.
Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...