boovood Опубликовано 8 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 мая, 2017 Написанный ещё в 2016 году советник решил малость улучшить но не получается,помогите написать правильно, в советнике есть и что требуется написать и то как я пытался это сделать но не получается это /* тут */ oppositnik+.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Viktor M. Опубликовано 9 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 мая, 2017 Здравствуйте Сергей (хbms)! Подскажите по 7 уроку. Получилось написать неплохой сеточник (как мне кажется) - 50-70% годовых при тестировании на демо и объеме 0.1лот. При установке совы на нано-счет в Alpari, чтобы получить такой процент, надо увеличить объем до 10лот!!! Аlраri - брокер пятизначный, а нано-счет четыре знака. Какое условие прописать в советнике, чтобы при переходе на центовый счет получить реальные цифры? if (Digits == 2 || Digits ==4 ) { ......? } Ссылка на сообщение Поделиться на другие сайты More sharing options...
boovood Опубликовано 10 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 мая, 2017 Здравствуйте Сергей (хbms)! Подскажите по 7 уроку. Получилось написать неплохой сеточник (как мне кажется) - 50-70% годовых при тестировании на демо и объеме 0.1лот. При установке совы на нано-счет в Alpari, чтобы получить такой процент, надо увеличить объем до 10лот!!! Аlраri - брокер пятизначный, а нано-счет четыре знака. Какое условие прописать в советнике, чтобы при переходе на центовый счет получить реальные цифры? if (Digits == 2 || Digits ==4 ) { ......? } Digits==5, пять знаков после запятой =5 Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 10 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 мая, 2017 Добрый день!И с нова я)новый код проблема та же)Идея в том чтобы ордер открывался по индикатору Macd 2line, когда гистограмма принимает значение ""UP"" и ASK выше средней, то открываем бай, ну и аналогично для селл.Проблема вот в чем:как задать правильное условие, чтобы ордер открывался ТОЛЬКО на первый сигнал от индикатора?И не имел права открываться на 2, 3 и тд. Сигналом я считаю первый бар в гистограмме.ps как в прошлом советнике не получилось выкрутиться, тк подряд могут быть 2 и 3 бая или села(( MACD_288.mq41123.jpg Ссылка на сообщение Поделиться на другие сайты More sharing options...
77павел Опубликовано 10 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 мая, 2017 Здравствуйте форумчане хотел было индикатор тма из системы победа оптимизировать с данного форума следующим образом ширину данного канала вывести в угол графика тем самым убрать один индикатор из системы в связи с этим просьба если уж у меня маленько опыта не хватает может кто поможет если располагает временем Спасибо)) TMA_with_Distances.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 10 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 мая, 2017 Здравствуйте, уважаемые.Изучаю MQL относительно недавно и споткнулся вроде бы на элементарном- получить значение индикатора со старшего ТФ (например, МА):если в настройках МА поставить timeframe= D1, или текущий (в тестере), то все нормально, при прочих настройках результат=0 Спойлер #property copyright "Usver73"#property link "https://www.mql5.com"#property version "1.00"#property strictextern ENUM_TIMEFRAMES frTF =1440;//ТФ Фрактал и МАextern ENUM_TIMEFRAMES OsMaTF =240; //ТФ ОсМАextern int frShift =2; //Смещение Фрактал//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() {//---//--- return(INIT_SUCCEEDED); }//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+void OnDeinit(const int reason) {//--- }//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+void OnTick() {//--- double MyFractalsUp= iFractals (NULL,0,1,frShift); double MyFractalsDn= iFractals (NULL,0,2,frShift); double MAfast= iMA(NULL,frTF,5,0,0,0,1); double MAslow= iMA(NULL,frTF,22,0,0,0,1); double MyOSMA1= iOsMA(NULL,OsMaTF,11,22,5,0,1); double MyOSMA2= iOsMA(NULL,OsMaTF,11,22,5,0,2); double pr=0, sl=0, tp=0; // цена, стоплосс, тейкпрофит int oBuy=0,oSell=0, oBuystop=0, oSellstop=0; Print("frTF ",frTF," OsMaTF ",OsMaTF); Print (" MyFractalsUp ",MyFractalsUp, ",MyFractalsDn ",MyFractalsDn, " MAfast ",MAfast," MAslow ",MAslow, " MyOSMA1 ", MyOSMA1," MyOSMA2 ", MyOSMA2 ); } Всю голову сломал :( Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 10 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 мая, 2017 как задать правильное условие, чтобы ордер открывался ТОЛЬКО на первый сигнал от индикатора?И не имел права открываться на 2, 3 и тд. Сигналом я считаю первый бар в гистограмме. Затрудняетесь как определить произошла ли смена цвета на гистограмме? Проверяйте предыдущий бар. Если последний закрытый зеленый, а предпоследний - красный, то соответственно, цвет гистограммы сменился. Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 10 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 мая, 2017 Здравствуйте!Дело в истории котировок. Обновите историю, желательно минутную, чтобы в терминале была история на весь период тестирования. И должно все работать. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 10 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 мая, 2017 Здравствуйте!Дело в истории котировок. Обновите историю, желательно минутную, чтобы в терминале была история на весь период тестирования. И должно все работать. Закачивал котировки SQ Tick Downloader тиковые, потом конвертировал с помощью CSV2FXT все таймфреймы, думал они нормальные. На пяти парах попробовал- результат-0.Попробовал на терминале подключенном к счету, на нем все пошло.Я в печали x_x .DreamWorks, спасибо большое! 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 10 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 мая, 2017 чтобы ордер открывался ТОЛЬКО на первый сигнал от индикатора?И не имел права открываться на 2, 3 и тд. Сигналом я считаю первый бар в гистограмме.и я попробую...Вам надо попробовать чередовать направления входа, т.е. после бая ждать сигнал на селл и в бай не ходить.Алгоритм такой: if ( 1- lastType == signalType ) { OpenNewOrder (signalType); lastType = signalType; } Ссылка на сообщение Поделиться на другие сайты More sharing options...
MONTE-CRISTO Опубликовано 11 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 мая, 2017 всем привет вообщем начил изучения языка и столкнулся с первой проблемой после просмотра урока на курсе молодого бойца там было домашнее задание которой я не смог сделать так так не смог понять куда в уроке в метаэдиторе цифры строк делись которые слева расспологаются я открыл у себя в тереме и не смог увеличить их количество как увеличить количество строк чтоб прописать алгоритм помогите понять? Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 11 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 мая, 2017 Доброе утро, спасибо за ответы.Я наверное опять не правильно выражаюсь)Что бы он открывал на первый бар гистограммы я реализовал, а вот чтобы он не открывал потом...например: если закрылся по SL или TP, робот ждал нового первого бара по гистограмме, или когда приостанавливаешь советник на некоторое время, при включении он опять ждал только нового сигнала, тобишь первого бара по гистограмме.Сохранять по типу(чему я научился, огромное спасибо DreamWorks), не удовлетворяет условиям стратегии, так как в день может быть подряд и 2 и 3 одинаковых по типу ордера.. Добавлено: 11-05-2017 04:52:55всем привет вообщем начил изучения языка и столкнулся с первой проблемой после просмотра урока на курсе молодого бойца там было домашнее задание которой я не смог сделать так так не смог понять куда в уроке в метаэдиторе цифры строк делись которые слева расспологаются я открыл у себя в тереме и не смог увеличить их количество как увеличить количество строк чтоб прописать алгоритм помогите понять? Сервис/настройки/номера строк галочку поставьте._точечный_рисунок.jpg 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 11 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 мая, 2017 Я наверное опять не правильно выражаюсь) Да уж, сложно Вас понять. Дайте определение, что по Вашему "новый первый бар по гистограмме". Самый первый бар вообще? Тогда в чем смысл? Или первый бар за какой-то период (первый в день, час, неделю)? Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 11 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 мая, 2017 Я наверное опять не правильно выражаюсь) Да уж, сложно Вас понять. Дайте определение, что по Вашему "новый первый бар по гистограмме". Самый первый бар вообще? Тогда в чем смысл? Или первый бар за какой-то период (первый в день, час, неделю)? мммм..на картинке приведен пример, вот следующим будет, cчитаться первым, только после DOWN гистограммы1123.jpg1.jpg Ссылка на сообщение Поделиться на другие сайты More sharing options...
MONTE-CRISTO Опубликовано 11 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 мая, 2017 люди подскажите как увеличить расстояние между строками что написать алгоритм? Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 11 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 мая, 2017 люди подскажите как увеличить расстояние между строками что написать алгоритм? ммм а "интер" чем не устраивает? Ссылка на сообщение Поделиться на другие сайты More sharing options...
iloirin Опубликовано 11 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 мая, 2017 Уважаемые, господа-программисты! Помогите улучшить, на мой взгляд, индикатор. Когда он подписывает локальный максимум, сделайте, пожалуйста, так, чтобы цену он указывал НАД линией, так как цифры закрывают свечи. Огромное спасибо за помощь. Gann_SQ9_A2.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
AAchtung Опубликовано 11 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 мая, 2017 Всем доброго времени суток! Заранее извиняюсь за ломанное построение вопроса - немного новичок. Сам вопрос - Как вшить в советника способность торговать в определенные дни недели (выбранные дни отключить) ? Думаю просто скопировать код с советника Generic, но опасаюсь упустить какую-то переменную/функцию. На какие переменные стоит обращать внимание?Заранее благодарен за ответ! Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 11 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 мая, 2017 мммм..на картинке приведен пример, вот следующим будет, cчитаться первым, только после DOWN гистограммы d1w4m3, из картинки следует, что первым Вы считаете бар гистограммы, который идет на стыке смены цветов (или направления) гистограммы. Правильно? Если так, то я уже ответил Вам выше. Если не правильно Вас опять понимаем, то давайте определение словами, без картинок. Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 11 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 мая, 2017 d1w4m3, из картинки следует, что первым Вы считаете бар гистограммы, который идет на стыке смены цветов (или направления) гистограммы. Правильно? Если так, то я уже ответил Вам выше. Если не правильно Вас опять понимаем, то давайте определение словами, без картинок. "Проверяйте предыдущий бар. Если последний закрытый зеленый, а предпоследний - красный, то соответственно, цвет гистограммы сменился"Все вник, осталось только понять как определить предпоследний закрытый? я так понимаю: if(Close[2] !=uptrend && Close [1] != dntrend)??или что то опять намудрил)Добавлено: 11-05-2017 13:04:56если честно, вообще не пойму, как можно связать гистограмму и бары? Понимаю как работать со средней и тд, что непосредственно находится на графике, а тут ....?? Изменено 11 мая, 2017 пользователем d1w4m3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 11 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 мая, 2017 если честно, вообще не пойму, как можно связать гистограмму и бары? Понимаю как работать со средней и тд, что непосредственно находится на графике, а тут ....?? Нет никакой разницы где находится индикатор, на графике или в отдельном окне. Берите данные с его буферов, которые к слову сказать очень даже непосредственным образом связаны с барами, и сравнивайте данные последнего закрытого бара (столбика на гистограмме) с предпоследним. Прошу прощения, но мне сложно Вам помогать и что-то подсказывать, пока Вы находитесь на том уровне знаний, на котором находитесь. Вам надо хорошо усвоить базовые понятия. Не могу ведь я здесь все с самого нуля разжёвывать. Про функцию iCustom() вообще в курсе? Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 11 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 мая, 2017 uptr = iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, 2, 1); dntr = iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, 3, 1); я к ним и привязан! Так в чем тогда ошибка не пойму?Close[2] !=uptr && Close [1] != dntr это для баяИли уж отправьте меня в документацию какую-нибудь, буду ума разума набираться Ссылка на сообщение Поделиться на другие сайты More sharing options...
ANDRON74 Опубликовано 11 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 мая, 2017 uptr = iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, 2, 1); dntr = iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, 3, 1); я к ним и привязан! Так в чем тогда ошибка не пойму?Close[2] !=uptr && Close [1] != dntr это для баяИли уж отправьте меня в документацию какую-нибудь, буду ума разума набираться Если не ошибаюсь, надо ещё добавить uptr_2 = iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, 2, 2); dntr_2 = iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, 3, 2); и сравнить их, как Вы сравнивали Close[2] !=uptr && Close [1] != dntrНапример, если uptr_20 то это и будет пересечение. Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 11 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 мая, 2017 Close[2] !=uptr && Close [1] != dntr это для бая Зачем вы сравниваете Close[] баров c uptr и dntr? :-/ Вам нужно сравнивать данные индикаторных буферов. Удобней всего будет сделать функцию, которая будет возвращать данные нужных буферов. У вас гистограмма имеет два цвета: красный и зеленый. Пишем две функции://возвращает данные красного буфера double Red(int shift){ double buf=iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, 3, shift); return(buf);}//возвращает данные зеленого буфера double Green(int shift){ double buf=iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, 2, shift); return(buf);} Теперь можем запрашивать у этих функций данные любого (задается параметром shift) интересующего нас столбика гистограммы. Я не знаю какие данные хранятся в индикаторных буферах, но предположу, что это будет !0 - если столбик на гистограмме есть, и 0 - если столбика нет. Теперь идентифицируем сигналы:Появился первый красный столбик после зеленых столбиков:bool SellSignal(){ //если последний столбик красный, а предпоследний зеленый if(Red(1)!=0&&Green(2)!=0) return(true); else return (false);} Появился первый зеленый столбик после красных столбиков:bool BuySignal(){ //если последний столбик зеленый, а предпоследний красный if(Green(1)!=0&&Red(2)!=0) return(true); else return (false);} Вот и все. Или уж отправьте меня в документацию какую-нибудь, буду ума разума набираться Такой документации нет и быть не может. Тут уже самому надо думать. Это как если бы Вам дали доски, саморезы, ножовку, шуруповерт и попросили сделать табуретку. Точно зная и понимая для чего предназначены все эти предметы, я думаю Вы бы легко додумались как смастерить эту табуретку. А если даже бы Вы не знали как пользоваться, скажем, шуроповертом, то всегда можно прочитать инструкцию по его использованию (документация в программировании). Но ни в какой инструкции к шуроповерту Вы не прочтете как с его помощью смастерить табуретку. Поэтому с пониманием всего арсенала инструментов MQL должно прийти и понимание что и как с его помощью можно сделать. А если не можете понимать, значит торопитесь и у Вас пробелы в знаниях. Изменено 11 мая, 2017 пользователем DreamWorks 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 12 мая, 2017 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 12 мая, 2017 =d> =d> =d>Даже близко не был от такого решения этой проблемыСловами не передать......это сколько надо учиться, что бы до такого уровня дойти @-)Спасибо огромное, пойду читать инструкции к шуруповерту)Просьба, в течении месяца, если опять появлюсь с какой то проблемой - ИГнорируйте! 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти