13 часов назад, ademen сказал:Метаквоты делаю разную степень защиты декомпила для маркета и терминала?
Я сужу со слов Никсера, который не однократно говорил, что код с маркета нельзя вылечить и выложить в открытый доступ.
От xbms, 13 апреля, 2013 в Уголок Программиста
13 часов назад, ademen сказал:Метаквоты делаю разную степень защиты декомпила для маркета и терминала?
Я сужу со слов Никсера, который не однократно говорил, что код с маркета нельзя вылечить и выложить в открытый доступ.
Разъясню простую истину. Если код запускается локально то это лишь вопрос времени, когда его вскроют, если он конечно кому-то нужен.
Если ваш код, это советник на двух индикаторах - такое никто смотреть не будет в попытках завладеть ноу-хау.
А если это будет прямо что-то неприлично интересное то тогда, с должным финансированием можно восстановить в исходный код вообще в принципе всё что угодно, хоть маркет, хоть мт5 файлы в связке с DLL. Вопрос будет лишь в деньгах которые потребуются для сего дела.
Здравствуйте! Мне нужен советник или рабочая функция открытия отложенных ордеров . Я учусь и хочу к этой функции попробовать прикрутить трал. Спасибо.
Изменено 16 октября, 2020 пользователем molot_1
Всем привет. Функция поиска фрактала в индикаторе пропускает некоторые фракталы, которые находит при использовании в советнике. Не могу понять почему...
Вот так она используется в индикаторе:
//+--------------------------------------------------------------------+ 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 пользователем Николайец
Всем привет, хотел написать скрипт на выставление тейкпрофита, но что-то не сработало, кто может глянуть, помогите, пока не пойму.
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); } } }
Напиши Принты внутри цикла- может у тебя не выполняется условие
if(value<Bid)
Подскажите, как проверить откат между двум точками. На вход подпрограмма получает только 2 величины а ответ 1(если есть откат) либо 0. Чуть позже выложу свой вариант кода.
Добрый день уважаемые программисты! Подскажите, пожалуйста, есть ли возможность готовый индикатор для терминала MetaTrader4 внедрить в терминал TradingView?
В 31.10.2020 в 15:24, sergey.mihaylovich сказал:Подскажите, пожалуйста, есть ли возможность готовый индикатор для терминала MetaTrader4 внедрить в терминал TradingView?
Нужно знать язык программирования Pine и иметь открытый код индикатора в формате mq4. Ну либо найти такого программиста, который знает эти оба языка. Создайте платное задание на сайте MQL5 во вкладке фриланс.
Добрый день. Подскажите как найти в сетке открытых ордеров ордер с большим убытком. Ордера открываются одновременно sell и buy и разными размера лота. MQL4
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
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
@Rigal как вы делаете погрузку истории? В частности в этом советнике /laboratoriya-profitfx/24/sovetnik-multivaljutnik-korzhik/21628/
Буду благодарен за участок кода в качестве примера.
Столкнулся с проблемой когда терминал врет о запрашиваемых данных.
1 час назад, ademen сказал:@Rigal как вы делаете погрузку истории? В частности в этом советнике /laboratoriya-profitfx/24/sovetnik-multivaljutnik-korzhik/21628/
Буду благодарен за участок кода в качестве примера.
Столкнулся с проблемой когда терминал врет о запрашиваемых данных.
В аттаче библиотечка - я выкусил из нее все зависимости на остальные мои библиотеки.
Используется так:
#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
Добрый день уважаемые знатоки! Подскажите, пожалуйста. Возможно ли уже готовую торговую систему под MT4 переделать под платформу TradingView?
6 минут назад, sergey.mihaylovich сказал:Добрый день уважаемые знатоки! Подскажите, пожалуйста. Возможно ли уже готовую торговую систему под MT4 переделать под платформу TradingView?
Да.
вам нужен исходник в мт4, человек, который знает оба языка и немного времени.
Насколько я знаю, автоматических решений нет
2 минуты назад, sergey.mihaylovich сказал:Добрый день уважаемые знатоки! Подскажите, пожалуйста. Возможно ли уже готовую торговую систему под MT4 переделать под платформу TradingView?
Ну конечно можно.
Добрый день. По мотивам урока "Использование структур для повышения эффективности разработки программ" воодушевился применением функции внутри структуры и создал вот такую простейшую конструкцию в МТ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
В структуре
STRUCT_POSITION
присутствует метод
GetCurrentPositionProperty(void)
который рассчитывает и присваивает значения элементам структуры. Определяем тело метода вне структуры. Для этого используем операцию разрешения контекста (::).
В OnTick() вызываем фунцию:
void OnTick() { //--- STRUCT_POSITION.GetCurrentPositionProperty(); }
И получаем ошибку:
'.' - name expected eSower_and_Gather_5.mq5 69 19
Где накосячено не понимаю, помогите плиз.
Подскажите где можно найти советников с исходниками? Я недавно начал изучать язык, хотел бы посмотреть на примерах.
3 часа назад, Just Trader сказал:Подскажите где можно найти советников с исходниками? Я недавно начал изучать язык, хотел бы посмотреть на примерах.
где найти индикатор TMA_Fair
1 час назад, Александр 1939 сказал:где найти индикатор TMA_Fair
/klassicheskie-indikatory/35/tma-nabor-triangular-moving-average/13013/
/indikatory/7/indikator-trenda-tma_fair-tma-bez-pererisovki/6599/
Есть ли способ работать с файлами не из "песочницы"?
Пробовал делать как описано здесь: 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.
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем