Перейти к содержанию

Обучение языку MQL4 под MetaTrader 4


Рекомендуемые сообщения

Обучение языку MQL4 под MetaTrader 4 Опубликовано


FoxMongoose "крайние" это 2 последних? ну а между 1-ым и 2-ым числом разность какая? или они одинаковые?
если да, то это последовательность Фибоначчи. Можно реализовать и без массива.
Опишите чётко, чтоб вопросов не возникало, можно и с примером расчёта.


Нет, крайние это первый и последний элемент.
Вот на примере рулетки:
Возьмем последовательность из 2 чисел: [5;5]
То есть первая ставка 10
Проигрыш - добавляем к последовательности сумму ставки [5;5;10], складываем крайние числа, следующая ставка 15
Проигрыш - [5;5;10;15], следующая ставка 20
Выигрыш - [5;10], вычеркнули крайние числа, следующая ставка 15
Выигрыш - весь ряд вычеркнут, наша прибыль 10 у.е., то есть сумма изначального ряда [5;5]
Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 6,8k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Смотрим видео-уроки, изучаем MQL:       Скачать видеокурс «MQL программирование. Как самому написать форекс советник/ индикатор/ скрипт»   P.S. Тема про Обучение MQ

Перейти

Циклы цикл for Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы. К примеру, мы хотим проанализировать последние 10 баров и выяснить наименьшую цен

Перейти

Речь идет о том, что не будет значимых нововведений. А только баги периодически будут править. А вот все новое мол - в МТ5. Когда они вживую сказали то же самое на конференции в Москве, я уточнил: "То

Перейти
Обучение языку MQL4 под MetaTrader 4 Опубликовано

Давайте лучше на примере торговли валютой:
начинаем с 1-го ордера с начальным лотом 0,1 - лосс
наступили условия для открытия 2-го ордера. Лот № 2 - ? считаем тоже 0,1 - лосс
№3 лот 0,2 -лосс
№4 лот 0,3 -лосс
№5 лот 0,4 -профит
№6 лот 0,4 -профит
№7 лот 0,5 -лосс
№8 лот 0,7 - и т.д.

правильно?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Давайте лучше на примере торговли валютой:
начинаем с 1-го ордера с начальным лотом 0,1 - лосс
наступили условия для открытия 2-го ордера. Лот № 2 - ? считаем тоже 0,1 - лосс
№3 лот 0,2 -лосс
№4 лот 0,3 -лосс
№5 лот 0,4 -профит
№6 лот 0,4 -профит
№7 лот 0,5 -лосс
№8 лот 0,7 - и т.д.

правильно?


Так, но всегда должен быть начальный ряд, хотя-бы из одного лота, в вашем примере по окончанию серии будет лишь безубыток. По вашему примеру будет так:
№1 лот 0.1, [0.1]
№2 лот 0.2, [0.1;0.1]
№3 лот 0.3, [0.1;0.1;0.2]
№4 лот 0.4, [0.1;0.1;0.2;0.3]
№5 лот 0,5, [0.1;0.1;0.2;0.3;0,4]
№6 лот 0,4 [0.1;0.2;0.3]
№7 лот 0,2 [0.2]
№8 лот 0.4 [0.2;0.2]
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Логика до конца не ясна. Ведь если продолжить серию из Вашего примера, то каждый раз после 5 лоссов и 2 профитов начальный лот будет увеличен (по такому-же принципу). Как вернуться к начальному лоту? или это не предусматривается? потому как даже если будут профиты, то всё-равно пути назад (к 0,1) нет (или я не вижу).
Ну да ладно... Такой хитрый ММ реализовывать надо (наверное) через массив. причём чтоб не загонять МТ с изменением размеров, надо делать сразу оптимальной длинны и сохранять текущий размер во внешней переменной. НО что делать в реале, когда МТ перегрузится и все данные будут утеряны? - надо сохранять каждый раз в файле на диске. Вы готовы к таким подвигам?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Логика до конца не ясна. Ведь если продолжить серию из Вашего примера, то каждый раз после 5 лоссов и 2 профитов начальный лот будет увеличен (по такому-же принципу). Как вернуться к начальному лоту? или это не предусматривается? потому как даже если будут профиты, то всё-равно пути назад (к 0,1) нет (или я не вижу).
Ну да ладно... Такой хитрый ММ реализовывать надо (наверное) через массив. причём чтоб не загонять МТ с изменением размеров, надо делать сразу оптимальной длинны и сохранять текущий размер во внешней переменной. НО что делать в реале, когда МТ перегрузится и все данные будут утеряны? - надо сохранять каждый раз в файле на диске. Вы готовы к таким подвигам?


Начинать с начального лота нужно, когда все числа в массиве закончатся (вычеркнутся).
А вот про сохранение я не подумал. И к таким подвигам еще не готов, я только начал переходить от Паскаля к MQL :d
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано



Rever27 функция инит отрабатывает 1 раз при запуске совы. если Вы хотите пересчитывать лот, то нужно расчёт лота делать непосредственно перед вызовом ОрдерСенд.



Поставил перед OrderSend - ничего не изменилось. Мм не меняется в зависимости от депозита.
воткнул в OrderSend - Мм заработал, но построение сетки у мартина слетело.
Возможно, авто мм не работает только в тесте, на реале будет иначе, буду разбираться.


0ll, почти неделю разбирался. Все таки родил решение #:-s Спасибо.
Проблема была в том, что код советника, начиная с OrderSend(... был под Void, а мой АвтоММ под int start.
По сути, советник работал и так, но смена лота происходила бы только при смене таймфрейма пары, либо перезагрузки терминала.
Перенеся же код с OrderSend(... под шапку start - тестер сразу стал менять лот. Профит )
Хотя, мне показалось, что теперь тест стал немного медленнее идти.

Теперь вплотную займусь изучением вашего кода по торговле только двумя парами :)
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

помогите получить адекватные данные от стрелочного индикатора HMA Arrows. Пробовал iCustom, но при тестировании получались расхождения между стрелками и открытием сделок и это расхождение не 1-2 свечи, а входы были там где не было сигнала и быть е должно.

HMA+Indicator.rar

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
SpyRF индюк HMA Arrows берёт данные от своего цветного брата и ищет локальный экстремум из 3 баров (типа: 31) и результат (стрелочка) будет только на 1 баре.
Что касается HMA Color, то есть подозрение, что рисует. Лучше запустите в визуальном режиме любого эксперта и накиньте на график индюки и наблюдайте возможные изменения на закрытых барах.
В самом HMA Arrows только 2 буфера и других данных (более адекватных) там нет...
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


SpyRF индюк HMA Arrows берёт данные от своего цветного брата и ищет локальный экстремум из 3 баров (типа: 31) и результат (стрелочка) будет только на 1 баре.
Что касается HMA Color, то есть подозрение, что рисует. Лучше запустите в визуальном режиме любого эксперта и накиньте на график индюки и наблюдайте возможные изменения на закрытых барах.
В самом HMA Arrows только 2 буфера и других данных (более адекватных) там нет...


Вы бесспорно правы, что написали насчет HMA Arrows, но я не могу никак советник заставить работать также как и индюк. Стрелочки у индюка иногда перерисовываются, например, если было сильное движение в противоположную от стрелочки сторону, но с этим можно жить при определенных условиях, HMA color сильно уж не перерисовывается, в частности, как и любая машка он следует за ценой и изменение его касается ближайших свечей. Я раньше торговал с этими индюками, потом переключился на дневки, потому что новая работа не позволяет сидеть на Форексе днем, вот поэтому хочу свою стратегию автоматизировать, хз получится или нет, потому что никакой робот не заменит того, что видит человек, но попытать счастья все-таки хочется. А вот как заставить советник видеть "глазами индикатора" не пойму ( Изменено пользователем SpyRF
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Правильно ли я использую расчет тейка и стопа от ATR?

OrderSend(Symbol(),OP_BUY,Lots(),Ask,30,Ask-(ATR*10000*20)*Point,Ask+(ATR*10000*70)*Point,"",MAGIC,0,Blue);
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
FoxMongoose в общем - да, но это лишнее: *10000...*Point, т.к. Point = 0.00001. Просто Ask +- N*ATR.
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Подскажите кто знает как прописать функцию чтобы после закрытия сделки советник ждал нового сигнала а не открывал повторно при оставшемся условии писал по индикатору масд я так понимаю что как то можно привязать к бару ?? Спасибо всем!!!

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
77павел можно по разному... Например если у Вас условие на вход: Бид Слозе[1]>0 && Слозе[0]
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Спасибо #:-s неделю мучаюсь))))


Добавлено: 23-02-2015 12:31:02

if(Ask> maprice &&Macd1>0 && Close [1]>0&&Close [0]
Добавлено: 23-02-2015 12:39:14

maprice = iMA (Symbol(),0 ,MaPeriod,MaShift,MODE_EMA,PRICE_CLOSE,1);
Macd1 =iMACD(NULL,TPeriod1,InpFastEMA,InpSlowEMA,InpSignalSMA,PRICE_CLOSE,MODE_MAIN,0);
Macd2 =iMACD(NULL,TPeriod1,InpFastEMA,InpSlowEMA,InpSignalSMA,PRICE_CLOSE,MODE_MAIN,1);
Macd3=iMACD(NULL,TPeriod1,InpFastEMA,InpSlowEMA,InpSignalSMA,PRICE_CLOSE,MODE_SIGNAL,2);

Snox1 = (iStochastic(NULL,TPeriod,5,3,3,MODE_SMA,0,MODE_MAIN,0)> iStochastic(NULL,TPeriod,5,3,3,MODE_SMA,0,MODE_SIGNAL,0)>80);
Snox2 = (iStochastic(NULL,TPeriod,5,3,3,MODE_SMA,0,MODE_SIGNAL,0)>iStochastic(NULL,TPeriod,5,3,3,MODE_SMA,0,MODE_MAIN,0) // второй экран - стохастика

if( Bid maprice&&Close [0] {

Добавлено: 23-02-2015 12:44:01

это на лонг и на шорт пак путано конечно Изменено пользователем 77павел
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
77павел чего-то Вы много условий написали. Вроде речь была про макд, поэтому условие:
(Macd2 0) - вставляйте это в свою формулу, только не прописывайте сразу 2 пересечения (макд и МА) - сделок может не быть.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Здравствуйте!

Помогите решить маленькую задачу :

Хотел бы изменить настройки в индикаторе "ZigZag Pointer Alert", а именно заменить "стрелочки", на "кружочки",например такие,как в индикаторе "123PatternsV6".Исключительно для "красоты глаз"

Думаю,там где-то надо заменить "стрелка" на "круг",но увы не могу понять где,буду рад помощи,спасибо!

Фото и индикаторы прикрепил :d

1.jpg
2.jpg
In.rar

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Весь секрет здесь:
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,108);
Поменяй код 108 на код из другого индюка, или любой другой и будет индюк рисовать не стрелочки, а кружочки или что-угодно...

  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Здравствуйте.

Screen


На графике установлены модифицированные MA с зависимостью периода от таймфрейма т. е. 18 периодов для Н1 превратится в 18*60 периодов на M1. На основе их данных я пишу осциллятор. Поскольку каждый таймфрейм имеет свою МА, которую видно на более младшем таймфрейме, то в целях оптимизации расчётов я хочу отказаться от вызова iCustom в коде осциллятора. Вместо iCustom каждая МА создаст для себя глобальную переменную и будет писать в неё готовое значение, а осциллятору останется считывать эти значения, делать дальнейшие расчёты и рисовать линии в своём окне.

Вопрос первый: Будет ли такая конструкция работать быстрее, чем вызов iCustom с параметрами уже установленного на графике индикатора?
Вопрос второй: Есть ли смысл добавить запись в файл для ранее рассчитанных значений с целью исключения повторных расчётов при смене таймфрейма?
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Вопрос первый: Будет ли такая конструкция работать быстрее, чем вызов iCustom с параметрами уже установленного на графике индикатора?
Вопрос второй: Есть ли смысл добавить запись в файл для ранее рассчитанных значений с целью исключения повторных расчётов при смене таймфрейма?


1. Конечно быстрее. и для оперативы легче.
2. При смене ТФ происходит переинициализация и все значения утрачиваются. Если не хотите пересчитывать есть 3 способа: через файл, глобальные переменные, графические объекты.
Пересчитывать всё на самом деле можно за один проход на глубину самой длинной машки - секунда.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано


Весь секрет здесь:
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,108);
Поменяй код 108 на код из другого индюка, или любой другой и будет индюк рисовать не стрелочки, а кружочки или что-угодно...



Спасибо больше,все получилось!
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Друзья, подскажите почему функция не хочет работать? Переменная buyclose, прописывается во внешних переменных и ей присваивается цена по которой я бы хотел закрыть все позиции (например buyclose = 1.5649). Остальные функции работают хорошо, компилируется без ошибок...
if (CountTrades() > 0)
{
if (Bid >= NormalizeDouble(buyclose, Digits))
{
int count = 0;

for (int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic2 && OrderMagicNumber() == Magic)
{
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage);
}
}
}
}
}

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
master.man, после выбора ордера, строчка должна выглядеть так:

if (OrderSymbol() == Symbol() && (OrderMagicNumber() == Magic2 || OrderMagicNumber() == Magic)).
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Спасибо chistaya-rodina, возможно из-за этого... буду пробовать т.к. этот бот обкатывается только в реальном времени, потому что первый ордер открывается вручную

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
master.man, если больше ошибок нет, то должно работать. По прежней записи выходило, что выбранный ордер, должен иметь одновременно оба мейджика, а теперь, либо-первый, либо-второй.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...