oleguitar Опубликовано 25 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 августа, 2014 Спасибо.Я правильно понимаю, что если на счете будет открытая позиция, то этот скрипт выдаст значение минимально допустимого стоп-лосса?Или покажет значение переменной StopLevel?И все же интересно ваше мнение о том, чтобы вместо стопов поставить функцию закрытия ордера, если цена ушла на уровень этого предполагаемого стопа? Изменено 25 августа, 2014 пользователем oleguitar Ссылка на сообщение Поделиться на другие сайты More sharing options...
Silentspec Опубликовано 25 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 августа, 2014 Спасибо.Я правильно понимаю, что если на счете будет открытая позиция, то этот скрипт выдаст значение минимально допустимого стоп-лосса?И все же интересно ваше мнение о том, чтобы вместо стопов поставить функцию закрытия ордера, если цена ушла на уровень этого предполагаемого стопа? Проскальзывания. Ссылка на сообщение Поделиться на другие сайты More sharing options...
oleguitar Опубликовано 25 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 августа, 2014 От сильных проскальзываний и стоп-лосс не зашитит вроде. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 25 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 августа, 2014 Я правильно понимаю, что если на счете будет открытая позиция, то этот скрипт выдаст значение минимально допустимого стоп-лосса?И все же интересно ваше мнение о том, чтобы вместо стопов поставить функцию закрытия ордера, если цена ушла на уровень этого предполагаемого стопа?Скрипт покажет брокерские требования по выбранному символу о дистанции для СЛ или ТР. (вне зависимости открыт ордер или нет).Можно сделать функцию и закрывать ордер по рынку. С точки зрения брокера это тот-же Стоп ордер. Исполнение будет чуть хуже (можно заметить только на быстром рынке).Generic A-TLP v.11.94.19.rar Ссылка на сообщение Поделиться на другие сайты More sharing options...
chistaia-rodina Опубликовано 27 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2014 Возник ещё вопрос, почитываю учебник, но пока не встретил пояснения. При написании кода по закрытию ордеров, если его расположить в теле Start, то возникают сложности при закрытии большой серии ордеров, потому как срабатывание идёт по тикам. Возникает необходимость использования цикла while для оперативного закрытия, но похоже можно написать пользовательскую функцию и получить аналогичный эффект. На реальной торговле не было возможности проверить, но в тестере вроде похоже, при этом условия по запуску удаления лучше расположить в Start-е, а в теле функции, только перебор и само закрытие, дабы избежать возможных глюков. Правильно ли я думаю? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 27 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2014 условия по запуску удаления лучше расположить в Start-е, а в теле функции, только перебор и само закрытие, дабы избежать возможных глюков. Правильно ли я думаю?Закрытие большой сетки растягивается по времени - цена уходит и начинаются ошибки (не зря МТ5 делали).По поводу в каком месте прописать: разницы нет! - компилятор, при трансляции в исполняемый код, всё расставит по-своему (там не будет Старт, там точка входа). Я стараюсь не захламлять ф-цию Старт т.к. должен видеть общий алгоритм совы (всё имхо). 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
chistaia-rodina Опубликовано 27 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2014 Да вот сложно понять-то ещё, что, где и как отрабатывает (реал и тестер), все форумы завалены претензиями к начинке кода терминала в связи с бесконечными обновлениями билдов и выплывающих по этой причине всё новых глюков. Тут у меня было на реале, в коде всё чётко прописано по закрытию (проверял сто раз), а когда дошло до дела, начало мне сыпать ошибку 129. Функция изначально была сделана пользовательской, в Start-е было только обращение к ней, а условия для срабатывания в её теле. Думал - думал что же делать, а потом разделил как описал и всё стало отрабатывать без проблем. Ну вообще сложилось впечатление, что перед циклом в одном блоке лучше ни чего не ставить. Изменено 27 августа, 2014 пользователем chistaia-rodina 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 27 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2014 chistaia-rodina Я в шоке! Если это вылечилось простым переносом части кода, то так явно не должно быть! Сам с таким не сталкивался - мне и в голову такое-бы не пришло! Ссылка на сообщение Поделиться на другие сайты More sharing options...
chistaia-rodina Опубликовано 27 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2014 chistaia-rodina Я в шоке! Если это вылечилось простым переносом части кода, то так явно не должно быть! Сам с таким не сталкивался - мне и в голову такое-бы не пришло! Ну там как раз наоборот, явно не должно было быть этой ошибки, но получилось исправить. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Silentspec Опубликовано 27 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2014 У меня на новом тереме три цикла друг в друге убивали терем наповал. Перебор массивов, в первом цикле 500 элементов, во втором 200, в третьем 20:) Ссылка на сообщение Поделиться на другие сайты More sharing options...
slevg Опубликовано 27 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2014 Но у тебя как и у меня не решена проблема с немедленным открытием сделки на продажу после закрытия предыдущей. И неважно как закрылась предыдущая, хоть по тейку, хоть по стопу, сразу открывается следующая. ....Есть идеи?Я эту "проблему" и не решал. Идей (решений) - море! Понять-бы смысл проблемы... Выкладывай скрины с пояснениями. вот скрин с пояснениями.как сделать так, чтобы после закрытия первого ордера вторая продажа не открывалась?1.jpg Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 27 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2014 как сделать так, чтобы после закрытия первого ордера вторая продажа не открывалась?Вы не стали делать функцию встречного закрытия? Я смотрю у Вас одновременно в обе стороны сделки.Давайте попробуем просто: if (cBuy + cSell > 0) Trailing(); else { lastPrc = 0; ----> // lastInd = -1; // - это надо закомментировать if (lastInd == PriceSell || lastInd == PriceBuy) return(0); - эту строчку поставить перед блоком открытия 1 ордера (сейчас она перед доливкой)т.е. сова на одном значении индюка будет делать только 1 сделку Ссылка на сообщение Поделиться на другие сайты More sharing options...
slevg Опубликовано 27 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2014 как сделать так, чтобы после закрытия первого ордера вторая продажа не открывалась?Вы не стали делать функцию встречного закрытия? Я смотрю у Вас одновременно в обе стороны сделки. Сделал, но потом убрал. Получается когда цена ходит вокруг уровня туда-сюда, то сова открывает на покупку, а кода поступает сигнал на продажу закрывает покупку и открывает продажу. В общем, работает только на спред и в итоге все сливает. Я в общем-то и думал, что так будет.Сейчас попробую Вашу функцию внедрить и протестить. Потом отпишусь. Спасибо Добавлено: 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) и перестало открывать продажу сразу после закрытия продажи...Сейчас экспериментирую дальше Изменено 27 августа, 2014 пользователем slevg Ссылка на сообщение Поделиться на другие сайты More sharing options...
oleguitar Опубликовано 27 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2014 Добрый вечер всем!Я тут озадачился вопросом таким: допустим, у нас какая-нибудь система, скажем, на скользящих средних, и мы входим сразу, как только быстрая пересечет медленную, у нас есть тейк-профит какой-то, после достижения которого, нужно ждать повторение такой ситуации(пересечения). Если сделать простое условие, что открывать позицию, когда быстрая выше/ниже медленной, то после тейка откроется еще одна сделка... Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 27 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2014 oleguitar так в чём вопрос?slevg должно было помочь... Скинь сову, я код гляну.z_0872.png Ссылка на сообщение Поделиться на другие сайты More sharing options...
oleguitar Опубликовано 27 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2014 Цитата oleguitar так в чём вопрос? Как сделать так, чтобы советник ждал следующего пересечения, а не открывал позицию сразу же после тейк-профита? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 27 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2014 Как сделать так, чтобы советник ждал следующего пересечения, а не открывал позицию сразу же после тейк-профита?Если про средние, то значение быстрой средней на 2 свече меньше медленной на 2 свече, а на 1 свече - наоборот. И тогда ордера будут открываться только при пересечении, а не при нахождении медленной над длинной. Ссылка на сообщение Поделиться на другие сайты More sharing options...
oleguitar Опубликовано 27 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2014 Вот кстати так и думал, только как это выглядит, не совсем понимаю... Не знаю, как получить значение скользящей на предыдущих барахМожет быть, добавить дублирующую быструю со сдвигом, и одно из значений получать от нее? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 27 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 августа, 2014 Вот кстати так и думал, только как это выглядит, не совсем понимаю... Не знаю, как получить значение скользящей на предыдущих барахМожет быть, добавить дублирующую быструю со сдвигом, и одно из значений получать от нее?Ну что-же Вы? Здесь написанона 2 баре: =iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN, 2); Ссылка на сообщение Поделиться на другие сайты More sharing options...
Salov Nikolay Опубликовано 28 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 августа, 2014 Ребят, подскажите как в MQL4 (Старый билд) сделать проверку цены закрытия определённого дня? Например узнать цену закрытия пятницы Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 29 августа, 2014 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 августа, 2014 Ребят, подскажите как в 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 Ссылка на сообщение Поделиться на другие сайты More sharing options...
slevg Опубликовано 29 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 августа, 2014 slevg должно было помочь... Скинь сову, я код гляну. Вот, посмотри, пожалуйста. Сам не могу понять что не такsov.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 29 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 августа, 2014 Вот, посмотри, пожалуйста. Сам не могу понять что не такВы не сделали так, как я писал здесь. Видимо что-то не устроило... а там была основа для дальнейшей модификации. теперь что? - заново?Вы поймите: я пытаюсь помочь Вам не бота сделать, а научить самостоятельно программировать. Поэтому я не буду писать - это Ваша задача, я лишь помогу с ошибками.В общем Ваша задача: бот должен открыть только один ордер на одном значении индюка, если это значение уже использовалось, то ждём следующего. Ссылка на сообщение Поделиться на другие сайты More sharing options...
slevg Опубликовано 29 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 августа, 2014 Вот, посмотри, пожалуйста. Сам не могу понять что не такВы не сделали так, как я писал здесь. Видимо что-то не устроило... а там была основа для дальнейшей модификации. теперь что? - заново?Вы поймите: я пытаюсь помочь Вам не бота сделать, а научить самостоятельно программировать. Поэтому я не буду писать - это Ваша задача, я лишь помогу с ошибками.В общем Ваша задача: бот должен открыть только один ордер на одном значении индюка, если это значение уже использовалось, то ждём следующего. У вас там по сути тоже самое, что и у меня...Работает одинаково...Вот как раз с такой задачей я и не могу справиться. Я могу переписать в вашем варианте, а вы глянете как открывать ордер на одном значении индюка. Точнее не так. На сигнале ордер открывается один, но после закрытия по стопу открывается снова в том же направлении. Вот в чем проблема. Как сделать так, чтобы сделки открывались строго только по сигналу индикатора, а не после закрытия по стопу? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 29 августа, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 августа, 2014 Как сделать так, чтобы сделки открывались строго только по сигналу индикатора, а не после закрытия по стопу?Варианты есть, например после закрытия ордера :- ждать смену значения (не цвета) индикатора- ждать 2 часа, или нового дня- ждать изменения цены минимум на 400 пипс. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти