usver73 Опубликовано 3 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 3 ноября, 2021 15 минут назад, diodio сказал: Кто может поделиться кусочком грамотного кода, где увеличивается лот при увеличении эквити. Изучи, там много вопросов может возникнутьhttps://www.google.com/search?q=mql4+расчет+лота+site:www.mql5.com&newwindow=1&sxsrf=AOaemvJhwNygOxAnPotkv3VZ43S8pQ_ZrQ:1635932930130&sa=X&ved=2ahUKEwiGvrSJ9fvzAhXpwosKHXZwDzgQrQIoBHoECAUQBQ&biw=1420&bih=733&dpr=1.25 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Capital Plus Опубликовано 7 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 ноября, 2021 Доброго времени суток. Покажите, пожалуйста, как должен выглядеть блок кода при следующей задаче: Дано N свечей назад. Найти в них свечи размером >= X пунктов, запомнить их общее количество и размер каждого из них. Если текущая свеча после закрытия оказалась >= X пунктов, то сравнить её размер с общим кол-вом найденных свечей и вывести следующий результат - какое место она занимает по размеру среди всех найденных. На мкл сайте затруднились выполнить, но указали на использование массивов. Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 7 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 ноября, 2021 11 часов назад, Capital Plus сказал: но указали на использование массивов. тоже сначала подумал о массиве, потом увидел, что можно отказаться extern int CandleCount = 10; // количество исторических свечей extern int CandleSize = 10; // мин. размер свечи //int ArrCandle[]; datetime PrevBarTime; MqlRates rate[]; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //ArrayResize(ArrCandle, CandleCount); //ArrayInitialize(ArrCandle,0); return(INIT_SUCCEEDED); } void OnTick() { int n = 0; // количество найденных свечей большого размера int SizeCandle1 = 0; // размер последней свечи int k = 0; // количество свечей бОльшего размера, чем свеча 0 if(PrevBarTime != iTime(Symbol(),PERIOD_CURRENT,0)) { PrevBarTime = iTime(Symbol(),PERIOD_CURRENT,0); //ArrayInitialize(ArrCandle,0); CopyRates(_Symbol,PERIOD_CURRENT,1,CandleCount,rate); SizeCandle1 = (int)(MathAbs(rate[CandleCount-1].close - rate[CandleCount-1].open)/_Point); if(SizeCandle1 >= CandleSize) { for(int i=0; i < CandleCount; i++) { int size = (int)(MathAbs(rate[i].close - rate[i].open)/_Point); if( size >= CandleSize) { //ArrCandle[n] = size; n++; if(size > SizeCandle1) k++; } } Print(TimeToString(TimeCurrent(),TIME_MINUTES)," , Last Candle ",SizeCandle1, " , Total big candle ",n, " , Bigest candle ", k); } } 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Capital Plus Опубликовано 7 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 ноября, 2021 3 часа назад, usver73 сказал: тоже сначала подумал о массиве, потом увидел, что можно отказаться extern int CandleCount = 10; // количество исторических свечей extern int CandleSize = 10; // мин. размер свечи //int ArrCandle[]; datetime PrevBarTime; MqlRates rate[]; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //ArrayResize(ArrCandle, CandleCount); //ArrayInitialize(ArrCandle,0); return(INIT_SUCCEEDED); } void OnTick() { int n = 0; // количество найденных свечей большого размера int SizeCandle1 = 0; // размер последней свечи int k = 0; // количество свечей бОльшего размера, чем свеча 0 if(PrevBarTime != iTime(Symbol(),PERIOD_CURRENT,0)) { PrevBarTime = iTime(Symbol(),PERIOD_CURRENT,0); //ArrayInitialize(ArrCandle,0); CopyRates(_Symbol,PERIOD_CURRENT,1,CandleCount,rate); SizeCandle1 = (int)(MathAbs(rate[CandleCount-1].close - rate[CandleCount-1].open)/_Point); if(SizeCandle1 >= CandleSize) { for(int i=0; i < CandleCount; i++) { int size = (int)(MathAbs(rate[i].close - rate[i].open)/_Point); if( size >= CandleSize) { //ArrCandle[n] = size; n++; if(size > SizeCandle1) k++; } } Print(TimeToString(TimeCurrent(),TIME_MINUTES)," , Last Candle ",SizeCandle1, " , Total big candle ",n, " , Bigest candle ", k); } } Как оперативно! Еще и с комментариями. Спасибо большое, попробую разобраться Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 9 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 ноября, 2021 Доброго времени суток! Вопрос такой, не могу понять почему не закрываются позиции при противоположном сигнале индикатора. Беру сигнал на открытие с первого бара, если на нулевом появился сигнал, то на первом баре открывается позиция. Но вот закрытие не происходит при противоположном сигнале индикатора. Что делать? Если настроить снятие сигнала с нулевого бара, то возможно будет закрытие? Хотя открытие же происходит на первом баре после сигнала, значит и закрытие должно так работать?! Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 9 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 ноября, 2021 47 минут назад, diodio сказал: Беру сигнал на открытие с первого бара, если на нулевом появился сигнал, то на первом баре открывается позиция. Бред. Сигнал ты можешь получить на открытии 0-го бара. После анализа 1-го. И открыть позу можешь тоже только на 0-м (текущем) баре. Т.к. нумерация баров идет в обратном порядке, т.е. 0-й - это текущий, 1-й- это последний ЗАКРЫТЫЙ бар. 49 минут назад, diodio сказал: не могу понять почему не закрываются позиции при противоположном сигнале индикатора. ошибка в коде Ссылка на сообщение Поделиться на другие сайты More sharing options...
Roman 13 Опубликовано 9 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 ноября, 2021 Здравствуйте, подскажите как сделать что бы отключался первый трейлинг стоп при включении второго трейлинг стопа Ссылка на сообщение Поделиться на другие сайты More sharing options...
Capital Plus Опубликовано 10 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 ноября, 2021 Доброго времени суток. Подскажите, пожалуйста, как можно посчитать тики или свечи за большое время? (год, например). Пробую через Close[], но индекс больше 5000 не дает. Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 10 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 ноября, 2021 1 час назад, Capital Plus сказал: Подскажите, пожалуйста, как можно посчитать тики или свечи за большое время? (год, например). Справка mql4: доступ к свечамhttps://docs.mql4.com/ru/series/copyrates Справка mql5: доступ к тикамhttps://www.mql5.com/ru/docs/series/copyticksrange в mql4 такого нет 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Lexa000 Опубликовано 14 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 14 ноября, 2021 Доброго времени суток! Подскажите пожалуйста код, который бы при наборе сетки лотов против тренда, открывал и по тренду увеличено в соотношении процента Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 15 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 ноября, 2021 8 часов назад, Lexa000 сказал: Подскажите пожалуйста код, который бы при наборе сетки лотов против тренда, открывал и по тренду увеличено в соотношении процента Этот "кусок кода" будет тянуть на приличный советник по своему объему. Ищите по запросу "локирование". С точки зрения пользы такого алгоритма- это бесполезное (как минимум) и даже вредное занятие: локирование равноценно закрытию существующих ордеров 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Lexa000 Опубликовано 15 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 ноября, 2021 5 часов назад, usver73 сказал: Этот "кусок кода" будет тянуть на приличный советник по своему объему. Ищите по запросу "локирование". С точки зрения пользы такого алгоритма- это бесполезное (как минимум) и даже вредное занятие: локирование равноценно закрытию существующих ордеров Мне для эксперимента, я многое перепробовал, не получается Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 15 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 ноября, 2021 7 минут назад, Lexa000 сказал: Мне для эксперимента, я многое перепробовал, не получается но ведь не получается что-то конкретное? Логично задать "узкий" вопрос. У локеров много всяких условий и чужой код не факт, что поможет. Начните делать и по ходу пьесы задавайте вопросы Ссылка на сообщение Поделиться на другие сайты More sharing options...
Lexa000 Опубликовано 15 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 ноября, 2021 6 минут назад, usver73 сказал: но ведь не получается что-то конкретное? Логично задать "узкий" вопрос. У локеров много всяких условий и чужой код не факт, что поможет. Начните делать и по ходу пьесы задавайте вопросы Здесь 130 ошибка, лок уже есть, но он не работает так как нужно. В определенное время начинает открывать в одном направлении Locomotive v1.01 (72).mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 15 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 ноября, 2021 24 минуты назад, Lexa000 сказал: Здесь 130 ошибка Смешно... ошибка 130- "Неправильные стопы". Останавливайте в этот момент тестер, разбирайтесь- что неправильно (как правило неверная цена ордера/СЛ/ТП). добавьте после OrderSend() что-то типа: if(ticket < 0) Print(GetLastError," ", " Bid ", Bid, " Ask", Ask, " SL", SL, " TP ", TP); и т.д. То же самое после OrderModify() п.с. Советник не запускается без индикатора cannot open file '\\MQL4\indicators\MarketInsider_v1.2.ex4' [2] Ссылка на сообщение Поделиться на другие сайты More sharing options...
Lexa000 Опубликовано 15 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 ноября, 2021 4 часа назад, usver73 сказал: Смешно... ошибка 130- "Неправильные стопы". Останавливайте в этот момент тестер, разбирайтесь- что неправильно (как правило неверная цена ордера/СЛ/ТП). добавьте после OrderSend() что-то типа: if(ticket < 0) Print(GetLastError," ", " Bid ", Bid, " Ask", Ask, " SL", SL, " TP ", TP); и т.д. То же самое после OrderModify() п.с. Советник не запускается без индикатора cannot open file '\\MQL4\indicators\MarketInsider_v1.2.ex4' [2] Спасибо за подсказку if (Ticket <= 0) { PnC(StringConcatenate("Открыт ордер ",Ticket),0); Здесь поменял знак и советник стал работать по другому Ссылка на сообщение Поделиться на другие сайты More sharing options...
DUBROV Опубликовано 15 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 ноября, 2021 Приветствую всех! Отдельный респект тем, кто помогает, жертвуя своим личным временем, отвечая на порой достаточно простые вопросы. С товарищем пишем помощника в виде дополнительного советника, для автоматизации некоторых ручных действий. Автоматизировали сдвиг тейк-профитов. Реализовали кнопки для принудительного закрытия ордеров вблизи ТП одной кнопкой и т. д. Теперь есть следующая задача: Сначала ситуация: работает робот на 10 парах. Фактически свой робот со своими настройками на каждой паре. Необходимо из Помощника одной кнопкой менять текущие параметры во всех 10-ти роботах. Например снять галочки "разрешить советнику торговать". Другой кнопкой увеличить шаг между ордерами и т. д. Вопрос: где хранятся текущие настройки (путь, названия файлов, или они хранятся в реестре) всех этих 10-ти советников, чтобы при помощи команд из помощника их суметь отредактировать? Изменено 15 ноября, 2021 пользователем DUBROV Ссылка на сообщение Поделиться на другие сайты More sharing options...
ademen Опубликовано 15 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 15 ноября, 2021 1 час назад, DUBROV сказал: Теперь есть следующая задача: Сначала ситуация: работает робот на 10 парах. Фактически свой робот со своими настройками на каждой паре. Необходимо из Помощника одной кнопкой менять текущие параметры во всех 10-ти роботах. Например снять галочки "разрешить советнику торговать". Другой кнопкой увеличить шаг между ордерами и т. д. Вопрос: где хранятся текущие настройки (путь, названия файлов, или они хранятся в реестре) всех этих 10-ти советников, чтобы при помощи команд из помощника их суметь отредактировать? Привет, есть глобальные переменные терминала, они видны всем советникам. Изменено 15 ноября, 2021 пользователем ademen 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Capital Plus Опубликовано 16 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 ноября, 2021 Подскажите, пожалуйста, а можно как-то историю порезать? Когда загружаешь, то загружается лет за 20, а нужна года 2-3 назад... Ссылка на сообщение Поделиться на другие сайты More sharing options...
ademen Опубликовано 16 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 ноября, 2021 11 часов назад, Capital Plus сказал: Подскажите, пожалуйста, а можно как-то историю порезать? Когда загружаешь, то загружается лет за 20, а нужна года 2-3 назад... Как загружаете? Ссылка на сообщение Поделиться на другие сайты More sharing options...
Capital Plus Опубликовано 17 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 ноября, 2021 21 час назад, ademen сказал: Как загружаете? Через архив котировок. Выбираю каждую нужную пару и жму загрузить Ссылка на сообщение Поделиться на другие сайты More sharing options...
ademen Опубликовано 17 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 ноября, 2021 3 часа назад, Capital Plus сказал: Через архив котировок. Выбираю каждую нужную пару и жму загрузить Тогда выбрать не получится Ссылка на сообщение Поделиться на другие сайты More sharing options...
DUBROV Опубликовано 18 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 18 ноября, 2021 В 16.11.2021 в 00:21, ademen сказал: Привет, есть глобальные переменные терминала, они видны всем советникам. Возможно вы неправильно меня поняли, поэтому и ответ получился слишком поверхностным. Уточню. Мне нужно знать, где терминал хранит значения параметров каждого из 10-ти экземпляров советника (10 разных пар), чтобы я смог написать скрипт, который одним нажатием кнопки, меняет эти параметры. Во вложении сохранённые параметры советника одной из пар. Их, допустим 10. Значения параметров могут у всех пар отличаться. Где эти значения хранятся? Чтобы я мог скриптом, например, увеличить Divider c 20 до 40 у всех 10-ти пар (советников). Изменено 18 ноября, 2021 пользователем DUBROV Ссылка на сообщение Поделиться на другие сайты More sharing options...
ademen Опубликовано 19 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 ноября, 2021 10 часов назад, DUBROV сказал: Возможно вы неправильно меня поняли, поэтому и ответ получился слишком поверхностным. Уточню. Мне нужно знать, где терминал хранит значения параметров каждого из 10-ти экземпляров советника (10 разных пар), чтобы я смог написать скрипт, который одним нажатием кнопки, меняет эти параметры. Во вложении сохранённые параметры советника одной из пар. Их, допустим 10. Значения параметров могут у всех пар отличаться. Где эти значения хранятся? Чтобы я мог скриптом, например, увеличить Divider c 20 до 40 у всех 10-ти пар (советников). То что вы показали на скрине - глобальные параметры советника, видимые только советникам. Если вы хотите что бы советники общались между собой - рекоммендую это сделать через глобальные перемены терминала, что надежнее всего. Так же можете попробовать например сохранять параметры в текстовый файл и в дальнейшем работать с ним 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
DUBROV Опубликовано 19 ноября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 ноября, 2021 10 часов назад, ademen сказал: То что вы показали на скрине - глобальные параметры советника, видимые только советникам. Если вы хотите что бы советники общались между собой - рекоммендую это сделать через глобальные перемены терминала, что надежнее всего. Так же можете попробовать например сохранять параметры в текстовый файл и в дальнейшем работать с ним Большое Спасибо за ответ!!! Немного более ясно становится. Т. е. глобальные параметры советника никаким образом из другого советника отредактировать нельзя? А команды, чтобы из одного советника выгрузить параметры другого в *.set-файл и потом загрузить отредактированные обратно, есть? PS: доступа к коду торгующего советника нет. Изменено 19 ноября, 2021 пользователем DUBROV Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти