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

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


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

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

Спасибо.
Я правильно понимаю, что если на счете будет открытая позиция, то этот скрипт выдаст значение минимально допустимого стоп-лосса?
Или покажет значение переменной StopLevel?

И все же интересно ваше мнение о том, чтобы вместо стопов поставить функцию закрытия ордера, если цена ушла на уровень этого предполагаемого стопа?

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

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

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

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

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

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

Перейти

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

Перейти

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

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


Спасибо.
Я правильно понимаю, что если на счете будет открытая позиция, то этот скрипт выдаст значение минимально допустимого стоп-лосса?

И все же интересно ваше мнение о том, чтобы вместо стопов поставить функцию закрытия ордера, если цена ушла на уровень этого предполагаемого стопа?



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

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


Я правильно понимаю, что если на счете будет открытая позиция, то этот скрипт выдаст значение минимально допустимого стоп-лосса?

И все же интересно ваше мнение о том, чтобы вместо стопов поставить функцию закрытия ордера, если цена ушла на уровень этого предполагаемого стопа?

Скрипт покажет брокерские требования по выбранному символу о дистанции для СЛ или ТР. (вне зависимости открыт ордер или нет).
Можно сделать функцию и закрывать ордер по рынку. С точки зрения брокера это тот-же Стоп ордер. Исполнение будет чуть хуже (можно заметить только на быстром рынке).

Generic A-TLP v.11.94.19.rar

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

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

Возник ещё вопрос, почитываю учебник, но пока не встретил пояснения. При написании кода по закрытию ордеров, если его расположить в теле Start, то возникают сложности при закрытии большой серии ордеров, потому как срабатывание идёт по тикам. Возникает необходимость использования цикла while для оперативного закрытия, но похоже можно написать пользовательскую функцию и получить аналогичный эффект. На реальной торговле не было возможности проверить, но в тестере вроде похоже, при этом условия по запуску удаления лучше расположить в Start-е, а в теле функции, только перебор и само закрытие, дабы избежать возможных глюков. Правильно ли я думаю?

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

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


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

Закрытие большой сетки растягивается по времени - цена уходит и начинаются ошибки (не зря МТ5 делали).
По поводу в каком месте прописать: разницы нет! - компилятор, при трансляции в исполняемый код, всё расставит по-своему (там не будет Старт, там точка входа). Я стараюсь не захламлять ф-цию Старт т.к. должен видеть общий алгоритм совы (всё имхо).
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

Да вот сложно понять-то ещё, что, где и как отрабатывает (реал и тестер), все форумы завалены претензиями к начинке кода терминала в связи с бесконечными обновлениями билдов и выплывающих по этой причине всё новых глюков.

Тут у меня было на реале, в коде всё чётко прописано по закрытию (проверял сто раз), а когда дошло до дела, начало мне сыпать ошибку 129. Функция изначально была сделана пользовательской, в Start-е было только обращение к ней, а условия для срабатывания в её теле. Думал - думал что же делать, а потом разделил как описал и всё стало отрабатывать без проблем. Ну вообще сложилось впечатление, что перед циклом в одном блоке лучше ни чего не ставить.

Изменено пользователем chistaia-rodina
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
chistaia-rodina Я в шоке! Если это вылечилось простым переносом части кода, то так явно не должно быть! Сам с таким не сталкивался - мне и в голову такое-бы не пришло!
Ссылка на сообщение
Поделиться на другие сайты

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


chistaia-rodina Я в шоке! Если это вылечилось простым переносом части кода, то так явно не должно быть! Сам с таким не сталкивался - мне и в голову такое-бы не пришло!



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

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

У меня на новом тереме три цикла друг в друге убивали терем наповал. Перебор массивов, в первом цикле 500 элементов, во втором 200, в третьем 20:)

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

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



Но у тебя как и у меня не решена проблема с немедленным открытием сделки на продажу после закрытия предыдущей. И неважно как закрылась предыдущая, хоть по тейку, хоть по стопу, сразу открывается следующая. ....Есть идеи?

Я эту "проблему" и не решал. Идей (решений) - море! Понять-бы смысл проблемы... Выкладывай скрины с пояснениями.

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

1.jpg

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

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


как сделать так, чтобы после закрытия первого ордера вторая продажа не открывалась?

Вы не стали делать функцию встречного закрытия? Я смотрю у Вас одновременно в обе стороны сделки.
Давайте попробуем просто:
if (cBuy + cSell > 0) Trailing();
else
{
lastPrc = 0;
----> // lastInd = -1; // - это надо закомментировать

if (lastInd == PriceSell || lastInd == PriceBuy) return(0); - эту строчку поставить перед блоком открытия 1 ордера (сейчас она перед доливкой)
т.е. сова на одном значении индюка будет делать только 1 сделку
Ссылка на сообщение
Поделиться на другие сайты

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



как сделать так, чтобы после закрытия первого ордера вторая продажа не открывалась?

Вы не стали делать функцию встречного закрытия? Я смотрю у Вас одновременно в обе стороны сделки.

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

Добавлено: 27-08-2014 13:08:25


Вы не стали делать функцию встречного закрытия? Я смотрю у Вас одновременно в обе стороны сделки.
Давайте попробуем просто:
if (cBuy + cSell > 0) Trailing();
else
{
lastPrc = 0;
----> // lastInd = -1; // - это надо закомментировать

if (lastInd == PriceSell || lastInd == PriceBuy) return(0); - эту строчку поставить перед блоком открытия 1 ордера (сейчас она перед доливкой)
т.е. сова на одном значении индюка будет делать только 1 сделку


Не помогло. Результат тот же.
Я попробовал поменять начальные условия входа на эти if (Bid >= PriceSell + Otstup * Point && сSell() == 0) и перестало открывать продажу сразу после закрытия продажи...Сейчас экспериментирую дальше Изменено пользователем slevg
Ссылка на сообщение
Поделиться на другие сайты

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

Добрый вечер всем!
Я тут озадачился вопросом таким:
допустим, у нас какая-нибудь система, скажем, на скользящих средних, и мы входим сразу, как только быстрая пересечет медленную, у нас есть тейк-профит какой-то, после достижения которого, нужно ждать повторение такой ситуации(пересечения). Если сделать простое условие, что открывать позицию, когда быстрая выше/ниже медленной, то после тейка откроется еще одна сделка...

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
oleguitar так в чём вопрос?

slevg должно было помочь... Скинь сову, я код гляну.

z_0872.png

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

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

oleguitar так в чём вопрос?



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

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


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

Если про средние, то значение быстрой средней на 2 свече меньше медленной на 2 свече, а на 1 свече - наоборот. И тогда ордера будут открываться только при пересечении, а не при нахождении медленной над длинной.
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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


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

Ну что-же Вы? Здесь написано
на 2 баре: =iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN, 2);
Ссылка на сообщение
Поделиться на другие сайты

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

Ребят, подскажите как в MQL4 (Старый билд) сделать проверку цены закрытия определённого дня? Например узнать цену закрытия пятницы

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

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


Ребят, подскажите как в MQL4 (Старый билд) сделать проверку цены закрытия определённого дня? Например узнать цену закрытия пятницы



Приветствую!
Учитесь работать со справкой... Есть индикатор:

iClose

Возвращает значение цены закрытия бара (указанного параметром shift) соответствующего графика.

double iClose(
string symbol, // символ
int timeframe, // период
int shift // сдвиг
);



Параметры

symbol

[in] Символьное имя инструмента. NULL означает текущий символ.

timeframe

[in] Период. Может быть одним из значений перечисления ENUM_TIMEFRAMES. 0 означает период текущего графика.

shift

[in] Индекс получаемого значения из таймсерии (сдвиг относительно текущего бара на указанное количество баров назад).

Возвращаемое значение

Значение цены закрытия бара (указанного параметром shift) соответствующего графика или 0 в случае ошибки. Для получения дополнительной информации об ошибке необходимо вызвать функцию GetLastError().

Примечание

Для текущего графика информация о ценах закрытия баров находится в предопределенном массиве Close[].

Пример:

Print("Current bar for USDCHF H1: ",iTime("USDCHF",PERIOD_H1,0),", ", iOpen("USDCHF",PERIOD_H1,0),", ",
iHigh("USDCHF",PERIOD_H1,0),", ", iLow("USDCHF",PERIOD_H1,0),", ",
iClose("USDCHF",PERIOD_H1,0),", ", iVolume("USDCHF",PERIOD_H1,0));





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

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


slevg должно было помочь... Скинь сову, я код гляну.


Вот, посмотри, пожалуйста. Сам не могу понять что не так

sov.mq4

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

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


Вот, посмотри, пожалуйста. Сам не могу понять что не так

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

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

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



Вот, посмотри, пожалуйста. Сам не могу понять что не так

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

В общем Ваша задача: бот должен открыть только один ордер на одном значении индюка, если это значение уже использовалось, то ждём следующего.

У вас там по сути тоже самое, что и у меня...Работает одинаково...Вот как раз с такой задачей я и не могу справиться. Я могу переписать в вашем варианте, а вы глянете как открывать ордер на одном значении индюка. Точнее не так. На сигнале ордер открывается один, но после закрытия по стопу открывается снова в том же направлении. Вот в чем проблема. Как сделать так, чтобы сделки открывались строго только по сигналу индикатора, а не после закрытия по стопу?
Ссылка на сообщение
Поделиться на другие сайты

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


Как сделать так, чтобы сделки открывались строго только по сигналу индикатора, а не после закрытия по стопу?

Варианты есть, например после закрытия ордера :
- ждать смену значения (не цвета) индикатора
- ждать 2 часа, или нового дня
- ждать изменения цены минимум на 400 пипс.
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Войти

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

Войти

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


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

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