STre 7 Share Posted August 31, 2017 Так нельзя перебирать ордера для закрытия. Надо вот так. for(int i=OrdersTotal()-1;i>=0;i--) Иначе вы одновременно идете по циклу и удаляете. Цикл ломается... Quote Link to post Share on other sites
Vladero 357 Share Posted August 31, 2017 Подскажите, можно ли вне функций советника, в начале файла, прописывать что-то, помимо объявления переменных? Хочу сделать объявление переменных/массивов, только если они будут нужны, в зависимости от значения внешней переменной-переключателя. Примерно так: extern bool a=true; //Использовать функцию Х? if (a==true) { int d=1; double TT[10]; } ... Так будет работать? Quote Link to post Share on other sites
AntFX 6,474 Share Posted August 31, 2017 (edited) Так будет работать? Так не будет, но можно так #ifdef A_TRUE int d=1; double TT[10]; #endif Чтобы этот кусок потом включить, нужно вверху написать #define A_TRUE Включить или выключить кусок кода в зависимости от значения переменной не получится. Edited August 31, 2017 by AntFX Quote 1 Link to post Share on other sites
ToB. CyxoB 324 Share Posted September 5, 2017 Подскажите простую вещь, пожалуйста...)) как в enum поместить разные значения 1.2.3.4.... в одну переменную ? mql4 Quote Link to post Share on other sites
AntFX 6,474 Share Posted September 5, 2017 как в enum поместить разные значения 1.2.3.4.... в одну переменную ? mql4 Каждому значению в enum должно соответствовать строго одно число Quote 1 Link to post Share on other sites
ToB. CyxoB 324 Share Posted September 5, 2017 Каждому значению в enum должно соответствовать строго одно число а как тогда мне сделать перебор параметров переменной в свойствах советника? как выбрать 1 или 2 или 3? Quote Link to post Share on other sites
AntFX 6,474 Share Posted September 5, 2017 а как тогда мне сделать перебор параметров переменной в свойствах советника? как выбрать 1 или 2 или 3? Ты создаешь перечисление, потом создаешь внешнюю переменную типа перечисления, и в окне выбора параметров советника у тебя будет всплывающий список из нескольких опций. Quote 1 Link to post Share on other sites
ToB. CyxoB 324 Share Posted September 5, 2017 Ты создаешь перечисление, потом создаешь внешнюю переменную типа перечисления, и в окне выбора параметров советника у тебя будет всплывающий список из нескольких опций. перечисление значений? мне нужно чтобы переменная А могла принимать значения 1,2 или 3.... Quote Link to post Share on other sites
AntFX 6,474 Share Posted September 5, 2017 (edited) перечисление значений? мне нужно чтобы переменная А могла принимать значения 1,2 или 3.... можешь написать так enum abc{Один=1, Два=2, Три=3}; или так enum abc2{_1=1, _2=2, _3=3}; элементом в перечислении (enum) должен быть идентификатор. он не может начинаться с числа (то есть элемент 1, 2 или 3 создать не получится) Edited September 5, 2017 by AntFX 1 Quote 1 Link to post Share on other sites
ToB. CyxoB 324 Share Posted September 5, 2017 можешь написать так enum abc{Один=1, Два=2, Три=3}; или так enum abc2{_1=1, _2=2, _3=3}; элементом в перечислении (enum) должен быть идентификатор. он не может начинаться с числа (то есть элемент 1, 2 или 3 создать не получится) и в коде, везде где у меня было if abc2==1.... теперь будет if abc2==_1 ? Quote Link to post Share on other sites
AntFX 6,474 Share Posted September 5, 2017 (edited) и в коде, везде где у меня было if abc2==1.... теперь будет if abc2==_1 ? переменную вполне можно использовать как целочисленную, она может принимать любые целочисленные значения по сути (наск. я помню) Но если говорить о правильном стиле программирования, то этого лучше не делать... Элементам перечисления нужно давать осмысленные имена и применять только их в коде. Причем, желательно английские... А если нужно ограничить пользователя в установке других чисел в настройке кроме 1, 2 и 3 то использовать не перечисление, а обычную переменную int, и проверять в OnInit, что значение установлено в нужных рамках. Если значение отличается от нужного, выдавать сообщение в журнал и выгружать советник ( return(INIT_FAILED) ). Edited September 5, 2017 by AntFX Quote 1 Link to post Share on other sites
ToB. CyxoB 324 Share Posted September 5, 2017 (edited) переменную вполне можно использовать как целочисленную, она может принимать любые целочисленные значения по сути (наск. я помню) Но если говорить о правильном стиле программирования, то этого лучше не делать... Элементам перечисления нужно давать осмысленные имена и применять только их в коде. Причем, желательно английские... А если нужно ограничить пользователя в установке других чисел в настройке кроме 1, 2 и 3 то использовать не перечисление, а обычную переменную int, и проверять в OnInit, что значение установлено в нужных рамках. Если значение отличается от нужного, выдавать сообщение в журнал и выгружать советник ( return(INIT_FAILED) ). цель: дать пользователю выбрать одно из двух значений: 0 или 1. Назначить переменной abc значение 0 или 1. У меня пока ничего не получилось. enum abc{_0=0, _1=1}; и далее в коде if (abc==_0) {Print("0 ",_0);} if (abc==_1) {Print("1 ",_1);} ошибка....неизвестный токен Edited September 5, 2017 by ToB. CyxoB Quote Link to post Share on other sites
AntFX 6,474 Share Posted September 5, 2017 ошибка....неизвестный токен abc это тип, а не переменная. ты как будто вчера родился... Quote 1 Link to post Share on other sites
ToB. CyxoB 324 Share Posted September 5, 2017 abc это тип, а не переменная. ты как будто вчера родился... не вчера...сегодня! никогда в жизни не пользовался этими enum-ами... напиши короткий пример, пожалуйста, законченный. Справку читал. не помогло))) объявили тип...аbc...а нафига он мне нужен? мне переменная нужна и ее значения! Quote Link to post Share on other sites
AntFX 6,474 Share Posted September 5, 2017 (edited) enum ENUM_ABC {_0=0, _1=1}; и далее в коде ENUM_ABC abc=_0; if (abc==_0) {Print("0 ",_0);} if (abc==_1) {Print("1 ",_1);} Edited September 5, 2017 by AntFX Quote 1 Link to post Share on other sites
ToB. CyxoB 324 Share Posted September 5, 2017 enum ENUM_ABC {_0=0, _1=1}; и далее в коде ENUM_ABC abc=_0; if (abc==_0) {Print("0 ",_0);} if (abc==_1) {Print("1 ",_1);} Спасибо) Quote Link to post Share on other sites
yrik735 0 Share Posted September 24, 2017 Альтернатива есть ? int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) Для советника Quote Link to post Share on other sites
AntFX 6,474 Share Posted September 24, 2017 Альтернатива есть ? int OnCalculate ... Для советника В советниках используется OnTick() Quote 1 Link to post Share on other sites
Atani 0 Share Posted October 8, 2017 Подскажите как правильно прописать адрес для вызова программы через "kernel32.dll" #import "kernel32.dll" int WinExec(uchar &lpCmdLine[],uint uCmdShow); #define SW_HIDE 0 //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() } uchar ucParam[]; // определяем строковый массив string sParam = "C:\Xnwiew.exe"; // адрес ArrayResize(ucParam, StringLen(sParam)+1); // резервируем память для строкового массива StringToCharArray(sParam, ucParam); // переносим текст в строковый массив int result = WinExec(ucParam,SW_HIDE); // запуск программы if (result<32) Alert("Запуск программы не удалось. Код ошибки: ",result); return; } uchar ucParam[]; // определяем строковый массив string sParam = "C:\Xnwiew.exe"; // Вот пишу этот адрес, но ничего не происходит, как задать его? ArrayResize(ucParam, StringLen(sParam)+1); // резервируем память для строкового массива StringToCharArray(sParam, ucParam); // переносим текст в строковый массив int result = WinExec(ucParam,SW_HIDE); // запуск программы if (result<32) Alert("Запуск программы не удалось. Код ошибки: ",result); return; Quote Link to post Share on other sites
Neona 5 Share Posted October 17, 2017 Здравствуйте! Подскажите пожалуйста, в MQL4 приказ о покупке и выбор ордера выглядят так: OrderSend(NULL,OP_BUY,0.5,Ask,10,SL_b,0,NULL,0,0,clrNONE); OrderSelect(12345,SELECT_BY_POS) Как эти приказы пишутся в MQL5 ??? Quote Link to post Share on other sites
AntFX 6,474 Share Posted October 17, 2017 Как эти приказы пишутся в MQL5 ??? Добрый день! Вот здесь в справке все подробно описано с примерами. Quote 1 Link to post Share on other sites
Стяжатель 0 Share Posted October 18, 2017 У меня такой вопрос. Не могу разобраться с временем в котировках. Как нивелировать влияние часового пояса и переход с летнего времени на зимнее? Quote Link to post Share on other sites
Стяжатель 0 Share Posted October 19, 2017 Еще вопрос. Есть такая функция Push. Отправляет на мобильный терминал сообщение о событиях. С этой функцией кто то работал? Насколько все происходит без сбоев? Quote Link to post Share on other sites
Ugar68 372 Share Posted October 22, 2017 Еще вопрос. Есть такая функция Push. Отправляет на мобильный терминал сообщение о событиях. С этой функцией кто то работал? Насколько все происходит без сбоев? Сбои бывают. Хотя бы надо понимать что интернет не всегда стабилен на мобильниках. Бывает что приходит с опозданием. Бывает не приходит совсем, но это обычно связано с тем что вовремя не обновил мобильный терминал, или он завис. Всё это достаточно редко. В основном работает стабильно. Я ещё пользуюсь отправкой смс. Мне кажется это надёжнее. Работает даже если телефон находится там, где нет мобильного интернета. Но и это не всегда работает стабильно. Один раз я получил смс с билайна в Казахстане, на мегафон в России с задержкой в полтора месяца. Как раз те кто отправлял, уже у меня гостили. Вместе поржали. Quote Пишу советники и индикаторы по вашим алгоритмам. Пишите в личку. Чужие программы не переделываю. Link to post Share on other sites
Secret Looser 5 Share Posted October 25, 2017 Здравствуйте. Пишу на MQL4 мультивалютного советника, который работает на минутках и анализирует одновременно больше 10 валютных пар (кластерный анализ). И вот проблема: при тестировании терминал съедает около 4 ГБ оперативки, после чего вылетает с ошибкой. Получается протестировать максимум за пол года (тогда съедает 3.5 ГБ и работает). Я так понимаю, он при тестировании загружает в оперативку всю минутную историю по всем используемым парам. Можно ли как-то этого избежать? Пробовал CopyRates - не помогло. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.