0ll Опубликовано 25 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 июля, 2017 как мы можем всунуть shift в bool переменную????Я такого ни где не видел, и мы ее уже объявляли??это-ж не переменная, а функция и в её параметры можете передавать что хотите, например:bool если_больше ( int число1, int число2 ) { return ( число1 > число2 ); }не знаю насчёт объявления shift... Но если смещение стабильно, то выведи его во внешние настройки:extern int shift = 3; Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 25 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 июля, 2017 ок про функции вообще огромный респект)А вот про extern int shift = 3; я уже пробовал //возвращает данные DN буфера double Reds(shift) { return( iCustom(NULL, 0, "Slope Direction Line", period, method, price, 1, shift) ); } //возвращает данные UP буфера double Greens(shift) { return( iCustom(NULL, 0, "Slope Direction Line", period, method, price, 0, shift) ); }bool SellSignal(shift){return(Reds(shift) > 0 && Reds(shift)0 && Greens(shift+1)bool BuySignal(shift){return(Greens(shift)>0 && Greens(shift)0 && Reds(shift+1)Выдает ошибки : 'shift' - declaration without type 'SellSignal' - wrong parameters count Что то в гугле так и не нашел как их исправить? Добавлено: 25-07-2017 08:23:37Может shift надо привести в нормальный вид, но это просто сдвиг, что в нем не так то? Изменено 25 июля, 2017 пользователем d1w4m3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Nicole White Опубликовано 25 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 июля, 2017 Изучила весь курс программирования MQL4. Сделала почти все задания. Уникальный материал, больше такого в сети не попадалось. Пишу простенькие совы. Очень мало информации по индикаторам. Подскажите в общих чертах:1. Как перекрашивать бары в другой цвет?2. Как рисовать прямоугольники?3. Как над баром вывести текстовую информацию, например цену открытия. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 25 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 июля, 2017 d1w4m3 при объявлении функции надо писать тип параметра, а при вызове - просто переменную, например:double Reds( int sh ) { ... }, при вызове можно Reds( shift ) илипотом:bool SellSignal( sh ){return(Reds( sh ) > ... }Nicole White цвет в индикаторах МТ4 делается с помощью разных буферов. Один буфер красный, другой жёлтый, нужный момент красный обнуляется, а жёлтый продолжает линию и наоборот.Так-же есть несколько типов графических объектов, в том числе прямоугольники и лейблы для отображения текста. Я не спец в графике - может кто-то развёрнуто подскажет. Изменено 25 июля, 2017 пользователем 0ll Ссылка на сообщение Поделиться на другие сайты More sharing options...
scomoroh Опубликовано 25 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 июля, 2017 Подскажите, пожалуйста, как написать условие. Есть два стрелочных индикатора. Так вот, когда один подает сигнал, то по второму входить можно только в течение 10-ти баров. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 25 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 июля, 2017 Подскажите, пожалуйста, как написать условие. Есть два стрелочных индикатора. Так вот, когда один подает сигнал, то по второму входить можно только в течение 10-ти баров.Логика такая: Появился сигнал инд.1 - присваиваем счётчику i=10, далее на каждом баре вычитаем i--. Далее если при i> 0 появляется сигнал инд.2 - вход, если снова инд.1 - обновляем счётчик. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 26 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 июля, 2017 Утро доброе)Работает, но опять открывает и бай и селл)double Reds(int sh){double buf = iCustom(NULL, 0, "Slope Direction Line", period, method, price, 1,shift); return(buf);} double Greens(int sh){double buf = iCustom(NULL, 0, "Slope Direction Line", period, method, price, 0, shift); return(buf);}bool SellSignal(){return(Reds(shift) > 0 && Reds(shift)0 && Greens(shift+1)bool BuySignal(){return(Greens(shift)>0 && Greens(shift)0 && Reds(shift+1) Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 26 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 июля, 2017 d1w4m3 так это-ж хорошо! :dВ Reds(int sh) вроде должен sh использовать, а пишешь shiftв сигнальных параметра нет, но shift используешь - он глобальный и не меняется? Ссылка на сообщение Поделиться на другие сайты More sharing options...
izeran6565 Опубликовано 26 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 июля, 2017 ================Вопрос К Программистам==========Скажите реально ли сделать такую примочку - собрать историю изменения спреда в течении суток в реальном времени за период, например 1 месяц, сохранить ее в файл, определить среднее значения по всем дням и часам, затем прикрутить ее к советнику, чтобы он брал эту историю спреда из файла и основывался на ней при оптимизиции, а в тестере MT4 выставить значение 0? Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 27 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 июля, 2017 ))))как вы говорите, если сделать, то я логически просто не могу прочитать что мы тут делаем)extern int shift = 3;double Reds(int sh){double buf = iCustom(NULL, 0, "Slope Direction Line", period, method, price, 1,shift); return(buf);} double Greens(int sh){double buf = iCustom(NULL, 0, "Slope Direction Line", period, method, price, 0, shift); return(buf);}bool SellSignal(sh){return(Reds(sh) > 0 && Reds(sh)0 && Greens(sh+1)bool BuySignal(sh){return(Greens(sh)>0 && Greens(sh)0 && Reds(sh+1)Выдает 'sh' - declaration without type 'SellSignal' - wrong parameters count 'BuySignal' - wrong parameters count Честно вообще понятия не имею что это и с чем его есть)) Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 27 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 июля, 2017 не напрягайся...когда передаёшь параметр в функцию он должен иметь размер, чтоб система выделила под него память. Вызов SellSignal(sh) - параметр без размера, нужно добавить int.Здесь правильный вызов Reds(int sh), но параметр не применяется внутри функции - там остался shift, это не критично. т.к. shift - глобальная переменная. но это может создать хаос в случае дальнейшей модификации программы.ПС: это не избавит от открытия и бай и селл, нужно ставить принты и смотреть как отрабатывают условия, например:double Reds(int sh){double buf = iCustom(NULL, 0, "Slope Direction Line", period, method, price, 1,sh); Print(" Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 27 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 июля, 2017 имхо реально, но в советнике придётся увеличивать дистанции при открытии/закрытии ордеров на величину спреда. Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 27 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 июля, 2017 Спасибо буду трудиться дальше ^:)^ :d 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
izeran6565 Опубликовано 27 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 июля, 2017 имхо реально, но в советнике придётся увеличивать дистанции при открытии/закрытии ордеров на величину спреда. Насколько в таком случае будут объективны результаты оценки ТС? Насколько я знаю имитировать плавающий спред может программа TDS, но там не учитывается фактор времени, то есть TDS повышает и понижает спред с заданным шагом и делает это хоатично, при этом не учитываются торговые часы, время выхода новостей, торговые сессии, ролловер и т.д, что может исказить реальные результаты, а если собрать историю изменения спреда по дням недели и часам самому на длинном участке времени, скажем несколько месяцев и определить среднее значение, то результаты оценки ТС с учетом спреда были бы более объективны так как спред в большинстве случаев начинает скакать в одно и то же время, примерно в одинаковом диапазоне, и по одним и тем же причинам или я не прав? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Старик Опубликовано 27 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 июля, 2017 izeran6565, TDS2 сохраняет и использует реальные спрэды тех же дукасов, разные в разное время - никакого хаоса.С реальными спрэдами, насколько слышал, и часть котировок Альпари.Есть тьма статей на тему как тестировать с реальными спрэдами.Имхо, вместо адекватных тестов вы выдумываете никому не нужные костыли. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Сахалинец Опубликовано 28 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 июля, 2017 Разобрался Изменено 28 июля, 2017 пользователем Сахалинец Ссылка на сообщение Поделиться на другие сайты More sharing options...
izeran6565 Опубликовано 28 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 июля, 2017 izeran6565, TDS2 сохраняет и использует реальные спрэды тех же дукасов, разные в разное время - никакого хаоса.С реальными спрэдами, насколько слышал, и часть котировок Альпари.Есть тьма статей на тему как тестировать с реальными спрэдами.Имхо, вместо адекватных тестов вы выдумываете никому не нужные костыли. Честно говоря не встречал не одной статьи, которая бы полностью раскрывала тему тестирования советников с реальным спредом, именно с реальным, чтобы он соответствовал времени и не был фиксированным как в MT4, когда один и тот же заданный спред используется повсеместно, советник строчит сделки даже в ролловер, когда не один нормальный советник не открылся бы, до этого использовал дневные советники, на спред особого внимания не обращал, сейчас начал интересоваться ночной торговлей, возникла проблема со спредом, нашел только одно решение, это TDS, но там лицензия дается только на один ПК, чтобы установить на другой, нужно приобретать еще одну, у меня например несколько старых ноутбуков, которые я использую как хранилище, а так же для оптимизации роботов, не хочется платить за одну и ту же прогу несколько раз, еще и за ежемесячную поддержку, поэтому начал искать альтернативу, функционал не важен, самое главное для меня это не фиксированный спред связанный со временем и приближенный к реальности, чтобы вы посоветовали? Ссылка на сообщение Поделиться на другие сайты More sharing options...
nixxer Опубликовано 29 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 июля, 2017 TDS стоит смешные деньги, покупаете на один ПК и пользуйтесь сколько пожелаете. Ссылка на сообщение Поделиться на другие сайты More sharing options...
izeran6565 Опубликовано 29 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 июля, 2017 TDS стоит смешные деньги, покупаете на один ПК и пользуйтесь сколько пожелаете. На один ПК это ладно, а если их несколько? На одном ПК у меня оптимизация некоторых роботов может длиться больше месяца, поэтому я использую старые ноутбуки, разбиваю параметры на группы и ставлю их оптить все одновременно, чтобы сократить время оптимизации, то есть для моих целей мне придется покупать несколько ключей к TDS? Мне было бы гораздо проще и дешевле заказать программисту ту примочку о которой я написал в шапке темы и которую назвали никому не нужным костылем, и гонять ее на импортированных котировках 99% в тестере MT4, отдав те же 100$ программисту за написание один раз, чем отдать за TDS 600$ + за ежемесячную поддержку раз месяц, результаты пусть будут не такие достоверные, но зато максимально приближенные к реальности или я не прав? Изменено 29 июля, 2017 пользователем izeran6565 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 29 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 июля, 2017 Эту примочку надо в каждом боте делать, имхо тдс дешевле будет. спрэды у каждого брокера разные, а история спрэдов есть не у каждого брокера, надо собирать реальные тики укаждого брокера по всем инструментам. В общем работы на всю жизнь... Удачи! 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Старик Опубликовано 29 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 июля, 2017 izeran6565, а ничего, что оптить со спрэдами на шару вы сможете года через 3 - после того, как лично соберете реальные котиры всех нужных вам пар на всех нужных вам брокерах?!А ближайшие пару лет опту/тестам ни-ни?!При том, что за 3 года круглосуточной включенности для сбора котиров ваша коллекция старых ноутбуков как раз Богу душу и отдаст!И даже после этого вы не сможете тестить всех ботов, в код которых нельзя будет воткнуть понимание этой приблуды.я понимаю вашу попытку за сотку баксов решить проблему на пару штук.но вам нужен нормальный сервер для опта, в котором вы сможете за часы вместо месяцев комплексно оптить все параметры ботов на правильных котирах единственной копии TDS2.Вы ж должны знать сколько денег стоит время и что ваши развлечения с оптом на старых ноутах эквивалентны потерям прибыли от всего, как минимум, за столько же месяцев... 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
QuantumLogic Опубликовано 29 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 июля, 2017 1. Как перекрашивать бары в другой цвет?2. Как рисовать прямоугольники?3. Как над баром вывести текстовую информацию, например цену открытия. 1) Функция ChartSetInteger, свойства CHART_COLOR_CHART_UP и CHART_COLOR_CHART_DOWN (меняются, естественно, цвета всех баров графика - назначить цвет отдельного бара можно только в MQL5)2) ObjectCreate, тип объекта OBJ_RECTANGLE3) ObjectCreate, тип объекта OBJ_TEXT, в качестве точки привязки к графику использовать время и цену соответствующего бара. В общем, подружитесь с документацией, и вам откроется тайна тайн. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Nicole White Опубликовано 30 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 июля, 2017 1) Функция ChartSetInteger, свойства CHART_COLOR_CHART_UP и CHART_COLOR_CHART_DOWN (меняются, естественно, цвета всех баров графика - назначить цвет отдельного бара можно только в MQL5)2) ObjectCreate, тип объекта OBJ_RECTANGLE3) ObjectCreate, тип объекта OBJ_TEXT, в качестве точки привязки к графику использовать время и цену соответствующего бара. В общем, подружитесь с документацией, и вам откроется тайна тайн. Спасибо!Бары перекрашиваю DRAW_HISTOGRAM, а вот с объектами предстоит разобраться. Помогает смотреть коды встроенных в терминал индюков, но именно по моим вопросам примеров мало, поэтому ковыряю инфу по крупицам. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Александр_F Опубликовано 31 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 31 июля, 2017 Здравствуйте коллеги! Помогите пожалуйста решить проблему с функцией "Безубытка". При тестировании, терминал выбивает ошибку OrderModify error 130. Буду признателен за любую помощь. void BU(){ for(int i=0; i { if(OrderSelect(i, SELECT_BY_POS)) { if(OrderType()==OP_BUY) { if(OrderOpenPrice() { if (!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrGreen)) Print ("Проблема параметров БУ!"); } } if(OrderType() == OP_SELL) { if(OrderOpenPrice()>=(Ask+BULevel)*Point) { if (!OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,clrGreen)) Print ("Проблема параметров БУ!"); } } } }} Ссылка на сообщение Поделиться на другие сайты More sharing options...
Alex Fato Опубликовано 31 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 31 июля, 2017 Здравствуйте, кто может обучить как писать стрелочные индикаторы? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти