sergej1968 Опубликовано 16 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 марта, 2017 Мне кажется паттерн "рельсы" должен не так выглядеть. Но вопрос сейчас не в этом. Вот у Вас функция Reils() возвращает 0,1 или -1. Допустим, у нас задача посчитать сколько раз эта функция вернет единицу Спасибо. теперь попробую всё это вмонтировать в мой советник Ссылка на сообщение Поделиться на другие сайты More sharing options...
sniv Опубликовано 18 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 18 марта, 2017 Простая сова на отложках с буТФ - от 30м и вышеПроблема вот в чем - в терминале 1045 на ноуте все вродь работает, но при переносе на другой комп с той же версией терминала вылазят 130е ошибки. Может дело в бидах-асках, не знаю. Рассмотрите плз, если есть время.Идея для кода - сов ставит отложки на уровнях open&close предыдущей свечи (можно с отступом в пунктах) и временем удаления в случае не срабатывания. Копия_day-h-2.mq4day-h-2.setday-h-2-2.set Изменено 18 марта, 2017 пользователем sniv Ссылка на сообщение Поделиться на другие сайты More sharing options...
piratik Опубликовано 18 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 18 марта, 2017 Уважаемые спецы! Сделайте пожалуйста что бы у этого индюка работали буфера и если можно то прикрепите алерт или сообщение.(не обязательно) . Вот индик и скрин. При появлении паттерна заполнялся буфер. К сожалению сам не шарю в этом. Спасибо. на историй хорошо отрабатывается, даже удивил.А что значит буфера работали, что он еще должен делать? И может советник кто то накидает, посмотрели бы что он на самом деле из себя представляет! Да блин индюшок какой то загаваренный. Уже год никто не может алерт на него прикрутить. Печалька. Ссылка на сообщение Поделиться на другие сайты More sharing options...
step-scorp Опубликовано 19 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 марта, 2017 Уважаемые спецы! Сделайте пожалуйста что бы у этого индюка работали буфера и если можно то прикрепите алерт или сообщение.(не обязательно) . Вот индик и скрин. При появлении паттерна заполнялся буфер. К сожалению сам не шарю в этом. Спасибо. Так индюк рисует как Малевич. Смысл? Ссылка на сообщение Поделиться на другие сайты More sharing options...
piratik Опубликовано 20 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 марта, 2017 Уважаемые спецы! Сделайте пожалуйста что бы у этого индюка работали буфера и если можно то прикрепите алерт или сообщение.(не обязательно) . Вот индик и скрин. При появлении паттерна заполнялся буфер. К сожалению сам не шарю в этом. Спасибо. Так индюк рисует как Малевич. Смысл? И замечательно что рисует. Стереотипы страшная штука. Но дело даже не в этом. Дело в том что никто НЕ МОЖЕТ сделать аллерт. А это согласитесь уже другое "кино". Ссылка на сообщение Поделиться на другие сайты More sharing options...
sergej1968 Опубликовано 20 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 марта, 2017 Господа, программисты. А можно ли как-то сравнивать баланс, который был на предыдущей свече и на текущей. Допустим, запомнить баланс на счёте при закрытии часовой свечи, и при закрытии следующей свечи, сравнить его с предыдущим. Если разница Ссылка на сообщение Поделиться на другие сайты More sharing options...
mobidik Опубликовано 20 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 марта, 2017 Дело в том что никто НЕ МОЖЕТ сделать аллерт. А это согласитесь уже другое "кино". Не "никто НЕ МОЖЕТ", а не хочет - это разные вещи. Кино в том, что сигнал может появится на мгновение и пропасть, а алерт отработает, пользователь уже не наблюдает сигнала на графике или наоборот, спустя время, индюк нарисовал сигнал на истории и тут начинается: а почему был/не был сигнал? Что за фигню вы мне сделали и т.д. т.п. Отсюда вопрос: а прогеру этот гемор нужен? Если Вам так нужно - обратитесь в платную ветку. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 20 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 марта, 2017 А можно ли как-то сравнивать баланс, который был на предыдущей свече и на текущей. Допустим, запомнить баланс на счёте при закрытии часовой свечи, и при закрытии следующей свечи, сравнить его с предыдущим. Если разница Можно, вот функция, возвращает true если баланс на новой свече уменьшился:bool isBalansDown(){ bool val = false; static datetime new_Bar = 0; static double balans = 0; if ( new_Bar == 0 ) { new_Bar = Time[0]; balans = AccountBalance(); return(false); } // начальные значения if ( new_Bar == Time[0]) return(false); //Если бар не закрыт - выход if ( AccountBalance() - balans new_Bar = Time[0]; balans = AccountBalance(); return(val);}использовать на каждом тике так:if ( isBalansDown() ) openOrder(); 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
pfenix Опубликовано 20 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 марта, 2017 Подскажите функцию закрытия ордера по противоположному сигналу.К примеру : есть позиция Buy ,появился противоположный и открылся Sell,соответственно Buy закрылся. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Alexandrkas Опубликовано 20 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 марта, 2017 Подскажите функцию закрытия ордера по противоположному сигналу. Самый простой вариант if(Signal == true){ // есть сигнал Type = GetOrderOpenType(); //получаем тип открытого ордера с помощью функции CloseAll(); //закрываем ордер или ордера (нужно прописать в функции) // далее в зависимости от типа ордера, открываем новый if(Type == OP_BUY){ sellticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, "", Magic, 0, Red); } if(Type == OP_SELL){ buyticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, 0, 0, "", Magic, 0, Blue); } } Изменено 20 марта, 2017 пользователем Alexandrkas 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
sergej1968 Опубликовано 21 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 марта, 2017 Посмотрите, пожалуйста. Почему не работает множитель?Мне всё равно каким был предыдущий ордер, следующий должен открыться с большим лотом.extern int Lots = 1;extern int Slip = 10;extern int Magic = 123;extern double Multiplier = 2.1;extern bool UserReilsCandles = true;int ticket;double lastlot;void OnTick(){ lastlot = (FindLastLots(OP_SELL) || FindLastLots(OP_SELL)); lastlot = NormalizeDouble(lastlot*Multiplier, 2); if (UserReilsCandles && Reils() == 1 && Fun_New_Bar() == true) { ticket = (OrderSend(Symbol(), OP_BUY, lastlot, Ask, Slip, 0, 0, IntegerToString(5), Magic, 0, CLR_NONE)); if (ticket { Print ("Ошибка открытия ордера на покупку"); } } if (UserReilsCandles && Reils() == -1 && Fun_New_Bar() == true) { ticket = (OrderSend(Symbol(), OP_SELL, lastlot, Bid, Slip, 0, 0, IntegerToString(5), Magic, 0, CLR_NONE)); if (ticket { Print ("Ошибка открытия ордера на продажу"); } }}//+------------------------------------------------------------------+int Reils(){ double Close1 = iClose(Symbol(), 0, 1); double Open1 = iOpen(Symbol(), 0, 1); double Close2 = iClose(Symbol(), 0, 2); double Open2 = iOpen(Symbol(), 0, 2); if (Close1 Open2) return(-1); if (Close1 > Open1 && Close2 return(0);}//+------------------------------------------------------------------+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); }//+------------------------------------------------------------------+double FindLastLots(int otype){ double oldlots = 0; int oldticket; for (int cnt = OrdersHistoryTotal()-1; cnt >= 0; cnt--) { if (OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY)) { if(OrderMagicNumber() == Magic) { oldticket = OrderTicket(); if (oldticket > ticket) { ticket = oldticket; oldlots = OrderLots(); } } } } return(oldlots);}//+------------------------------------------------------------------+ Изменено 21 марта, 2017 пользователем sergej1968 Ссылка на сообщение Поделиться на другие сайты More sharing options...
pavlus777 Опубликовано 22 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 марта, 2017 Новый урок на сайте:Как написать ночного скальпера 4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Romhacker Опубликовано 22 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 марта, 2017 double FindLastLots(int otype){ double oldlots = 0; int oldticket; for (int cnt = OrdersHistoryTotal()-1; cnt >= 0; cnt--) { if (OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY)) { if(OrderMagicNumber() == Magic) { oldticket = OrderTicket(); if (oldticket > ticket) { ticket = oldticket; oldlots = OrderLots(); } } } } return(oldlots);} В этой функции не нужен параметр otype.Измени заголовок функции на double FindLastLots() lastlot = (FindLastLots(OP_SELL) || FindLastLots(OP_SELL)); В этом месте неправильное присваивание результата вызова функции.Надо так lastlot = FindLastLots(); Это с учётом того, что ты изменишь заголов функции FindLastLots. Ссылка на сообщение Поделиться на другие сайты More sharing options...
sergej1968 Опубликовано 22 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 марта, 2017 Объясните, пожалуйста, что такое "ticket" ордера, и чем он отличается от "Magic". Заранее, спасибо. P. S. В учебнике не могу это найти. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sergey Forex Опубликовано 22 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 марта, 2017 sergej1968, _https://docs.mql4.com/ru/trading/ordermagicnumber_https://docs.mql4.com/ru/trading/orderticket_https://docs.mql4.com/ru/trading/ordersendКогда вы открываете ордер командой OrderSend, то этому ордеру присваивается свой номер, который можно увидеть в терминале в левом нижнем углу. Этот номер и есть тикет ордера.OrderMagicNumber или "магик" это уникальное число, которое задает пользователь при открытии ордера, опять же командой OrderSend. У каждого советника должен быть свой магик. Он нужен, чтобы советник отличал свои ордера от чужих.Посмотрите видеоуроки на сайте Павла, начните с первого http://tradelikeapro.ru/mql-nachalo/, очень многое прояснится. Изменено 22 марта, 2017 пользователем Sergey Forex 3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
ilmel Опубликовано 23 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 марта, 2017 Привет! Всем известно , что в MT4 можно наложить один индикатор на другой, чтобы , к примеру, MA строилась на показаниях RSI . А как программно сконструировать такой "составной" индикатор ? Технические индикаторы типа iMA не дают возможности выбрать в качестве типа цены Previous Indicator Data .... Ссылка на сообщение Поделиться на другие сайты More sharing options...
overdrive90 Опубликовано 24 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 24 марта, 2017 Привет! Всем известно , что в MT4 можно наложить один индикатор на другой, чтобы , к примеру, MA строилась на показаниях RSI . А как программно сконструировать такой "составной" индикатор ? Технические индикаторы типа iMA не дают возможности выбрать в качестве типа цены Previous Indicator Data .... Заполняешь массив показаниями индикатора, по которому хочешь построить машку. И потом iMAOnArray(). 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
scherbakovss Опубликовано 25 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 марта, 2017 Как программно индикатор удалить с графика.например для советникаExpertRemove(); //это помогает,а индикатор продолжает быть на графике.Код компилируется без ошибок.//+------------------------------------------------------------------+//| Size_bar.mq4 |//| Copyright 2016, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright "Copyright 2016, MetaQuotes Software Corp."#property link "https://www.mql5.com"#property version "1.00"#property strict#property indicator_chart_window//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int OnInit() { double Size_bar_W; Size_bar_W=iOpen(0,0,0)-iClose(0,0,0); if (_Digits==5) {Alert("Size_bar Weekly pips=",OrderSymbol(), Size_bar_W *100000 );ExpertRemove(); }else { Alert("Size_bar Weekly pips=",OrderSymbol(), Size_bar_W *1000 );//3 знака ExpertRemove(); }//--- return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) {//---//--- return value of prev_calculated for next call return(rates_total); }//+------------------------------------------------------------------+void OnDeinit(const int reason) {//--- } Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sergey Forex Опубликовано 27 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 марта, 2017 Уважаемые программисты! Подскажите как сделать так, чтобы советник стоял на одном графике, а торговал (при наличии сигналов) на всех парах, открытых в обзоре рынка? Если можно кусок кода или подскажите где копать? Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 28 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 марта, 2017 Уважаемые программисты! Подскажите как сделать так, чтобы советник стоял на одном графике, а торговал (при наличии сигналов) на всех парах, открытых в обзоре рынка? Если можно кусок кода или подскажите где копать? Тут не может быть единого универсального решения. Получение сигналов со всех инструментов, их анализ, открытие сделок, сопровождение... и все это будет делаться одним экспертом? Боюсь это будет очень тяжелая конструкция. Особенно если еще в работе участвуют индикаторы. Если Вам просто нужно открыть ордер на инструменте, отличающемся от того, на котором запущен эксперт, то это умеет OrderSend(). Укажите просто название инструмента одним из аргументов функции. С помощью SymbolInfoDouble() можете получать цену по интересующему инструменту. iOpen(), iClose(), iHigh(), iLow() возвращают цены OHLC интересующего бара интересующего инструмента. Ну и т.д. Все от конкретных задач зависит. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
voron55 Опубликовано 29 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 марта, 2017 Здравствуйте. Устал тыкать ручками на сайте бинаров альпари.Вопрос в том , что есть советник и есть сайт бинаров альпари.Так вот как бы реализовать идею, советник дает сигнал покупку и сделка выходила на сайт бинаров?Просто привык к альпе, но у них нет возможности бинарить в терминале.Может туплю, но как говорится за спрос по голове не ударят)) Ссылка на сообщение Поделиться на другие сайты More sharing options...
elektroM Опубликовано 29 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 марта, 2017 Уважаемые программисты! Подскажите как сделать так, чтобы советник стоял на одном графике, а торговал (при наличии сигналов) на всех парах, открытых в обзоре рынка? Если можно кусок кода или подскажите где копать? youtube.comВалерій Вакуленко9 Мультивалютная торговля.с 5 минуты, скорость воспроизведения 1.5 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
viktor004 Опубликовано 29 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 марта, 2017 Простая сова на отложках с буТФ - от 30м и вышеПроблема вот в чем - в терминале 1045 на ноуте все вродь работает, но при переносе на другой комп с той же версией терминала вылазят 130е ошибки. Может дело в бидах-асках, не знаю. Рассмотрите плз, если есть время.Идея для кода - сов ставит отложки на уровнях open&close предыдущей свечи (можно с отступом в пунктах) и временем удаления в случае не срабатывания. Причем тут бид и аск. 130 ошибка это стоплос. вполне возможно что у вас на компе 5 знаков, а на ноуте 4 знака. При этом будет ошибка. У альпари на реале 5 знаков а на демо 4 знака. Изменено 1 мая, 2017 пользователем Pavel888 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 30 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 марта, 2017 Здравствуйте. Устал тыкать ручками на сайте бинаров альпари.Вопрос в том , что есть советник и есть сайт бинаров альпари.Так вот как бы реализовать идею, советник дает сигнал покупку и сделка выходила на сайт бинаров?Просто привык к альпе, но у них нет возможности бинарить в терминале.Может туплю, но как говорится за спрос по голове не ударят)) Боюсь, что Ваша идея выходит за рамки MQL. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 30 марта, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 марта, 2017 Простая сова на отложках с буТФ - от 30м и вышеПроблема вот в чем - в терминале 1045 на ноуте все вродь работает, но при переносе на другой комп с той же версией терминала вылазят 130е ошибки. Может дело в бидах-асках, не знаю. Рассмотрите плз, если есть время.Идея для кода - сов ставит отложки на уровнях open&close предыдущей свечи (можно с отступом в пунктах) и временем удаления в случае не срабатывания. У Вас во входных настройках вот эти переменные:extern double BULevelBS = 0.001;extern double TrailingStopBS = 0.005;extern double BULevelSS = 0.001;extern double TrailingStopSS = 0.005;extern double BULevelBL = 0.001;extern double TrailingStopBL = 0.005;extern double BULevelSL = 0.001;extern double TrailingStopSL = 0.005; задаются типом double и уже приведены к пунктам. Зачем далее в коде Вы умножаете их значения на Point? Попробуйте перемножить, например, вот это:if(OrderOpenPrice()>=(Ask+BULevelSL*Point)&&OrderOpenPrice()У пятизначного брокера на EURUSD Point вернет 0.00001А теперь посчитаем:BULevelSL(0.001)*Point(0.00001)=0.00000001. Что это? Для чего?Даже не вникал в суть кода, просто глазами пробежался и увидел эти непонятные вычисления... 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти