0ll Опубликовано 16 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 ноября, 2018 Я правильно поняла, что проще использовать индикатор и советник параллельно, чем объединять их в одном коде?Я смотрю мнения разделились... Постараюсь высказать мнение, которое всех удовлетворит: проще объединить, если Вы программист и не нужна визуализация значений на истории, но бывают сложные индикаторы, которые проще подключить к советнику.В общем, если без конкретики, то так - общий трёп. ;)Подскажите пожалуйста ,в чём ошибка и как исправить!Пишет пустая переменная - проверьте все-ли переменные объявлены с нужным типом и присвоение значений проверьте. 3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
djnet Опубликовано 16 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 ноября, 2018 но это работает достаточно медленно, поэтому если есть возможность лучше перенести код индикатора в сову. если в коде советника считывать индикатор один раз в свечу, то тормоза вряд ли добавятся(если логика индикатора подразумевает расчет по свечам, а не по тикам). в реальной торговле согласен, я говорил про тестирование. Ссылка на сообщение Поделиться на другие сайты More sharing options...
molot_1 Опубликовано 20 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 ноября, 2018 Здравствуйте! Подскажите пожалуйста ,в чём ошибка и как исправить! Спасибо! Это не ошибка, скорее предупреждение. Он-лайн переводчик: empty controlled statement found / найден пустой управляемый оператор! строка 63. Я тоже учусь, и учусь помогать, Если работает с предупреждением то хорошо если как у меня нет, то лучше целиком выкладывать код. Возможно ";" лишнее строка 63. да простят меня гуру. Спасибо!Оказались лишними ";" !Добавлено: 20-11-2018 09:11:14Доброго всем дня !Подскажите пожалуйста нет ли урока о переводе в безубыток? Изменено 20 ноября, 2018 пользователем molot_1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
grabli Опубликовано 20 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 ноября, 2018 Добрый день. Прошу помочь, кому не сложно.Есть индикатор itddots_.mq4 (во вложении), который рисует TD-точки.Вызываю из совы строками:double levelbuy = iCustom(NULL,OpenBarTimeFrame,"extremum\itddots_",dotLevel,OpenBarTimeFrame,0,1);double levelsell = iCustom(NULL,OpenBarTimeFrame,"extremum\itddots_",dotLevel,OpenBarTimeFrame,1,1);Однако приходят нулевые значения. Как правильно получить цены по которым построены точки? itddots_.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 20 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 ноября, 2018 Как правильно получить цены по которым построены точки?В справке по функции iCustom написано: ""Examples\\имя_индикатора" (обязательно указание двойного обратного слеша вместо одиночного в качестве разделителя)." 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
grabli Опубликовано 21 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 ноября, 2018 Я пробовал. Не влияет на результат, не работает в обоих случаях. Пробовал поменять индикатор на другой - значения приходят нормально, но мне непонятно, что не так с этим индикатором. Ссылка на сообщение Поделиться на другие сайты More sharing options...
machine Опубликовано 21 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 ноября, 2018 Индикатор так написан, что последние 6 (т.е., Level+1) баров пустые будут. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
molot_1 Опубликовано 22 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 ноября, 2018 Всем Доброго дня! Изучал урок " Изучаем MQL : Трейлинг-стоп". При написании кода, Трейлинг-стоп " плавает" вместе с ценой на тестере. Подскажите, что исправить в коде, чтобы при развороте цены Трейлинг-стоп не возвращался назад к открытому ордеру! Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 22 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 ноября, 2018 Приветствую! Прошу помощи с Уровнями Фибоначчи. Нарисовать то нарисовал при помощи ObjectCreate. А вот как узнать что цена дошла или если правильно выразиться как узнать какой уровень на какой цене? Всем Доброго дня! Изучал урок " Изучаем MQL : Трейлинг-стоп". При написании кода, Трейлинг-стоп " плавает" вместе с ценой на тестере. Подскажите, что исправить в коде, чтобы при развороте цены Трейлинг-стоп не возвращался назад к открытому ордеру! Код советника прикрепи! Изменено 22 ноября, 2018 пользователем MikR0ReR Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 22 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 ноября, 2018 А вот как узнать что цена дошла или если правильно выразиться как узнать какой уровень на какой цене?Только в рукопашную уровни рассчитывать, тот объект только для красоты... 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Roman 13 Опубликовано 23 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 ноября, 2018 Здравствуйте помогите написать код, что бы трейлинг стоп двигался за ценой по средней, спасибо. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 23 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 ноября, 2018 код, что бы трейлинг стоп двигался за ценой по среднейВыбирайте на вкус - внутри библиотеки много разных функций трала, можете подключить к своей сове или скопировать только расчёт цены трала. Ссылка на сообщение Поделиться на другие сайты More sharing options...
vitek01 Опубликовано 27 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 ноября, 2018 Комрады, как собирать показания сигналов советников стоящих на разных графиках/таймфреймах в один, устаешь переключать таймфреймы и перебирать графики? Изменено 27 ноября, 2018 пользователем vitek01 Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 27 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 ноября, 2018 как собирать показания сигналов советников стоящих на разных графиках/таймфреймах в один Как вариант, через глобальные переменные терминала. Если советники с открытым кодом и в него можно внести соответствующие правки. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
vitek01 Опубликовано 27 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 ноября, 2018 как собирать показания сигналов советников стоящих на разных графиках/таймфреймах в один Как вариант, через глобальные переменные терминала. Если советники с открытым кодом и в него можно внести соответствующие правки. А можно пример небольшой, сейчас копаюсь в инете, про GlobalVariable практически ничего толкового нет,покажите как в 1 советнике обьявлять глобальную переменную, а в 2 советнике видеть эту переменную. а дальше я сам! Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rever27 Опубликовано 27 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 ноября, 2018 А можно пример небольшой В советнике, после получения сигнала на вход задаешь какую либо глобальную:bool signal = true;GlobalVariableSet("MyValue",signal); Т.е. сигнал есть, он true (можно и значение double передать). Эти данные можно посмотреть через клавишу F3. Когда сигнала нет, выставляешь false.Во индикаторе, или советнике, который считывает данные проверяешь наличие именно этой заданной глобальной, и если она есть, то считываешь значение, не забываешь потом обнулять, чтобы сигнал постоянно не шел.bool mySignal = false;if(GlobalVariableCheck("MyValue")) mySignal = GlobalVariableGet("MyValue"); В OnDeinit не забывай потом чистить терминал от них:GlobalVariableDel("MyValue") Если много советников, то можно задать общее имя глобальной "MyValue" плюс для каждого графика добавлять ТФ+Имя пары, т.е. к примеру "MyValue EURUSD M15". Тогда в общем управляемом коде делать поиск глобальной обычный перебором for всех глобальных GlobalVariablesTotal() по имени "MyValue", но тогда и в OnDeinit удалять их тоже перебором. 3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
vitek01 Опубликовано 27 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 ноября, 2018 Спойлер А можно пример небольшой В советнике, после получения сигнала на вход задаешь какую либо глобальную:bool signal = true;GlobalVariableSet("MyValue",signal); Т.е. сигнал есть, он true (можно и значение double передать). Эти данные можно посмотреть через клавишу F3. Когда сигнала нет, выставляешь false.Во индикаторе, или советнике, который считывает данные проверяешь наличие именно этой заданной глобальной, и если она есть, то считываешь значение, не забываешь потом обнулять, чтобы сигнал постоянно не шел.bool mySignal = false;if(GlobalVariableCheck("MyValue")) mySignal = GlobalVariableGet("MyValue"); В OnDeinit не забывай потом чистить терминал от них:GlobalVariableDel("MyValue") Если много советников, то можно задать общее имя глобальной "MyValue" плюс для каждого графика добавлять ТФ+Имя пары, т.е. к примеру "MyValue EURUSD M15". Тогда в общем управляемом коде делать поиск глобальной обычный перебором for всех глобальных GlobalVariablesTotal() по имени "MyValue", но тогда и в OnDeinit удалять их тоже перебором. Rever27 Даже не знаю как вам выразить благодарность, большое спасибо!-----------------------------------------------------------------------------------------------А как с одного терминала на другой перекидывать данные переменных? Изменено 27 ноября, 2018 пользователем vitek01 Ссылка на сообщение Поделиться на другие сайты More sharing options...
mmaxx Опубликовано 28 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 ноября, 2018 Здравствуйте.Если ордеров несколько, то одновременная модификация или закрытие нескольких ордеров происходит долго (несколько секунд).Возможно ли сделать так, чтобы приказ на модификацию или закрытие следующего ордера подавался не дожидаясь ответа на предыдущий приказ? Чтобы все ордера закрывались или модифицировались одномоментно. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rever27 Опубликовано 28 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 ноября, 2018 Возможно ли сделать так, чтобы приказ на модификацию или закрытие следующего ордера подавался не дожидаясь ответа на предыдущий приказ? Невозможно, все закрытие идет последовательно, циклом перебора ордеров. Если закрывается сетка, то нужно вначале закрывать ордера с бОльшим лотом.Несколько секунд задержка не из-за обработки терминалом кода, а из-за пинга и ожидания ответа брокера. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
mmaxx Опубликовано 28 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 ноября, 2018 Возможно ли сделать так, чтобы приказ на модификацию или закрытие следующего ордера подавался не дожидаясь ответа на предыдущий приказ? Невозможно, все закрытие идет последовательно, циклом перебора ордеров. Если закрывается сетка, то нужно вначале закрывать ордера с бОльшим лотом.Несколько секунд задержка не из-за обработки терминалом кода, а из-за пинга и ожидания ответа брокера. Мне пришла такая мысль:Допустим у меня возможны 10 ордеров. Я открываю 10 графиков и ставлю на них программу для модификации и закрытия ордеров. каждая из программ имеет свой магик. При открытии ордеров каждому присваивается отдельный магик. Когда появляется сигнал на модификацию или закрытие, он через глобальную переменную раздается всем десяти программам и каждая программа управляет только одним ордером.Так будет одномоментное исполнение приказов?(торгую руками и управляю ордерами с кнопок нарисованных на графике) Изменено 28 ноября, 2018 пользователем mmaxx Ссылка на сообщение Поделиться на другие сайты More sharing options...
Skytype Опубликовано 28 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 ноября, 2018 Здравствуйте.Если выделить несколько строк и нажать TAB, то строки вместе смещаются вправо, а как сделать что бы они смещались влево? Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 28 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 ноября, 2018 Так будет одномоментное исполнение приказов? Когда прочитал твой пост, у меня возникла такая мысль. Но это танцы с бубнами. Таким образом ты добьешься одновременной отсылки приказов о закрытии ордеров на сервер брокера. Сократишь время, но насколько, трудно сказать . Учитывай тот факт, что брокер сводит твои ордера и противоположного покупателя и пока это не произойдет, твои ордера не закроются. Например, ты хочешь закрыть ордер 1 лотом. Брокер ищет кто хочет купить этот лот. Это может быть как один покупатель, так и несколько, 0.5 лота 0.3 лота и 0.2 лота. Вот это основная задержка помимо пинга от компа до брокера и от брокера до компа. Твоя идея решит только малую часть задержки, первую, пинг от компа до брокера и все. Сам думай, стоит ли овчинка выделки и танцами.СТОП! Перечитал твои посты еще раз! Так ты модификацию и закрытие производишь кодом(советники, скрипты) или все же руками?как сделать что бы они смещались влево? Shift + TabВ справке к MT4 есть!!! :-W Изменено 28 ноября, 2018 пользователем MikR0ReR Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 28 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 ноября, 2018 mmaxx в МТ4 одновременно закрыть ордера не получится - терем всё равно будет ждать ответа сервера и не отдаст исполнение другому графику. Вам в МТ5 нужно - там совокупная позиция закрывается в разы быстрее. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 28 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 ноября, 2018 Всем привет, вопрос такой к знающим, написал функцию которая должна закрывать ордера в просадке при условии если один ордер в хорошем профите. Вроде как должна работать но почему-то не хочет, ошибок вроде нет. Прошу посмотреть. Спойлер void ClosePosBySizeProfit() { double profluser=0; double prlock=0; for(int y=OrdersTotal()-1; y>=0; y--) //перебор ордеров { if(OrderSelect(y,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && (OrderMagicNumber()==magic_b || OrderMagicNumber()==magic_s)) //находим наш единственный ордер с уникальным магиком { prlock=OrderProfit();// и если он есть то определяем его профит в переменную } } } for(int h = 0; h { if(OrderSelect(h,SELECT_BY_POS,MODE_TRADES)) { if(OrderMagicNumber()==Magic && OrderSymbol()==Symbol()) { if(OrderType()==OP_BUY || OrderType()==OP_SELL) //определяем их тип { profluser += OrderProfit()+OrderSwap()+OrderCommission(); //сумируем их профит с учетом комиссии и свопа if(MathAbs(profluser) { if(OrderType() == OP_BUY) bool close_profit_buy = OrderClose(OrderTicket(), OrderLots(), Bid, Slippage); if(OrderType() == OP_SELL) bool close_profit_sell = OrderClose(OrderTicket(), OrderLots(), Ask, Slippage); } } } } } } Ссылка на сообщение Поделиться на другие сайты More sharing options...
mmaxx Опубликовано 29 ноября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 ноября, 2018 0ll,Rever27, подскажите , пожалуйста, еще один момент по скорости закрытия нескольких ордеров.Если я при закрытии каждого из ордеров записываю в эксель-файл информацию по нему, это увеличивает время закрытия сетки?Меня в первую очередь интересует спред в момент закрытия ордера. Может существует возможность получать эту информацию из истории? Изменено 29 ноября, 2018 пользователем mmaxx Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти