Alexandrkas Опубликовано 11 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 февраля, 2017 У одного брокера идет модификация ордеров, у другого ошибка 130. А у этих брокеров котировки сколько имеют знаков после запятой? Может у вас отсутствует в коде приведение к новым пунктам. "Ошибка 130" чаще всего это математическая ошибка в расчетах. Если у вас на 4 знаке все работает, а на 5 знаке ошибка, то возможно дело в таком куске кода.int OnInit() { if(Digits == 3 || Digits == 5) { Slippage *= 10; TakeProfit *= 10; StopLoss *= 10; } return(INIT_SUCCEEDED); } Ссылка на сообщение Поделиться на другие сайты More sharing options...
fotograf14 Опубликовано 11 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 февраля, 2017 по моему вопросу ответ так и не нашёлся, жаль! Что вы думаете я не смотрел этот курс....... по второму вопросу ...... зачем так усложнять ..... я зашёл узнать ответ на мой вопрос и натыкаюсь на какие та тех. проблемы, это я на счёт загрузки картинки, сейчас искать мне надо какой то бесплатный холстинг, что то там ещё делать...... и я уже забыл для чего я сюда пришёл......, хотя сайт мне очень нравится!!!! Добавлено: 11-02-2017 12:35:22И почему меня постоянно выкидывает с ветки, когда я отправляю сообщение?надо опять заходить .. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Alexandrkas Опубликовано 11 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 февраля, 2017 Цитата по моему вопросу ответ так и не нашёлся, жаль! Ваш вопрос: Цитата расскажите мне пожалуйста на людском языке как надо правильно писать функцию OnInit? OnDeinit,OnTick и где надо ставить void,где после return надо скобки, где ноль в скобках, короче у меня такая каша в голове. С учебника просто повторял код , там конечно int start() и всё в таком духе, перевёл на On Init и всё хана куча ошибок. Помогите!!!!! Эту звучит как: "Расскажите мне по-быстренькому как там бота на MQL4 написать, а то я не знаю". Я поэтому и дал вам ссылку на этот курс, потому что на мой взгляд это самый простой и быстрый способ найти ответ на свой вопрос. Но вы решили ни чего не изучать и написать, что вам не дали ответа на ваш вопрос. Если вы не знаете, что такое OnInit, OnDeinit, OnTick, не знает где и как ставить скобки, то может вам стоит начать с самых азов, потому что это основа. Без понимания этого нет смысла пытаться, что то написать на MQL4. OnInit - выполняется один раз при запуске советника, OnDeinit - выполняется один раз при завершении работы советника, OnTick - выполняется на каждом тике. Этот ответ вам вряд ли прояснит "кашу в голове". Цитата это я на счёт загрузки картинки Добавьте картинку как приложение к сообщению и всё. Зачем усложнять))) 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
miass2811 Опубликовано 11 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 февраля, 2017 Alexandrkas, Вы привели код процедуры OnInit(). У меня он прописан именно так, как у Вас. Работает на пятизнаке нормально (weltrade), на четырехзнаке у forex4you дает ошибку 130. Сегодня столкнулся на пятизнаке с ошибкой 131 у брокера - GerchikCo. Самое поганое, что это все в тестере на демо счетах. Если кто-нибудь имеет опыт обхода таких ситуаций - подскажите? Ссылка на сообщение Поделиться на другие сайты More sharing options...
SilverKZ Опубликовано 11 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 февраля, 2017 Уважаемые форумчане, по видео _https://www.youtube.com/watch?v=63REtIKc4gQ (это написание советника на TMA_Fair, написал свой и имею сейчас такую непоняткуticket=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,vSpread,0,0,"TMA_BB",MagicNumber,0,Red); if(ticket>0) { SL=NormalizeDouble(Bid+StopLoss*Point,Digits); TP=NormalizeDouble(Bid-TakeProfit*Point,Digits); if(OrderSelect(ticket,SELECT_BY_TICKET)) OrderModify(ticket,OrderOpenPrice(),SL,TP,0); }Код взят из урока. У одного брокера идет модификация ордеров, у другого ошибка 130. Подскажите, как разрулить такую ситуацию? Добрый день!функция OrderModify пытается изменить стоп-лосс или тейк-профит слишком близко к текущей цене. Нормализуйте SL и TP к стоплевелу брокера.Цитирую справку Спойлер Цитата Цены StopLoss и TakeProfit не могут располагаться слишком близко к рынку. Минимальное расстояние стопов в пунктах можно получить, используя функцию MarketInfo() с параметром MODE_STOPLEVEL. В случае ошибочных, а также ненормализованных стопов генерируется ошибка 130 (ERR_INVALID_STOPS). Нулевое значение MODE_STOPLEVEL означает либо отсутствие ограничения на минимальную дистанцию для стоп-лосса/тейк-профита, либо факт использования торговым сервером внешних механизмов динамического контроля уровней, которые не могут быть транслированы в терминал. Во втором случае GetLastError() может возвращать ошибку 130, так как уровень MODE_STOPLEVEL фактически является "плавающим". Ссылка на сообщение Поделиться на другие сайты More sharing options...
Камолиддин Опубликовано 11 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 февраля, 2017 Уважаемые программисты. Может ли кто нибудь создать канальный индикатор по следующим параметрам:Индикатор должен в окне графика отображать 5 каналов по Open/Close, каждый канал, чтобы по возможности был цветоизменяемым. Если используем индикатор на M1 ТФ, то индикатор строит(допустим сейчас время 9:00):M1 канал по Open/Close каждой свечи начиная с 9:00 до 10:00;M5 канал по Open/Close каждой 5ой свечи начиная с 9:00 до 10:00;М15 канал по Open/Close каждой 15ой свечи начиная с 9:00 до 10:00;М30 канал по Open/Close каждой 30ой свечи начиная с 9:00 до 10:00;H1 канал по Open/Close 9ти и 10 часовой свечи. И со следуещего часа всё начинается по новой.P.S. Если криво обозначил ТЗ прошу извинить.Если кто то сможет создать данный индикатор, то я был бы очень благодарен вам.Заранее спасибо Изменено 11 февраля, 2017 пользователем Камолиддин Ссылка на сообщение Поделиться на другие сайты More sharing options...
iket Опубликовано 12 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 12 февраля, 2017 Добавлено: 12-02-2017 08:18:01Написал свой первый советник для торговли на Форекс в Metatrader 4 .Использовал для этого его MetaEditor.Помоги,пожалуйста, разобраться.Советник в тестере «по ценам открытия» работает хорошо. Но на Демо счете, на контрольных точках и всех тиках в тестере — выставляет до 500 ордеров за несколько секунд, а за день — 2-3 пачки таких ордеров.Как сделать, чтобы на Демо и реальном счете он выставлял 1 ордер на Д1?Добавьте в коде подсчет количества ордеров:Код: [Выделить] //Подсчет Sell и Buy ордеров int CountSell=0, CountBuy=0; for(int i=OrdersTotal()-1;i>=0;i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if(OrderType()==OP_BUY) CountBuy++; if(OrderType()==OP_SELL) CountSell++; }И проверку:Код: [Выделить] if(CountBuy==0 и есть сигнал на покупки) {открываем ордер buy} if(CountSell==0 и есть сигнал на продажи) {открываем ордер sell} Спасибо тебе,ilnur17021992, за совет!!!Только у меня, когда я вставляю подсчет количества ордеров и проверку, редактор "ругается"(см.скрин).Может я это не туда вставляю или не так? Ума не хватает как сделать, а в Интернете не могу найти.Будь добр,добавь в советник в нужное место или подробно напиши куда и какОшибка.jpgDMB.mq4 Изменено 12 февраля, 2017 пользователем iket Ссылка на сообщение Поделиться на другие сайты More sharing options...
Romhacker Опубликовано 12 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 12 февраля, 2017 Код нужно поместить внутрь функции. У тебя же он просто лежит между функциями. Ссылка на сообщение Поделиться на другие сайты More sharing options...
iket Опубликовано 12 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 12 февраля, 2017 Добавлено: 12-02-2017 13:18:22Код нужно поместить внутрь функции. У тебя же он просто лежит между функциями. В том то и дело. что я не знаю как - я новичок Изменено 12 февраля, 2017 пользователем iket Ссылка на сообщение Поделиться на другие сайты More sharing options...
Romhacker Опубликовано 12 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 12 февраля, 2017 Так тебе надо ещё азы программирования подучить, а ты уже за написание советника взялся.К примеру так можно: bool IsOrderOpened(int Order_Type){ int CountSell=0, CountBuy=0; for(int i=OrdersTotal()-1;i>=0;i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) { if(OrderType()==OP_BUY) CountBuy++; if(OrderType()==OP_SELL) CountSell++; } if(CountBuy != 0 && Order_Type == OP_BUY) return(true); if(CountSell != 0 && Order_Type == OP_SELL) return(true); return(false);} Ссылка на сообщение Поделиться на другие сайты More sharing options...
снегирь Опубликовано 14 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 февраля, 2017 Добрый всем вечер.Есть индикатор "!FT PANEL". Прикладываю.Если его запустить то получим примерно такую картину:Код открытый.Не могу понять как автор индикатора получил полупрозрачный фон панели.Прошу знающих подсказать куда в коде нужно смотреть. FT_PANEL.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 14 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 февраля, 2017 Панель нарисована с помощью шрифта Webdings. Он вместо обычных печатных символов рисует различные значки. Только вот не пойму в каком месте панель полупрозрачная? :-/ График под ней не просматривается. Было бы гораздо правильней, на мой взгляд, не мучиться с Webdings, а нарисовать прямоугольник с помощью стандартных возможностей MQL. А вот чтобы он стал полупрозрачным, его нужно "рисовать объект как фон". 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
снегирь Опубликовано 15 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 февраля, 2017 Если не затруднит, киньте сюда кусок кода который отвечает за этот прямоугольник.Полупрозрачный вот:Еще вопрос: Где в коде лейбл "ALPHA TRADER", который в заголовке? Ссылка на сообщение Поделиться на другие сайты More sharing options...
SilverKZ Опубликовано 15 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 февраля, 2017 Если не затруднит, киньте сюда кусок кода который отвечает за этот прямоугольник. Строки 105-133 (создание объектов).Еще вопрос: Где в коде лейбл "ALPHA TRADER", который в заголовке? Строки 139 и 142.Прозрачность в данном индикаторе достигается путем включения свойства "График сверху" в настройках терминала: F8 -> вкладка "Общие". Изменено 15 февраля, 2017 пользователем SilverKZ 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
снегирь Опубликовано 15 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 февраля, 2017 Панель нарисована с помощью шрифта Webdings. Он вместо обычных печатных символов рисует различные значки. Только вот не пойму в каком месте панель полупрозрачная? :-/ График под ней не просматривается. Было бы гораздо правильней, на мой взгляд, не мучиться с Webdings, а нарисовать прямоугольник с помощью стандартных возможностей MQL. А вот чтобы он стал полупрозрачным, его нужно "рисовать объект как фон". Выложите, пожалуйста, для примера, простенький индикатор с прямоугольником, нарисованным с помощью стандартных возможностей MQL. Или киньте ссылку на такой. Заранее спасибо. Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 15 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 февраля, 2017 Выложите, пожалуйста, для примера, простенький индикатор с прямоугольником, нарисованным с помощью стандартных возможностей MQL. Или киньте ссылку на такой. Заранее спасибо. Вот что-то состряпал побырому, чисто для примера скрипт.Square.mq4 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
alex32926 Опубликовано 15 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 февраля, 2017 Подскажите пожалуйста.Как из совы сделать проверку - открыт ли в терминале график нужного инструмента, а если не открыт, то открыть и построить на нем горизонтальную линию. Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 17 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 февраля, 2017 Цитата Подскажите пожалуйста.Как из совы сделать проверку - открыт ли в терминале график нужного инструмента, а если не открыт, то открыть и построить на нем горизонтальную линию. Вот для примера такой скрипт накидаем:extern string chartSymbol="EURUSD";extern ENUM_TIMEFRAMES chartTF=PERIOD_M1; //---------------------------------------------------------void OnStart(){ if(WindowHandle(chartSymbol,chartTF)==0) { long id=ChartOpen(chartSymbol,chartTF); if(id>0) { int step=10; if(Digits==5||Digits==3)step*=10; double linePrice=SymbolInfoDouble(chartSymbol,SYMBOL_BID)-step*Point; //рисуем линию ObjectCreate(id,"Line",OBJ_HLINE,0,0,linePrice); ObjectSet("Line",OBJPROP_STYLE,2); ObjectSet("Line",OBJPROP_COLOR,clrRed); ObjectSet("Line",OBJPROP_WIDTH,1); ObjectSetInteger(id,"Line",OBJPROP_SELECTABLE,true); ObjectSetInteger(id,"Line",OBJPROP_HIDDEN,false); ObjectSetInteger(id,"Line",OBJPROP_STYLE,0); } } } 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sergey Forex Опубликовано 17 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 февраля, 2017 Всем доброго времени суток!У меня следующая проблема - не могу разобраться как сделать, чтобы на открытие каждой свечи открывались ордера. не важно какие, условие смогу прописать. А вот именно, чтоб на открытии - у меня не получается. Буду очень признателен за помощь! Вот функция определения нового бара. Если появился новый бар, то выдает true.//Функция определения нового бара//Функция возвращает истину (true) если это не первый запуск и пришел новый тик нового бара bool Fun_New_Bar()// Ф-ия обнаружения нового бара { static datetime Prev_Time=0;// Время текущего бара if(Prev_Time==0)//если предварительное время равно 0 { Prev_Time=Time[0];//если предвар. время равно времени нулевого бара, то это первый запуск функции return(false);//возвращаем ложь } if(Prev_Time!=Time[0])//если предвар. время не равно времени нулевого бара, то есть новый бар { Prev_Time=Time[0];//Поймался новый бар, присваиваем предв. времени время нового бара return(true);//есть новый бар, возвращаем истину } return(false); } Получается так: if(Fun_New_Bar() == true) есть новый бар -> вход 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
alex32926 Опубликовано 17 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 февраля, 2017 Можно использовать условие volume[0] Добавлено: 17-02-2017 14:47:03 DreamWorks Огромное спасибо за ответ. Но непонятно почему не реагирует линия на смену цвета и стиля Изменено 17 февраля, 2017 пользователем alex32926 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 17 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 февраля, 2017 Но непонятно почему не реагирует линия на смену цвета и стиля Пардон. Неправильно немного написал... Вот так правильно://рисуем линиюObjectCreate(id,"Line",OBJ_HLINE,0,0,linePrice);ObjectSetInteger(id,"Line",OBJPROP_COLOR,clrAqua);ObjectSetInteger(id,"Line",OBJPROP_SELECTABLE,true);ObjectSetInteger(id,"Line",OBJPROP_HIDDEN,false);ObjectSetInteger(id,"Line",OBJPROP_STYLE,4); 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
viktor004 Опубликовано 18 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 18 февраля, 2017 Индикатор Williams percent Range, надо чтобы сова продавала на ВЫХОДЕ из зоны перекупленности и покупала на ВЫХОДЕ из перепроданности. Хотя бы логически как это сделать, не понимаю. Ну и если не лень то кодом) Изменено 18 февраля, 2017 пользователем viktor004 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Скобарь Опубликовано 18 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 18 февраля, 2017 Уважаемые специалисты. При переключении ТФ, индикатор стирает построенные мной наклонные линии /горизонтальные не трогает/. Большая просьба - устраните пожалуйста этот недостаток. MultiInstrument.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
ilnur17021992 Опубликовано 18 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 18 февраля, 2017 Индикатор Williams percent Range, надо чтобы сова продавала на ВЫХОДЕ из зоны перекупленности и покупала на ВЫХОДЕ из перепроданности. Хотя бы логически как это сделать, не понимаю. Ну и если не лень то кодом) Сваял на скорую руку :).WilliamsPercentRange_BOT.mq4WilliamsPercentRange_BOT.ex4 Изменено 18 февраля, 2017 пользователем ilnur17021992 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
ilnur17021992 Опубликовано 18 февраля, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 18 февраля, 2017 Уважаемые специалисты. При переключении ТФ, индикатор стирает построенные мной наклонные линии /горизонтальные не трогает/. Большая просьба - устраните пожалуйста этот недостаток. Исправлено :).MultiInstrument.mq4MultiInstrument.ex4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти