0ll Опубликовано 20 августа, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 августа, 2018 Пробуйте. Только что-то не верится насчёт перерисовки... - на каждом тике вызывает сам-себя раз 300. Будет рисовать и вешать терем. TMA_Fair.mq4TMA_Fair.ex4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
pavlus777 Опубликовано 24 августа, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 24 августа, 2018 Новый урок:http://tradelikeapro.ru/mql4-vremya-na-poisk-oshibok/ 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
vitek01 Опубликовано 28 августа, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 августа, 2018 Как зделать приоритет на нажатие кнопки? Если на заднем плане есть обьект, то он обязательно вылезет при нажатий на кнопку?сам код string S_button_2="Trade"; void F_Button_2() { ObjectCreate ("S_Buttom_2", OBJ_BUTTON, 0, 0, 0); ObjectSetText("S_Buttom_2", S_button_2, 12, "LimeGreen11", clrBlack); //ObjectSetInteger (0,"S_Buttom_2", OBJPROP_ZORDER, 10); //ObjectSet ("S_Buttom_2", OBJPROP_BORDER_COLOR, clrBlack); ObjectSet ("S_Buttom_2", OBJPROP_FONTSIZE, 12); ObjectSet ("S_Buttom_2", OBJPROP_BGCOLOR, clrGold); ObjectSet ("S_Buttom_2", OBJPROP_COLOR, clrBlack); ObjectSet ("S_Buttom_2", OBJPROP_CORNER, 2); ObjectSet ("S_Buttom_2", OBJPROP_STATE, state_2); ObjectSet ("S_Buttom_2", OBJPROP_BACK, false); ObjectSet ("S_Buttom_2" ,OBJPROP_XSIZE, 50); ObjectSet ("S_Buttom_2", OBJPROP_YSIZE, 20); ObjectSet ("S_Buttom_2", OBJPROP_XDISTANCE, 365); ObjectSet ("S_Buttom_2", OBJPROP_YDISTANCE, 22); //if(ObjectFind(0,"S_Buttom")==false)Print("Ошибка создание S_Buttom, код ошибки = ",GetLastError()); } Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 28 августа, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 августа, 2018 Как зделать приоритет на нажатие кнопки? ObjectSetInteger свойство OBJPROP_ZORDER:Приоритет графического объекта на получение события нажатия мышки на графике (CHARTEVENT_CLICK). По умолчанию при создании значение выставляется равным нулю, но при необходимости можно повысить приоритет. При наложении объектов друг на друга событие CHARTEVENT_CLICK получит только один объект, чей приоритет выше остальных. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 28 августа, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 августа, 2018 Всем привет, у меня вопрос к программистам, написал советник, сам не профи а только изучаю. Советник торгует по машке, ради интереса вставил в него условие на противоположный ордер если будет просадка. Вроде все работает, проверял каждую строчку, а теперь наткнулся на то чего вообще не могу понять. Как бы нет никакой ошибки при компиляции но задуманное почему-то не работает. А работать должно так: противоположный ордер набирает профит и выключается при условии, на сумму заработанного профита отключаются первые ордера которые в просадке, ну и т.д. Но вот именно этот момент не работает, вычислил откуда идет как бы конфликт: если отключить функцию IfOrderYetOpen, то начинает все работать, но при этом открываются несколько противоположных ордеров что не желательно, и ещё возможен какой-то логический конфликт этой функции с функцией ClosePosBySizeProfit.Помогите пож-та разобраться) test_ma.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
vitek01 Опубликовано 29 августа, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 августа, 2018 Смысл не понятен, если заменить на другое слово, так должно быть? Всем привет, у меня вопрос к программистам, написал советник, сам не профи а только изучаю. Советник торгует по машке, ради интереса вставил в него условие на противоположный ордер если будет просадка. Вроде все работает, проверял каждую строчку, а теперь наткнулся на то чего вообще не могу понять. Как бы нет никакой ошибки при компиляции но задуманное почему-то не работает. А работать должно так: противоположный ордер набирает профит и ЗАКРЫВАЕТСЯ при условии, на сумму заработанного профита ЗАКРЫВАЮТСЯ первые ордера которые в просадке, ну и т.д. Но вот именно этот момент не работает, вычислил откуда идет как бы конфликт: если отключить функцию IfOrderYetOpen, то начинает все работать, но при этом открываются несколько противоположных ордеров что не желательно, и ещё возможен какой-то логический конфликт этой функции с функцией ClosePosBySizeProfit. Уважаемые комрады, вот строчка ведь неправильная же у товарища for(int i=OrdersTotal()-1; i>=0; i--), он последний ордер не учитывает, помоему нужно без -1 ? Изменено 29 августа, 2018 пользователем vitek01 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DreamWorks Опубликовано 29 августа, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 августа, 2018 Уважаемые комрады, вот строчка ведь неправильная же у товарища for(int i=OrdersTotal()-1; i>=0; i--), он последний ордер не учитывает, помоему нужно без -1 ? Да нет, все правильно. Выбор ордеров по позиции (SELECT_BY_POS) в списке всех открытых ордеров начинается с нуля. Таким образом, если OrdersTotal() вернул десять, то нумерация ордеров в списке будет идти от нуля до 9. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 21 сентября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 сентября, 2018 Мой вопрос вообще неразрешимый? =)) Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 21 сентября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 21 сентября, 2018 Мой вопрос вообще неразрешимый?теоретически разрешимый, но практически интереса у публики не вызвал. Для начинающих - очень сложно, а для профи - скучно, ибо тупик там. Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 22 сентября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 сентября, 2018 Мой вопрос вообще неразрешимый?теоретически разрешимый, но практически интереса у публики не вызвал. Для начинающих - очень сложно, а для профи - скучно, ибо тупик там. А я не собирался вводить в тупик, мой вопрос был технического характера, в процессе обучения пробовал менять условия и все получалось до этого момента, поэтому и попросил помощи. Это просто программный код в котором где-то что-то сломалось. Возможно он не принесет никакой выгоды, но мы же тут учимся и хотим все подняться на следующую ступеньку, так вот поэтому и хотелось бы знать где я споткнулся. Кто-то если поможет исправить ошибку, то я буду знать как это сделать и возможно этот советник уйдет в архив, а я получу опыт. Иначе зачем мы все здесь?! Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 22 сентября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 сентября, 2018 Кто-то если поможет исправить ошибку, то я буду знать как это сделать и возможно этот советник уйдет в архив, а я получу опыт. Иначе зачем мы все здесь?!Здесь никто никому не должен, ибо помощь не оплачивается, люди работают за интерес. Я гляну Вашу сову позже, может подскажу, сейчас времени нет. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Broxiv Опубликовано 27 сентября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 сентября, 2018 Подскажите, пожалуйста, что в этой строке не так?datetime VL = ObjectGet("name",OBJPROP_TIME);Хочу присвоить переменной координату времени расположения объекта.Спасибо! Ссылка на сообщение Поделиться на другие сайты More sharing options...
djnet Опубликовано 27 сентября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 сентября, 2018 Подскажите, пожалуйста, что в этой строке не так?datetime VL = ObjectGet("name",OBJPROP_TIME);Хочу присвоить переменной координату времени расположения объекта.Спасибо! "ObjectGetВозвращает значение указанного свойства объекта.double ObjectGet( "прям в справке написано.Приведите значение к datetime. Изменено 27 сентября, 2018 пользователем djnet Ссылка на сообщение Поделиться на другие сайты More sharing options...
machine Опубликовано 27 сентября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 сентября, 2018 Подскажите, пожалуйста, что в этой строке не так?ObjectGetInteger(0,name,OBJPROP_TIME); 3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Richie Rich Опубликовано 28 сентября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 сентября, 2018 Здравствуйте, коллеги. Подскажите, как в советнике сделать отображение в коментарии макс. просадку, на которую проседал счёт, пока был запущен этот советник? fcplm Спойлер Просадка (Эквити минус балланс) отображается в комментарии.Если просадка ещё опустилась - новое значение заменяет старое, и будет отображаться, пока не опуститься ещё ниже. и т.д. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 29 сентября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 сентября, 2018 Подскажите, как в советнике сделать отображение в коментарии макс. просадку, на которую проседал счёт, пока был запущен этот советник? в функции OnTick() :static double MaxDD = 0;if ( MaxDD это всё. 3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
AlfaSlivatel Опубликовано 14 октября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 октября, 2018 Извините. >D-b Ссылка на сообщение Поделиться на другие сайты More sharing options...
machine Опубликовано 14 октября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 октября, 2018 В данном случае - нет разницы. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 15 октября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 октября, 2018 вместо a=b; такую запись: a=(b);. или вместо a=OrderLots(); a=(OrderLots());. В чём разница?Единственное место, где нужно побольше скобочек это #define, подробнее в справке. Но в Вашем примере - разницы нет. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Partorius Опубликовано 18 октября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 18 октября, 2018 Подскажите, как в коде прописать так, чтобы ордера открывались только при открытии бара, а в безубыток ордера можно было бы перевести в любое время? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 18 октября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 18 октября, 2018 Подскажите, как в коде прописать так, чтобы ордера открывались только при открытии бара, а в безубыток ордера можно было бы перевести в любое время?Например так:OnTick(){ if ( OrderProfit() >= 0 ) SL2BU(); // переводим в БУ if ( isNewBar() ) checkSignal(); // проверяем условия открытия}Ордер должен быть активен, функцию isNewBar() можно найти и здесь в теме и в инете. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ar4i Опубликовано 19 октября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 октября, 2018 всем привет! друзья помогите с решением как облегчить тяжелый советник. заранее о оговорюсь что он использует расчеты нескольких индикаторов. есть варианты того что бы могло помочь: 1. совместить все индикаторы в один? 2. переместить все расчеты в сову? но, хотя как я слышал от этого только хуже. 3.я использую 5-ти знак. может заставить расчеты считать по 4-му знаку? пс. сам терминал облегчен. это, спасибо если что не интересует. Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 19 октября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 октября, 2018 Универсальное решение- считывать показания индикаторов 1 раз в свечу.Все остальное перечисленное , ИМХО, не поможет .(помещать код индикатора в свечу говорят поможет, но на сколько...) 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 19 октября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 октября, 2018 2. переместить все расчеты в сову? но, хотя как я слышал от этого только хуже.Зависит от того что и как переносить - возьмём машку: в советнике Вы используете 2 значения на 2 и на 1 баре, а в индикаторе хранятся 1000 значений машки - есть смысл перенести расчёт в сову. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 19 октября, 2018 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 октября, 2018 в советнике Вы используете 2 значения на 2 и на 1 баре, а в индикаторе хранятся 1000 значений машки - есть смысл перенести расчёт в сову. 0ll, хранение в индикаторе 1000 значений разве влияет на производительность? Память- да, отъедает... Но расчет первой тысячи, как правило, в OnInit происходит... Или нет? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти