usver73 Опубликовано 14 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 июля, 2017 Никто не поможет вшить в скомпилированный код.. надо файл с расширением mq4 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 14 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 июля, 2017 d1w4m3 Получилось ?Небольшое замечание: NormalizeDouble() не надо использовать часто - не за чем. Эта функция используется только для передачи цены в функции работы с ордерами! т.е. OrderModify() OrderOpen(). В других случаях это просто потеря времени. Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 15 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 июля, 2017 d1w4m3 Получилось ?Небольшое замечание: NormalizeDouble() не надо использовать часто - не за чем. Эта функция используется только для передачи цены в функции работы с ордерами! т.е. OrderModify() OrderOpen(). В других случаях это просто потеря времени. Конечно получилось)Спасибо учителям)мм)если не затруднит: uptr = iCustom(NULL, 0, "FL11",12.0,34.0,69.0,"5,3","5,3","5,3",172,174,82,"",FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,4, 0); dntr = iCustom(NULL, 0, "FL11",12.0,34.0,69.0,"5,3","5,3","5,3",172,174,82,"",FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,5, 0);bool UP_Trend(){ if(uptr > 0 && uptr != 2147483647.0) return(true); return(false);}//+------------------------------------------------------------------+bool DN_Trend(){ if(dntr > 0 && dntr != 2147483647.0) return(true); return(false);}В чем я тут мог ошибиться?Вроде буферы взял правильно? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 15 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 июля, 2017 В чем я тут мог ошибиться?Вроде буферы взял правильно?Может на 0 баре нет ничего? Я так думаю и на 1 баре может не быть... Понаблюдайте за индюком. Ссылка на сообщение Поделиться на другие сайты More sharing options...
вут716 Опубликовано 15 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 июля, 2017 Доброго времени суток всем. во втором видеоуроке автор показал как определять максимум и минимум за последние 10 баров, не подскажет ли кто нибудь, как определить те же минимум и максимум цены скажем за первые семь (например) часов. Что то вроде стратегии пробой утреннего флэта . Попытка разобраться самостоятельно ни к чему не привела -я только начал осваивать MQL и опыта и знаний 0. Заранее спасибо Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 15 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 июля, 2017 вут716 Вам понадобятся несколько функций, алгоритм такой:Определяем кол-во бар для анализаbarcount = 7 * 60 / _Period; // 7 часов * 60 минут / текущий период графикаПри наступлении часа прорыва флета определяем High/LowiHigh(NULL, 0, iHighest(NULL, 0, MODE_HIGH, barcount, 0)); // с Low аналогично Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 17 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 июля, 2017 Добрый день.В чем может быть проблема?2017.07.17 11:17:26.815 TestGenerator: unmatched data error (volume limit 1555 at 2017.04.13 18:30 exceeded) uptr = iCustom(NULL, 0, "FL11",12.0,34.0,69.0,"5,3","5,3","5,3",172,174,82,"",FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,4, 2); dntr = iCustom(NULL, 0, "FL11",12.0,34.0,69.0,"5,3","5,3","5,3",172,174,82,"",FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,5, 2); if( lastBarTime != Time[0] && Ask > ma && !CountSell() > 0 && BuySignal()==true && UP_Trend()==true) { ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "Sloper", Magic, 0, Blue); if (ticket>0) { TP = NormalizeDouble(Ask + TakeProfit*Point, Digits); SL = NormalizeDouble(Ask - StopLoss*Point, Digits); if (OrderSelect(ticket, SELECT_BY_TICKET)) if(!OrderModify(ticket, OrderOpenPrice(), SL, TP, 0)) Print("Ошибка на покупку"); lastBarTime = Time[0]; }bool UP_Trend(){ if(uptr > 0 && uptr != 2147483647.0) return(true); return(false);}bool DN_Trend(){ if(dntr > 0 && dntr != 2147483647.0) return(true); return(false);}Не работает после добавления FL11 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Strong-Tezis Опубликовано 17 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 июля, 2017 Здравствуйте. Ограничьте историю в барах пожалуйста, очень мешает лишнее на графике... Добавлено: 17-07-2017 18:23:37-Volume_Custome_2xMA.mq4-Volume_Custome_2xMA.mq4 Изменено 17 июля, 2017 пользователем Strong-Tezis Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 17 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 июля, 2017 Пробуй. -Volume_Custome_2xMA.mq4 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Strong-Tezis Опубликовано 17 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 июля, 2017 Не то,спасибо. И у меня тоже немного не то. Мне важно знать ,что у только закрытой свечи больше объема, чем у предыдущей! Поэтому подвал стандартный вообще не нужен, а на этом много линий(( Ссылка на сообщение Поделиться на другие сайты More sharing options...
Старик Опубликовано 17 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 июля, 2017 Strong-Tezis, так какой, в итоге, из 3-х одинаково названных индюков в топике правильный?Надо оставить один - или указать какой правильный в килобайтах. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Strong-Tezis Опубликовано 17 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 июля, 2017 Пока нет правильного. Который сделал 0ll, к сожалению не реагирует на уменьшение истории. Который переделал я, реагирует не так как надо. он правильно только при навешивании на график. Я сейчас пытаюсь сделать и если удастся, то обязательно выложу его для всех. Добавлено: 18-07-2017 12:34:14---Volume vLine(Last) - Это почти готовая версия того что было нужно. Единственное что мне не удалось, это удаление объектов или перерасчет, пересчитывает(удаляет лишние линии) при повторной загрузке шаблона. Если кроме меня кому то тоже был нужен такой индик, то сорри ,сделал все что мог...---Volume_vLine.mq4---Volume_vLineLast.mq4 Изменено 18 июля, 2017 пользователем Strong-Tezis 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 20 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 июля, 2017 Добрый вечер, как правильно задать? Например если 2 свечи D1 подряд бычьи, то это аптренд (ищу покупки), пока не появиться 2 медвежьи свечи подряд, начинаю искать продажи, а то получается что он постоянно проверяет условие? open1 = NormalizeDouble(iOpen(NULL, PERIOD_D1, 1), Digits); open2 = NormalizeDouble(iOpen(NULL, PERIOD_D1, 2), Digits); close1 = NormalizeDouble(iClose(NULL, PERIOD_D1, 1), Digits); close2 = NormalizeDouble(iClose(NULL, PERIOD_D1, 2), Digits);bool DN_Trend(){ if( close1>open1 && close2>open2 ) return(true);//1й и 2й бар медвежий else return(false);}//+------------------------------------------------------------------+bool UP_Trend(){ if(open1>close1 && open2>close2) return(true);//1й и 2й бар бычий else return(false);} Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 20 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 июля, 2017 if(open1>close1 && open2>close2) return(true);//1й и 2й бар бычий - это медвежьи бары :dЧтоб на каждом тике не вычисляла тренд надо проверять день недели, если новый день - вычисляем. Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 21 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 июля, 2017 Спасибо))Я утром уже увидел)) #:-sмммм.. я опять не правильно задал вопрос походу)Задача чтоб было условие: если было 2 бара up D1, то покупки разрешаются, пока не появятся 2 бара down D1. Новый_точечный_рисунок.jpg Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 21 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 июля, 2017 Задача чтоб было условие: если было 2 бара up D1, то покупки разрешаются, пока не появятся 2 бара down D1.Я и пишу: Появился новый дневной бар - определяем тренд.Новый дневной бар можно определить так:bool isNewDay(){ static int opDay = 0; if ( DayOfYear() != opDay ) { opDay = DayOfYear(); return(true); } return(false);} 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 23 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 июля, 2017 Доброе утро.Возник вопрос с индикатором Slope?Почему не получается реализовать вход через функцию?Что я упускаю? //возвращает данные DN буфера double Reds(int shift){ double buf = iCustom(NULL, 0, "Slope Direction Line", period, method, price, 1,shift); return(buf);} //возвращает данные UP буфера double Greens(int shift){ double buf = iCustom(NULL, 0, "Slope Direction Line", period, method, price, 0, shift); return(buf);}bool SellSignal(){ //если последний столбик красный, а предпоследний зеленый if(Reds(1)!=0&&Greens(2)!=0) return(true); else return (false);}bool BuySignal(){ //если последний столбик зеленый, а предпоследний красный if(Greens(1)!=0&&Reds(2)!=0) return(true); else return (false); Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 23 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 июля, 2017 попробуй принтом вывести оба буфера в лог, может там не "0"? У значений дубль иногда бывает, что 0.00...001 = 0. Пару раз сталкивался, с тех пор опасаюсь с 0 сравнивать - только через Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 23 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 июля, 2017 Ок спасибо, правильно я понимаю просто Print(buf);? а потом \тестер\logsПри таком условии все работает. Но хочется научится и через функцию, как правильно сделать и записать код) uptr = NormalizeDouble(iCustom(NULL, 0, "Slope Direction Line", period, method, price, 0, n), 4);bool UP_Trend(){ if(uptr > 0 && uptr != 2147483647.0) return(true); return(false);} Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 23 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 июля, 2017 нет, на новом баре читаешь буфера: uptr = iCustom(NULL, 0, "Slope Direction Line", period, method, price, 0, 1);ну или через функцию:double Reds(int shift) { return( iCustom(NULL, 0, "Slope Direction Line", period, method, price, 1, shift) ); }потом Print( "Функцию сравнения можно записать так (на выбор):bool UP_Trend() { return ( uptr > 0 && uptr bool DN_Trend() { return ( Reds(1) > 0 && Reds(1) Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 23 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 июля, 2017 Извиняюсь, а где про такую запись можно почитать и вникнуть, в чем я не прав при такой записи?double Reds(int shift){ double buf = iCustom(NULL, 0, "Slope Direction Line", period, method, price, 1,shift); return(buf);Print("buf=",buf);}и при Вашей выдает ошибку "declaration without type" или я опять туплю)) Добавлено: 23-07-2017 13:41:09bool SellSignal(){return(Reds(1) > 0 && Reds(1)0 && Greens(2)Вот вроде заработало)))Но как то не красиво и он открывает на первый бар, по изменению цвета, даже если shift поменять,то да весь смысл теряется, задача вообще была чтоб он открыл через функцию на 3 бар? Изменено 23 июля, 2017 пользователем d1w4m3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 23 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 июля, 2017 после return ничего работать не будет, даже Print. :dсунь параметр shift в SellSignal() и будет так:bool SellSignal(int shift){return(Reds(shift) > 0 && Reds(shift)0 && Greens(shift+1) 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 24 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 24 июля, 2017 после return ничего работать не будет, даже Print. :dсунь параметр shift в SellSignal() и будет так:bool SellSignal(int shift){return(Reds(shift) > 0 && Reds(shift)0 && Greens(shift+1) Вот я валенок))невнимательность главная проблема походу)Добавлено: 24-07-2017 04:32:52Я очень извиняюсь, но теперь я в конец запутался) //возвращает данные DN буфера double Reds(int shift){ double buf = iCustom(NULL, 0, "Slope Direction Line", period, method, price, 1,shift); return(buf);} //возвращает данные UP буфера double Greens(int shift){ double buf = iCustom(NULL, 0, "Slope Direction Line", period, method, price, 0, shift); return(buf);}//если последний столбик красный, а предпоследний зеленыйbool SellSignal(int shift){return(Reds(shift) > 0 && Reds(shift)0 && Greens(shift+1)//если последний столбик зеленый, а предпоследний красныйbool BuySignal(int shift){return(Greens(shift)>0 && Greens(shift)0 && Reds(shift+1) Изменено 24 июля, 2017 пользователем d1w4m3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 24 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 24 июля, 2017 Я очень извиняюсь, но теперь я в конец запутался)??? вроде наоборот прояснилось... Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 25 июля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 июля, 2017 нет я структуру примерно понял, запутался в //возвращает данные DN буфера double Reds(int shift) { return( iCustom(NULL, 0, "Slope Direction Line", period, method, price, 1, shift) ); }а потом как мы можем всунуть shift в bool переменную????Я такого ни где не видел, и мы ее уже объявляли??bool SellSignal(int shift) {return(Reds(shift) > 0 && Reds(shift)0 && Greens(shift+1)Ибо я структуру сам запутал?Но буфер то надо вернуть.... Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти