machine Опубликовано 21 декабря, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 декабря, 2018 t>>=1 - бинарный сдвиг вправо на 1 бит. В десятичном виде это будет как целочисленное деление на 2.|= - побитовое "или". 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 21 декабря, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 декабря, 2018 geugene читайте:Справочник MQL4 / Основы языка / Операции и выражения / Побитовые операции Сочетание "|=" мне вообще непонятно.Это означает: присвоить переменной period результат побитового "ИЛИ" переменных period и tПС: расшифровать смысл данного цикла без остального кода нельзя. Побитовые операции очень эффективны, если знать как ими пользоваться.Добавлено: 21-12-2018 11:02:34t>>=1 - бинарный сдвиг вправо на 1 бит. В десятичном виде это будет как целочисленное деление на 2.Ну раз уж взялись объяснять, то приведите пример, распишите как это работает на битовом уровне - многим будет интересно. Ссылка на сообщение Поделиться на другие сайты More sharing options...
geugene Опубликовано 21 декабря, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 декабря, 2018 t>>=1 - бинарный сдвиг вправо на 1 бит. В десятичном виде это будет как целочисленное деление на 2.|= - побитовое "или". Ок, на что их заменить для адеватных операторов?t = t/2;?? Ссылка на сообщение Поделиться на другие сайты More sharing options...
machine Опубликовано 21 декабря, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 декабря, 2018 Бинарный сдвиг вправо.Предположим, t=75 , в двоичной системе выглядит, как1001011Сдвиг вправо сдвигает вправо все биты на 1, последний бит справа пропадает, а освободившийся бит слева заполняется нулём.0100101В десятичной системе это 37.Число 74 выглядит в двоичной системе как 1001010, и после сдвига вправо получится тоже 0100101 (37). Т.е., так как последний значащий бит пропадает, то чётное и следующее за ним нечётное число после сдвига дают одно и то же значение.Побитовое "ИЛИ".Допустим, t = 10, в двоичном виде будет, как 1010, а period = 19, в двоичном виде будет, как 10011. Добавим недостающие нули слева к 1010, чтобы получилось одинаковое количество цифр. Получается:0101010011Побитовое "ИЛИ" - к каждой паре битов применяется логическое "ИЛИ" - то есть, если хотя бы один из операндов равен 1, то результат равен 1, иначе результат равен 0.Получается:11011Что в десятичной системе равно 27.В общем, понять, что делает данный цикл, без остальной части кода - нельзя. Предполагаю, что period будет равен 2[sup]n-1[/sup]-1, где n - кол-во значащих бит в изначальном значении t. Изменено 21 декабря, 2018 пользователем machine 3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
geugene Опубликовано 26 декабря, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2018 Народ, кто подскажет как ограничить рисование до одной стрелки при выполнении условия? Рисует стрелки на каждом баре, если условие выполняется.int OnCalculate(......){ for (i = 0; i { MABuffer1 = iMA(NULL, 0, PeriodMA1, 0, MODE_EMA, PRICE_CLOSE, i); MABuffer2 = iMA(NULL, 0, PeriodMA2, 0, MODE_EMA, PRICE_CLOSE, i); MABuffer3 = iMA(NULL, 0, PeriodMA3, 0, MODE_EMA, PRICE_CLOSE, i); MABuffer4 = iMA(NULL, 0, PeriodMA4, 0, MODE_EMA, PRICE_CLOSE, i); if (MABuffer1 > MABuffer2 && MABuffer2 > MABuffer3 && MABuffer3 > MABuffer4 && iClose(NULL,0,i) > MABuffer4) { ArrowUP = High + 5 * Point; } } return(rates_total);}Смотрел рзные стрелочные индикаторы, и там похожий код, но рисует одну стрелку после привыполнении условия. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 26 декабря, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 декабря, 2018 Смотрел рзные стрелочные индикаторы, и там похожий код, но рисует одну стрелку после привыполнении условия.видимо похож, но не совсем...функция OnCalculate запускается на каждом тике, а далее цикл по всем барам, т.е. Ваш индикатор на каждом тике пересчитывает все бары - это не правильно.Но не в этом причина рисования стрелки на каждом баре. Вам нужно строго контролировать последовательность сигналов, т.е. за UP должен следовать DOWN. Введите переменную last = 0(UP) или 1 (DOWN), Ваше условие UP дополните проверкой: && last == 1 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
batmanuyga Опубликовано 4 января, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 января, 2019 Ребяты , подскажите... Сигнал на открытие сделки появляется и исчезает внутри свечи( особенно на хвостах). При открытии новой свечи сигнал уже постоянный. Как написать в сове , чтобы ордер открывался не внутри свечи, а на открытии новой свечи , когда сигнал уже постоянный.Сдвиг (Shift) на одну свечу - это уже слишком далеко получается. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 4 января, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 января, 2019 Как написать в сове , чтобы ордер открывался не внутри свечи, а на открытии новой свечиЕсть функция, которая сигналит на открытии свечи и есть сигнал индюка. У Вас сейчас условие открытия сделки if ( signal ) Open(...), а нужно: if ( isNewBar() && signal ) Open(...);bool isNewBar(){ static datetime newB; if (newB == Time[0]) return(false); newB = Time[0]; return(true);} 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Larcher Опубликовано 5 января, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 5 января, 2019 Выбираю ордер по тикету на истории, чтобы проверить, закрылся ли он с прибылью.Почему-то одер отбирается еще когда он откыт, хотя в функции Select выбираю параметр MODE_HISTORY. В чем может быть моя ошибка? Добавлено: 05-01-2019 10:23:11Сама поняла свою ошибку ;) Исторические ордера нельзя отбирать по тикету. Изменено 5 января, 2019 пользователем Larcher Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 5 января, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 5 января, 2019 Исторические ордера нельзя отбирать по тикету.Это не так. Любой ордер можно выбирать по тикету, после выбора можно посмотреть дату закрытия, если =0, то ордер не закрыт, если >0 - значит закрыт. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Larcher Опубликовано 5 января, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 5 января, 2019 Я имела ввиду, что параметр MODE_HISTORY не работает, когда одер отбирается по тикету. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
batmanuyga Опубликовано 7 января, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 января, 2019 Подскажите , как в коде МАшку вставить не на график цены , а в окно к Стохастику ? Вручную выбираю Применить к Previous Indicators Data , а в коде нет такого - там только применять к виду МА ( Open, Close ).. Заранее благодарен ! Изменено 7 января, 2019 пользователем batmanuyga Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 7 января, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 января, 2019 Подскажите , как в коде МАшку вставить не на график цены , а в окно к Стохастику ?Нужно побарно сглаживать стохастик, формула экспоненциального сглаживания проста:stohMA = ( stoh + stohMA[i-1] * (periodMA -1) ) / periodMA; 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
batmanuyga Опубликовано 7 января, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 января, 2019 Нужно побарно сглаживать стохастик, формула экспоненциального сглаживания проста:stohMA = ( stoh + stohMA[i-1] * (periodMA -1) ) / periodMA; Спасибо.. Но я так понял , что просто вставить МА в нижнее окно нельзя ? Ну допустим у меня там не стохастик , а RVI или ATR , и на них нужно наложить МА. Новая формула нужна , чтоб МА на них выводилась ?Sorry , дошло до меня ! Стохастик ведь и есть две МА ... Нужно просто одну выводить со своими параметрами в нижнее окно ! Изменено 7 января, 2019 пользователем batmanuyga Ссылка на сообщение Поделиться на другие сайты More sharing options...
Kasatik Опубликовано 9 января, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 января, 2019 Доброго дня всем! Подскажите пожалуйста, кто знает, как сделать выпадающий список на графике. Вроде как нужно подключать Include а а какой и как не разобрался ~x( Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 9 января, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 января, 2019 Kasatik готового решения для Вас нет - сложные интерфейсы ни кто не использует. Метаквоты сделали что-то, есть ListView и ComboBox - пробуйте. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Kasatik Опубликовано 9 января, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 января, 2019 Kasatik готового решения для Вас нет - сложные интерфейсы ни кто не использует. Метаквоты сделали что-то, есть ListView и ComboBox - пробуйте. Да ... будем ковырять) Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ar4i Опубликовано 11 января, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 января, 2019 Новый урок:http://tradelikeapro.ru/mql4-grafik-ekviti-i-statistika/ очень полезный на мой взгляд урок. спасибо.но все таки хотелось бы извлечь не "относительную" просадку а "максимальную".по идее для этого надо из: if(MaxBal != 0 && MinBal != 0 && MaxDrawdown MaxDrawdown = ((MaxBal - MinBal)/AccountBalance())*100; }записать как то так ": if(MaxBal != 0 && MinBal != 0 && MaxDrawdown MaxDrawdown = (MaxBal - MinBal);так выйдет или нет? Изменено 11 января, 2019 пользователем Ar4i Ссылка на сообщение Поделиться на другие сайты More sharing options...
awals Опубликовано 15 января, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 января, 2019 Добрый вечер, друзья! Хотел узнать, есть ли уроки по графическим объектом ну, например, прямоугольники, стрелочки или кнопки, если создал кнопку и на нее нажал, чтоб она нарисовала новый объект прямоугольник или линии. Есть такие уроки. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ar4i Опубликовано 20 января, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 января, 2019 в уроке "закономерности свечных паттернов" рисуем стрелочки, а в уроке "копировщик сделок для MT" было описание кнопки. дальше заглядывать в справку и экспериментировать. Добавлено: 20-01-2019 16:22:54вопрос про slippage в наших советниках. как он работает на реале при:Market Execution(тип счета standart) и instant execution(ecn счетах).то есть конкретизирую: вариант на Market эта настройка есть ограничительным фактором на отклонение или она на ecn до одного места?и на оборот на счете standart, если задать скажем slippage=30; то будут ли реквоты до заданного отклонения? и еще как наш slippage может взаимодействовать с настройкой функции в мт4: "установкой максимального отклонения цены". опять таки в двух вариантах счета? счета? Изменено 20 января, 2019 пользователем Ar4i Ссылка на сообщение Поделиться на другие сайты More sharing options...
djnet Опубликовано 23 января, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 января, 2019 Всем добрый день. Созрел нубский вопрос: Как сделать оповещение о сделках например на почту?, но не стандартным методом, а внутри совы, что бы писала имя советника, параметры например, ну и погоду там, настроение и так далее. Может можно еще более продвинутые методы оповещения использовать, те же пуш уведомления (которые в стандартном исполнение весьма удобны, но малоинформативны если на счете торгует зоопарк советников). Вообщем прошу пнуть меня в нужном направлении :)) Спасибо. Ссылка на сообщение Поделиться на другие сайты More sharing options...
molot_1 Опубликовано 23 января, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 января, 2019 Здравствуйте " содрал" код для перевода в безубыток, подскажите пожалуйста что с ним не так, почему не работает? Заранее спасибо!!! Спойлер if (BULevel!=0) BU();//+------------------------------------------------------------------+void BU(){ for(int i=0; i { if(OrderSelect(i, SELECT_BY_POS)) { if(OrderType()==OP_BUY) { if(OrderOpenPrice()OrderStopLoss()) { OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Green); } } if(OrderType() == OP_SELL) { if(OrderOpenPrice()>=(Ask+BULevel)&&OrderOpenPrice() { OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Red); } } } }}//------------------------------------------------------------------+ Изменено 23 января, 2019 пользователем 0ll Ссылка на сообщение Поделиться на другие сайты More sharing options...
machine Опубликовано 23 января, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 января, 2019 BULevel в каких значениях задаётся? Сейчас он будет работать, если задавать в абсолютных значениях, т.е., 0.00001. Чтобы задавать в пунктах (т.е., 1), нужно умножать на _Point, т.е. Ask+BULevel*_Point (пример для "новых" пунктов).А вообще, в условиях бы поменять местами переменные. Если Ask-BULevel изменяется, а OrderOpenPrice - нет, то было бы понятнее Ask-BULevel=OrderOpenPrice()+BULevel (для Buy). Вроде бы, в оригинале всё равно условия неправильные (даже без перестановки переменных). 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
molot_1 Опубликовано 23 января, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 января, 2019 Спасибо большое за помощь!!! Может есть у кого- то рабочий перевод в безубыток? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 23 января, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 января, 2019 Здравствуйте " содрал" код для перевода в безубыток, подскажите пожалуйста что с ним не так, почему не работает?Не там содрали... Этот код не рабочий.К посту machine добавлю ошибку выбора ордера, вот правильная запись: OrderSelect ( i, SELECT_BY_POS, MODE_TRADES ); Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти