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

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


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

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

Написанный ещё в 2016 году советник решил малость улучшить но не получается,
помогите написать правильно, в советнике есть и что требуется написать и то как я пытался это сделать но не получается это /* тут */

oppositnik+.mq4

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

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

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

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

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

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

Перейти

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

Перейти

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

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

Здравствуйте Сергей (хbms)! Подскажите по 7 уроку. Получилось написать неплохой сеточник (как мне кажется) - 50-70% годовых при тестировании на демо и объеме 0.1лот. При установке совы на нано-счет в Alpari, чтобы получить такой процент, надо увеличить объем до 10лот!!! Аlраri - брокер пятизначный, а нано-счет четыре знака. Какое условие прописать в советнике, чтобы при переходе на центовый счет получить реальные цифры?
if (Digits == 2 || Digits ==4 )
{
......?
}

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

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


Здравствуйте Сергей (хbms)! Подскажите по 7 уроку. Получилось написать неплохой сеточник (как мне кажется) - 50-70% годовых при тестировании на демо и объеме 0.1лот. При установке совы на нано-счет в Alpari, чтобы получить такой процент, надо увеличить объем до 10лот!!! Аlраri - брокер пятизначный, а нано-счет четыре знака. Какое условие прописать в советнике, чтобы при переходе на центовый счет получить реальные цифры?
if (Digits == 2 || Digits ==4 )
{
......?

}


Digits==5, пять знаков после запятой =5
Ссылка на сообщение
Поделиться на другие сайты

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

Добрый день!
И с нова я)новый код проблема та же)
Идея в том чтобы ордер открывался по индикатору Macd 2line, когда гистограмма принимает значение ""UP"" и ASK выше средней, то открываем бай, ну и аналогично для селл.
Проблема вот в чем:
как задать правильное условие, чтобы ордер открывался ТОЛЬКО на первый сигнал от индикатора?И не имел права открываться на 2, 3 и тд. Сигналом я считаю первый бар в гистограмме.
ps как в прошлом советнике не получилось выкрутиться, тк подряд могут быть 2 и 3 бая или села((




MACD_288.mq4
1123.jpg

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

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

Здравствуйте форумчане хотел было индикатор тма из системы победа оптимизировать с данного форума следующим образом ширину данного канала вывести в угол графика тем самым убрать один индикатор из системы в связи с этим просьба если уж у меня маленько опыта не хватает может кто поможет если располагает временем Спасибо))

TMA_with_Distances.mq4

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

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

Здравствуйте, уважаемые.
Изучаю MQL относительно недавно и споткнулся вроде бы на элементарном- получить значение индикатора со старшего ТФ (например, МА):
если в настройках МА поставить timeframe= D1, или текущий (в тестере), то все нормально, при прочих настройках результат=0

Спойлер



#property copyright "Usver73"
#property link "https://www.mql5.com"
#property version "1.00"
#property strict


extern ENUM_TIMEFRAMES frTF =1440;//ТФ Фрактал и МА
extern ENUM_TIMEFRAMES OsMaTF =240; //ТФ ОсМА
extern int frShift =2; //Смещение Фрактал
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---

//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---

}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---

double MyFractalsUp= iFractals (NULL,0,1,frShift);
double MyFractalsDn= iFractals (NULL,0,2,frShift);
double MAfast= iMA(NULL,frTF,5,0,0,0,1);
double MAslow= iMA(NULL,frTF,22,0,0,0,1);
double MyOSMA1= iOsMA(NULL,OsMaTF,11,22,5,0,1);
double MyOSMA2= iOsMA(NULL,OsMaTF,11,22,5,0,2);
double pr=0, sl=0, tp=0; // цена, стоплосс, тейкпрофит
int oBuy=0,oSell=0, oBuystop=0, oSellstop=0;
Print("frTF ",frTF," OsMaTF ",OsMaTF);
Print (" MyFractalsUp ",MyFractalsUp, ",MyFractalsDn ",MyFractalsDn,
" MAfast ",MAfast," MAslow ",MAslow,
" MyOSMA1 ", MyOSMA1," MyOSMA2 ", MyOSMA2 );

}

Всю голову сломал :(
Ссылка на сообщение
Поделиться на другие сайты

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

как задать правильное условие, чтобы ордер открывался ТОЛЬКО на первый сигнал от индикатора?И не имел права открываться на 2, 3 и тд. Сигналом я считаю первый бар в гистограмме.


Затрудняетесь как определить произошла ли смена цвета на гистограмме? Проверяйте предыдущий бар. Если последний закрытый зеленый, а предпоследний - красный, то соответственно, цвет гистограммы сменился.
Ссылка на сообщение
Поделиться на другие сайты

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

Здравствуйте!
Дело в истории котировок. Обновите историю, желательно минутную, чтобы в терминале была история на весь период тестирования. И должно все работать.

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

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


Здравствуйте!
Дело в истории котировок. Обновите историю, желательно минутную, чтобы в терминале была история на весь период тестирования. И должно все работать.


Закачивал котировки SQ Tick Downloader тиковые, потом конвертировал с помощью CSV2FXT все таймфреймы, думал они нормальные. На пяти парах попробовал- результат-0.
Попробовал на терминале подключенном к счету, на нем все пошло.
Я в печали x_x .
DreamWorks, спасибо большое!
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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

чтобы ордер открывался ТОЛЬКО на первый сигнал от индикатора?И не имел права открываться на 2, 3 и тд. Сигналом я считаю первый бар в гистограмме.

и я попробую...
Вам надо попробовать чередовать направления входа, т.е. после бая ждать сигнал на селл и в бай не ходить.
Алгоритм такой: if ( 1- lastType == signalType ) { OpenNewOrder (signalType); lastType = signalType; }
Ссылка на сообщение
Поделиться на другие сайты

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

всем привет вообщем начил изучения языка и столкнулся с первой проблемой после просмотра урока на курсе молодого бойца там было домашнее задание которой я не смог сделать так так не смог понять куда в уроке в метаэдиторе цифры строк делись которые слева расспологаются я открыл у себя в тереме и не смог увеличить их количество как увеличить количество строк чтоб прописать алгоритм помогите понять?

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

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

Доброе утро, спасибо за ответы.
Я наверное опять не правильно выражаюсь)
Что бы он открывал на первый бар гистограммы я реализовал, а вот чтобы он не открывал потом...например:
если закрылся по SL или TP, робот ждал нового первого бара по гистограмме,
или когда приостанавливаешь советник на некоторое время, при включении он опять ждал только нового сигнала, тобишь первого бара по гистограмме.
Сохранять по типу(чему я научился, огромное спасибо DreamWorks), не удовлетворяет условиям стратегии, так как в день может быть подряд и 2 и 3 одинаковых по типу ордера..





Добавлено: 11-05-2017 04:52:55


всем привет вообщем начил изучения языка и столкнулся с первой проблемой после просмотра урока на курсе молодого бойца там было домашнее задание которой я не смог сделать так так не смог понять куда в уроке в метаэдиторе цифры строк делись которые слева расспологаются я открыл у себя в тереме и не смог увеличить их количество как увеличить количество строк чтоб прописать алгоритм помогите понять?


Сервис/настройки/номера строк галочку поставьте.

_точечный_рисунок.jpg

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

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

Я наверное опять не правильно выражаюсь)


Да уж, сложно Вас понять. Дайте определение, что по Вашему "новый первый бар по гистограмме". Самый первый бар вообще? Тогда в чем смысл? Или первый бар за какой-то период (первый в день, час, неделю)?
Ссылка на сообщение
Поделиться на другие сайты

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


Я наверное опять не правильно выражаюсь)


Да уж, сложно Вас понять. Дайте определение, что по Вашему "новый первый бар по гистограмме". Самый первый бар вообще? Тогда в чем смысл? Или первый бар за какой-то период (первый в день, час, неделю)?

мммм..на картинке приведен пример, вот следующим будет, cчитаться первым, только после DOWN гистограммы

1123.jpg
1.jpg

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

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

люди подскажите как увеличить расстояние между строками что написать алгоритм?

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

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


люди подскажите как увеличить расстояние между строками что написать алгоритм?


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

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

Уважаемые, господа-программисты! Помогите улучшить, на мой взгляд, индикатор. Когда он подписывает локальный максимум, сделайте, пожалуйста, так, чтобы цену он указывал НАД линией, так как цифры закрывают свечи. Огромное спасибо за помощь.

Gann_SQ9_A2.mq4

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

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

Всем доброго времени суток! Заранее извиняюсь за ломанное построение вопроса - немного новичок. Сам вопрос - Как вшить в советника способность торговать в определенные дни недели (выбранные дни отключить) ? Думаю просто скопировать код с советника Generic, но опасаюсь упустить какую-то переменную/функцию. На какие переменные стоит обращать внимание?
Заранее благодарен за ответ!

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

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

мммм..на картинке приведен пример, вот следующим будет, cчитаться первым, только после DOWN гистограммы


d1w4m3, из картинки следует, что первым Вы считаете бар гистограммы, который идет на стыке смены цветов (или направления) гистограммы. Правильно? Если так, то я уже ответил Вам выше. Если не правильно Вас опять понимаем, то давайте определение словами, без картинок.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
d1w4m3, из картинки следует, что первым Вы считаете бар гистограммы, который идет на стыке смены цветов (или направления) гистограммы. Правильно? Если так, то я уже ответил Вам выше. Если не правильно Вас опять понимаем, то давайте определение словами, без картинок.

"Проверяйте предыдущий бар. Если последний закрытый зеленый, а предпоследний - красный, то соответственно, цвет гистограммы сменился"
Все вник, осталось только понять как определить предпоследний закрытый?
я так понимаю: if(Close[2] !=uptrend && Close [1] != dntrend)??
или что то опять намудрил)


Добавлено: 11-05-2017 13:04:56

если честно, вообще не пойму, как можно связать гистограмму и бары? Понимаю как работать со средней и тд, что непосредственно находится на графике, а тут ....??
Изменено пользователем d1w4m3
Ссылка на сообщение
Поделиться на другие сайты

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

если честно, вообще не пойму, как можно связать гистограмму и бары? Понимаю как работать со средней и тд, что непосредственно находится на графике, а тут ....??


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

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

uptr = iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, 2, 1);
dntr = iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, 3, 1);

я к ним и привязан! Так в чем тогда ошибка не пойму?

Close[2] !=uptr && Close [1] != dntr это для бая
Или уж отправьте меня в документацию какую-нибудь, буду ума разума набираться

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

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


uptr = iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, 2, 1);
dntr = iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, 3, 1);

я к ним и привязан! Так в чем тогда ошибка не пойму?

Close[2] !=uptr && Close [1] != dntr это для бая
Или уж отправьте меня в документацию какую-нибудь, буду ума разума набираться



Если не ошибаюсь, надо ещё добавить
uptr_2 = iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, 2, 2);
dntr_2 = iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, 3, 2);
и сравнить их, как Вы сравнивали Close[2] !=uptr && Close [1] != dntr
Например, если uptr_20 то это и будет пересечение.
Ссылка на сообщение
Поделиться на другие сайты

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

Close[2] !=uptr && Close [1] != dntr это для бая


Зачем вы сравниваете Close[] баров c uptr и dntr? :-/ Вам нужно сравнивать данные индикаторных буферов. Удобней всего будет сделать функцию, которая будет возвращать данные нужных буферов. У вас гистограмма имеет два цвета: красный и зеленый. Пишем две функции:


//возвращает данные красного буфера
double Red(int shift)
{
double buf=iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, 3, shift);
return(buf);
}

//возвращает данные зеленого буфера
double Green(int shift)
{
double buf=iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, 2, shift);
return(buf);
}


Теперь можем запрашивать у этих функций данные любого (задается параметром shift) интересующего нас столбика гистограммы. Я не знаю какие данные хранятся в индикаторных буферах, но предположу, что это будет !0 - если столбик на гистограмме есть, и 0 - если столбика нет. Теперь идентифицируем сигналы:

Появился первый красный столбик после зеленых столбиков:

bool SellSignal()
{
//если последний столбик красный, а предпоследний зеленый
if(Red(1)!=0&&Green(2)!=0) return(true);

else return (false);
}


Появился первый зеленый столбик после красных столбиков:

bool BuySignal()
{
//если последний столбик зеленый, а предпоследний красный
if(Green(1)!=0&&Red(2)!=0) return(true);

else return (false);
}


Вот и все.

Или уж отправьте меня в документацию какую-нибудь, буду ума разума набираться


Такой документации нет и быть не может. Тут уже самому надо думать. Это как если бы Вам дали доски, саморезы, ножовку, шуруповерт и попросили сделать табуретку. Точно зная и понимая для чего предназначены все эти предметы, я думаю Вы бы легко додумались как смастерить эту табуретку. А если даже бы Вы не знали как пользоваться, скажем, шуроповертом, то всегда можно прочитать инструкцию по его использованию (документация в программировании). Но ни в какой инструкции к шуроповерту Вы не прочтете как с его помощью смастерить табуретку. Поэтому с пониманием всего арсенала инструментов MQL должно прийти и понимание что и как с его помощью можно сделать. А если не можете понимать, значит торопитесь и у Вас пробелы в знаниях.

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

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

=d> =d> =d>Даже близко не был от такого решения этой проблемы
Словами не передать......это сколько надо учиться, что бы до такого уровня дойти @-)
Спасибо огромное, пойду читать инструкции к шуруповерту)
Просьба, в течении месяца, если опять появлюсь с какой то проблемой - ИГнорируйте!

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

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

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

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

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

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

Войти

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

Войти

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


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

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