Rever27 Опубликовано 12 октября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 12 октября, 2020 13 часов назад, ademen сказал: Метаквоты делаю разную степень защиты декомпила для маркета и терминала? Я сужу со слов Никсера, который не однократно говорил, что код с маркета нельзя вылечить и выложить в открытый доступ. Ссылка на сообщение Поделиться на другие сайты More sharing options...
nixxer Опубликовано 12 октября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 12 октября, 2020 Разъясню простую истину. Если код запускается локально то это лишь вопрос времени, когда его вскроют, если он конечно кому-то нужен. Если ваш код, это советник на двух индикаторах - такое никто смотреть не будет в попытках завладеть ноу-хау. А если это будет прямо что-то неприлично интересное то тогда, с должным финансированием можно восстановить в исходный код вообще в принципе всё что угодно, хоть маркет, хоть мт5 файлы в связке с DLL. Вопрос будет лишь в деньгах которые потребуются для сего дела. 4 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
molot_1 Опубликовано 14 октября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 октября, 2020 Здравствуйте! Мне нужен советник или рабочая функция открытия отложенных ордеров . Я учусь и хочу к этой функции попробовать прикрутить трал. Спасибо. Изменено 16 октября, 2020 пользователем molot_1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Pavel888 Опубликовано 16 октября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 октября, 2020 MQL4: Использование структур для повышения эффективности разработки программ 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Николайец Опубликовано 18 октября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 18 октября, 2020 Всем привет. Функция поиска фрактала в индикаторе пропускает некоторые фракталы, которые находит при использовании в советнике. Не могу понять почему... Вот так она используется в индикаторе: //+--------------------------------------------------------------------+ double FrUP() // возвращает значение фрактала из BarsForFractal баров { double UpFr=0,Fr=0; int indxUpFr; indxUpFr = iHighest (Symbol(),0,MODE_HIGH,BarsForFractal,i); if (indxUpFr==i+(BarsForFractal+1)/2) UpFr = iHigh (Symbol(),0,i+(BarsForFractal+1)/2); else UpFr=0; if (UpFr!=0) Fr=UpFr; return (Fr); } Вот так в советнике: double FrUP() { double UpFr=0,Fr=0; int indxUpFr; indxUpFr = iHighest (Symbol(),0,MODE_HIGH,BarsForFractal,1); if (indxUpFr==(BarsForFractal+1)/2) UpFr = iHigh (Symbol(),0,(BarsForFractal+1)/2); else UpFr=0; if (UpFr!=0) Fr=UpFr; return (Fr); } //BarsForFractal отвечает за количество баров во фрактале Можно ли что либо предположить навскидку? Подобным образом ведёт себя другая индикаторная функция на основе среднего. Может тут какой-то общий момент есть? Изменено 18 октября, 2020 пользователем Николайец доп Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 23 октября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 октября, 2020 Всем привет, хотел написать скрипт на выставление тейкпрофита, но что-то не сработало, кто может глянуть, помогите, пока не пойму. void OnStart() { int ticket, TakeProfit = 500; double TP, value = NormalizeDouble(WindowPriceOnDropped(),Digits); for(int i=OrdersTotal()-1;i>=0;i--) { if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue; if(OrderSymbol()!=Symbol()) continue; ticket = OrderTicket(); if(OrderType()==OP_BUY) if(value>Ask) { TP=NormalizeDouble(Ask+TakeProfit*Point,Digits); bool res=OrderModify(ticket,OrderOpenPrice(),0,TP,0); } if(OrderType()==OP_SELL) if(value<Bid) { TP=NormalizeDouble(Bid-TakeProfit*Point,Digits); bool ressel=OrderModify(ticket,OrderOpenPrice(),0,TP,0); } } } Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 23 октября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 октября, 2020 Напиши Принты внутри цикла- может у тебя не выполняется условие if(value<Bid) Ссылка на сообщение Поделиться на другие сайты More sharing options...
viktor004 Опубликовано 27 октября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 октября, 2020 Подскажите, как проверить откат между двум точками. На вход подпрограмма получает только 2 величины а ответ 1(если есть откат) либо 0. Чуть позже выложу свой вариант кода. Ссылка на сообщение Поделиться на другие сайты More sharing options...
sergey.mihaylovich Опубликовано 31 октября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 31 октября, 2020 Добрый день уважаемые программисты! Подскажите, пожалуйста, есть ли возможность готовый индикатор для терминала MetaTrader4 внедрить в терминал TradingView? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rever27 Опубликовано 1 ноября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 ноября, 2020 В 31.10.2020 в 15:24, sergey.mihaylovich сказал: Подскажите, пожалуйста, есть ли возможность готовый индикатор для терминала MetaTrader4 внедрить в терминал TradingView? Нужно знать язык программирования Pine и иметь открытый код индикатора в формате mq4. Ну либо найти такого программиста, который знает эти оба языка. Создайте платное задание на сайте MQL5 во вкладке фриланс. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
makssub Опубликовано 5 ноября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 5 ноября, 2020 Добрый день. Подскажите как найти в сетке открытых ордеров ордер с большим убытком. Ордера открываются одновременно sell и buy и разными размера лота. MQL4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 6 ноября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 ноября, 2020 22 часа назад, makssub сказал: Добрый день. Подскажите как найти в сетке открытых ордеров ордер с большим убытком. Ордера открываются одновременно sell и buy и разными размера лота. MQL4 int OrderMinProfit(int oType = -1)// -1 - проверяем все типы ордеров, иначе передаем тип ордера для поиска с мин. профитом { double oMinProfit = 9999999.0; int oTicketTmp = 0; for(int i = 0;i < OrdersTotal();i++) { if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; if(OrderSymbol()!=_Symbol || OrderMagicNumber() != iMagic) continue; if(oType >-1 && OrderType() !=oType) continue; if(OrderProfit()< oMinProfit) { oMinProfit = OrderProfit(); oTicketTmp = OrderTicket(); } } return(oTicketTmp); } была ошибка - два return. Поправил Изменено 6 ноября, 2020 пользователем usver73 3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 6 ноября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 ноября, 2020 9 часов назад, usver73 сказал: int OrderMinProfit(int oType = -1)// -1 - проверяем все типы ордеров, иначе передаем тип ордера для поиска с мин. профитом { double oMinProfit = 9999999.0; int oTicketTmp = 0; for(int i = 0;i < OrdersTotal();i++) { if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue; if(OrderSymbol()!=_Symbol || OrderMagicNumber() != iMagic) continue; if(oType >-1 && OrderType() !=oType) continue; if(OrderProfit()< oMinProfit) { oMinProfit = OrderProfit(); oTicketTmp = OrderTicket(); } } return(oTicketTmp); } была ошибка - два return. Поправил Ну только oTicketTmp нужно инициализировать отрицательным числом. Ноль - это возможный номер тикета, согласно контракту https://docs.mql4.com/trading/ordersend Ссылка на сообщение Поделиться на другие сайты More sharing options...
ademen Опубликовано 7 ноября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 ноября, 2020 @Rigal как вы делаете погрузку истории? В частности в этом советнике https://tlap.com/forum/laboratoriya-profitfx/24/sovetnik-multivaljutnik-korzhik/21628/ Буду благодарен за участок кода в качестве примера. Столкнулся с проблемой когда терминал врет о запрашиваемых данных. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 7 ноября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 ноября, 2020 1 час назад, ademen сказал: @Rigal как вы делаете погрузку истории? В частности в этом советнике https://tlap.com/forum/laboratoriya-profitfx/24/sovetnik-multivaljutnik-korzhik/21628/ Буду благодарен за участок кода в качестве примера. Столкнулся с проблемой когда терминал врет о запрашиваемых данных. В аттаче библиотечка - я выкусил из нее все зависимости на остальные мои библиотеки. HistoryLoader.mqh Используется так: #include <HistoryLoader.mqh> HistoryLoader* loader; int OnInit() { loader = new HistoryLoader(Symbol()); } void OnDeinit(const int reason) { if(CheckPointer(loader) == POINTER_DYNAMIC) delete (loader); } void OnTick() { //whatever code you have here loader.CheckReload(); } В библиотеке прописан интервал проверки - загрузка будет выполняться только раз в этот интервал. Изменено 7 ноября, 2020 пользователем Rigal 1 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
sergey.mihaylovich Опубликовано 15 ноября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 ноября, 2020 Добрый день уважаемые знатоки! Подскажите, пожалуйста. Возможно ли уже готовую торговую систему под MT4 переделать под платформу TradingView? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 15 ноября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 ноября, 2020 6 минут назад, sergey.mihaylovich сказал: Добрый день уважаемые знатоки! Подскажите, пожалуйста. Возможно ли уже готовую торговую систему под MT4 переделать под платформу TradingView? Да. вам нужен исходник в мт4, человек, который знает оба языка и немного времени. Насколько я знаю, автоматических решений нет 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
MikR0ReR Опубликовано 15 ноября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 ноября, 2020 2 минуты назад, sergey.mihaylovich сказал: Добрый день уважаемые знатоки! Подскажите, пожалуйста. Возможно ли уже готовую торговую систему под MT4 переделать под платформу TradingView? Ну конечно можно. Нужен открытый исходный код системы (расширение файла *.mq4) или как минимум подробную логику работы системы. Человек знающий языки программирования MQL (от MetaTrader) и Pine (от TradingView). 1 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Logic Опубликовано 22 ноября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 ноября, 2020 Добрый день. По мотивам урока "Использование структур для повышения эффективности разработки программ" воодушевился применением функции внутри структуры и создал вот такую простейшую конструкцию в МТ5. #property copyright "Copyright 2020, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ #include <Trade\PositionInfo.mqh> #include <Trade\OrderInfo.mqh> #include <Trade\Trade.mqh> #include <Trade\SymbolInfo.mqh> #include <Trade\AccountInfo.mqh> #include <Trade\DealInfo.mqh> #include <Expert\Money\MoneyFixedMargin.mqh> CPositionInfo m_position;// object of CPositionInfo class COrderInfo m_order; // object of COrderInfo class CTrade m_trade; // object of CTrade class CSymbolInfo m_symbol; // object of CSymbolInfo class CAccountInfo m_account; // object of CAccountInfo class CDealInfo m_deal; // object of CDealInfo class CMoneyFixedMargin *m_money; // object of CMoneyFixedMargin class //+------------------------------------------------------------------+ //| Structure Positions | //+------------------------------------------------------------------+ struct STRUCT_POSITION { ENUM_POSITION_TYPE type; // тип позиции ulong ticket; // тикет позиции long identifier; // идентификатор long magic; // магический номер double volume; // объем позиции double open_price; // цена открытия datetime open_time; // время открытия double profit; // профит позиции double comission; // комиссия double swap; // своп string comment; // комментарий void GetCurrentPositionProperty(); }; STRUCT_POSITION StrPositionArray[]; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- STRUCT_POSITION.GetCurrentPositionProperty(); } //+------------------------------------------------------------------+ //---Заполнение массива свойств позиций + //+------------------------------------------------------------------+ void STRUCT_POSITION::GetCurrentPositionProperty(void) { ZeroMemory(this); int pos_total = PositionsTotal(); ArrayResize(StrPositionArray,pos_total,1000); for(int i=0; i<pos_total; i++) { if(m_position.SelectByIndex(i)) { StrPositionArray[i].ticket = m_position.Ticket(); // тикет позиции StrPositionArray[i].identifier = m_position.Identifier(); // идентификатор StrPositionArray[i].magic = m_position.Magic(); // магический номер StrPositionArray[i].comment = m_position.Comment(); // комментарий StrPositionArray[i].type =(ENUM_POSITION_TYPE)m_position.PositionType();// тип позиции StrPositionArray[i].volume = m_position.Volume(); // объем позиции StrPositionArray[i].open_price = m_position.PriceOpen(); // цена открытия StrPositionArray[i].open_time = m_position.Time(); // время открытия StrPositionArray[i].profit = m_position.Profit(); // профит позиции StrPositionArray[i].comission = m_position.Commission(); // комиссия StrPositionArray[i].swap = m_position.Swap(); // своп } } } //+------------------------------------------------------------------+ Компилятор выдает ошибку " '.' - name expected " Подскажите плиз, что я сделал неправильно и как с этим бороться ??? Изменено 22 ноября, 2020 пользователем Logic так лучше подсвечен код Ссылка на сообщение Поделиться на другие сайты More sharing options...
Logic Опубликовано 22 ноября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 ноября, 2020 В структуре STRUCT_POSITION присутствует метод GetCurrentPositionProperty(void) который рассчитывает и присваивает значения элементам структуры. Определяем тело метода вне структуры. Для этого используем операцию разрешения контекста (::). В OnTick() вызываем фунцию: void OnTick() { //--- STRUCT_POSITION.GetCurrentPositionProperty(); } И получаем ошибку: '.' - name expected eSower_and_Gather_5.mq5 69 19 Где накосячено не понимаю, помогите плиз. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Just Trader Опубликовано 27 ноября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 ноября, 2020 Подскажите где можно найти советников с исходниками? Я недавно начал изучать язык, хотел бы посмотреть на примерах. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rigal Опубликовано 27 ноября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 ноября, 2020 3 часа назад, Just Trader сказал: Подскажите где можно найти советников с исходниками? Я недавно начал изучать язык, хотел бы посмотреть на примерах. Советники https://trueforex.pp.ua/ 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Александр 1939 Опубликовано 29 ноября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 ноября, 2020 где найти индикатор TMA_Fair Ссылка на сообщение Поделиться на другие сайты More sharing options...
Pavel888 Опубликовано 29 ноября, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 ноября, 2020 1 час назад, Александр 1939 сказал: где найти индикатор TMA_Fair https://tlap.com/forum/klassicheskie-indikatory/35/tma-nabor-triangular-moving-average/13013/ https://tlap.com/forum/indikatory/7/indikator-trenda-tma_fair-tma-bez-pererisovki/6599/ Ссылка на сообщение Поделиться на другие сайты More sharing options...
lova Опубликовано 5 декабря, 2020 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 5 декабря, 2020 Есть ли способ работать с файлами не из "песочницы"? Пробовал делать как описано здесь: https://www.mql5.com/ru/articles/1540 . Набросал скрипт: #property copyright "" #property link "" #property version "1.00" #property strict #include <WinUser32.mqh> #import "kernel32.dll" int _lopen (string path, int of); int _lcreat (string path, int attrib); int _llseek (int handle, int offset, int origin); int _lread (int handle, int& buffer[], int bytes); int _lwrite (int handle, string buffer, int bytes); int _lclose (int handle); #import #define OF_READ 0 #define OF_WRITE 1 #define OF_READWRITE 2 #define OF_SHARE_COMPAT 3 #define OF_SHARE_DENY_NONE 4 #define OF_SHARE_DENY_READ 5 #define OF_SHARE_DENY_WRITE 6 #define OF_SHARE_EXCLUSIVE 7 //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { string terminal_data_path = TerminalInfoString(TERMINAL_DATA_PATH); string filename = terminal_data_path+"\\templates\\" + "1.tpl"; // string filename = "1.tpl"; int filehandle = _lopen(filename, OF_READ); if (filehandle > 0) { Print("Файл " + filename + " открыт"); _lclose(filehandle); } else Print("Ошибка открытия файла " + filename + ". Handle = " + IntegerToString(filehandle)); } Получаю ошибку открытия файла, filehandle = -1. Терминал build 1310. Windows 10, 64 bit. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти