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

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


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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
AndreyGold ааа, я понял к чему Вы вопросы задаёте... Да к сожалению статистика портится, в утешение могу сказать, что если "чисто гипотетически" закрывать ровно в 0, то стата останется кривой - МТ "0" считает за +.
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Перейти

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

Перейти

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

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

Подскажите кто может пожалуйста прописал условие по пересечению МАСД всё нормально но не хватает функции контроля закрытия текущего бара нашол вот такую if (timepref == Time[0])return(0); но она не применима в старте может быть кто не будь знает как её изменить или как другую прописать
timepref = Time[0];

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
77павел пробуй так:
static datetime new_Bar;
if (new_Bar == Time[1]) return(false); //Если бар не закрыт - выход
new_Bar = Time[1];
и далее Ваш код. Он будет исполняться 1 раз на открытии текущего бара
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

Спасибо большое второй раз выручаете меня)))


Добавлено: 01-03-2015 06:16:43

И снова я с просьбой к Вам вдохновлённый тем что получилось прописать условия входов по масд прописать трал бу и даже процент от депо решил прикрутить фильтр в виде стохастика на более младшем тайм фрейме решил что возможно это сделать как масд вот таким способом
Snox1 = iStochastic(NULL,TPeriod,5,3,3,MODE_SMA,0,MODE_MAIN,0);
Snox2 = iStochastic(NULL,TPeriod,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);
Snox3 = iStochastic(NULL,TPeriod,5,3,3,MODE_SMA,0,MODE_MAIN,1);
Snox4 = iStochastic(NULL,TPeriod,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);
и всё работает но вот вопрос как прописать зоны перекупленности 20 и 80 в справке не на шол на форуме мт 4 в учебнике подобное на шол моему а вот про зоны не слово нет помогите кто может до утра искал не как :-s Изменено пользователем 77павел
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
77павел, Вы пытаетесь найти сложности там, где их нет...
Задайте внешние переменные типа: input int StohLevelH = 80;
Далее в коде проверяйте if (Snox1 >StohLevelH) ...
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

постараюсь вкратце объяснить. придумал кое какой подход к торговле, который нужно автоматизировать.

Так как легких путей не бывает ,решил изучить mql.
Начал вот с этих ресурсов: _http://book.mql4.com/ru _http://tlap.com/forum/ugolok-programmista/13/obuchenie-yazyku-mql4-pod-metatrader-4/4034

Столкнулся с проблемой,я не могу выполнять задания и примеры описанные там. Как я понял ,описания в книгах и видеоуроках к mql4 подходящие к metaeditor старых билдов. После 600 билда что то изменилось, но не могу понять что . Даже готовые операторы и примеры с книг не компилируюца . Подскажите ,может есть где то информация подробная что изменилось, или учебники под новые билды.

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

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

Скачай старый билд 509, компилируй в нем пока.

_http://tradelikeapro.ru/metatrader-4-build-604/

Ссылки внизу

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

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

Спасибо большое . Скомпилированные программы будут же работать в новых билдах?

ps.я походу учебы буду всякие вопросы нубские задавать, можно ж тут ,или есть специальный раздел?

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

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


Скомпилированные программы будут же работать в новых билдах?


Не продолжительное время, на форуме mql4 уже писали, что в скором времени отключат поддержку всего ПО написанного до 600 билда.

На сколько помню первые даты озвученные модератами ресурса ~ 1 год после релиза 600 билда, это связано с тем, что бы юзеры смогли спокойно адаптировать старые наработки под новую версию.

Поэтому сразу пиши под новой версией, тем более что там ничего сложного нет.
  • Лайк 3
Ссылка на сообщение
Поделиться на другие сайты

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

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

workLot = DoubleToString(slInMoney/(slInPoints*pointValue), 2);

и проблема в том, что лот выводится не с точностью два знака, а 16
ну например 0,8100000000000001
причем при изменении денежного баланса, начинает выводить как положено, с точностью до двух знаков, потом баланс поменялся, опять выводит 16 знаков

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

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

Да, похоже, что была ошибка в типах при конвертации числа в строку, привел все переменные к нужному типу, стало нормально.

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

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

Доброго времени суток! помогите пожалуйста советом как можно передать структуру в функцию? и вообще возможно ли это в mql4


Добавлено: 04-03-2015 09:30:43

пробовал как на си
struct mystruct
{
double first_arr[10];
int second_arr[10];
};

void myfunc (struct mystruct STRUCTURA)
{
тело функции
}
выдает ошибку: 'mystruct' - struct can't be defined in parameters list Изменено пользователем koleber
Ссылка на сообщение
Поделиться на другие сайты

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

Вам надо определить переменную с типом структуры и её передавать в функцию.
В описании функции слово struct писать не надо

struct mystruct
{
double first_arr[10];
int second_arr[10];
};
mystruct MYS1;

myfunc (MYS1);

void myfunc (mystruct STRUCTURA)
{
тело функции
}

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

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

А если я уже определил структурой массив array[] как мне его передать в функцию ссылкой ?

struct mystruct
{
double first_arr[10];
int second_arr[10];
};

mystruct array[];
...???


Добавлено: 04-03-2015 10:59:00

И еще в описании функции нам нужно указать тип, а если это структура то что за тип тогда?

struct mystruct
{
double first_arr[10];
int second_arr[10];
};

mystruct MYS1;

void myfunc (MYS1)
{

}
выдает ошибку: 'MYS1' - declaration without type Изменено пользователем koleber
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
koleber ???
Я-ж написал... Вы определяете пользовательский тип (структура) с названием типа - mystruct.
Ещё раз с поправкой на Вашу ситуацию: (может Вам с чего попроще начинать изучать мкл?)
struct mystruct
{
double first_arr[10];
int second_arr[10];
};
mystruct array[]; // я-бы не использовал зарезервированные слова в виде названий переменных...

myfunc (array);

void myfunc (mystruct STRUCTURA[])
{
тело функции
STRUCTURA[1].first_arr[2] = ...
}
Ссылка на сообщение
Поделиться на другие сайты

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

использовав то что вы написали:
struct mystruct
{
double first_arr[10];
int second_arr[10];
};
mystruct array[]; // я-бы не использовал зарезервированные слова в виде названий переменных...

myfunc (array);

void myfunc (mystruct STRUCTURA[])
{
тело функции
STRUCTURA[1].first_arr[2] = ...
}
получил такие ошибки:
'myfunc' - declaration without type
'mystruct' - objects are passed by reference only

что я делаю не так?

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

Обучение языку MQL4 под MetaTrader 4 Опубликовано
koleber надо передавать по ссылке и определять длину Ваших массивов.
void myfunc (mystruct &STRUCTURA[])
Вот скрипт, который передаёт в функцию структуру, похожую на Вашу (только я её определил).

Prob_struct.mq4

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

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

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

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

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


Накидал себе простенький индикатор, который мне выводит на экран рабочий лот в зависимости от заданного стоплосса в пунктах.



с предыдущей проблемой разобрался, осталась такая:
Когда я первый раз накидываю индикатор на экран, потом провожу сделки, соответственно меняется баланс, то и лот на экране меняется. После того как я закрыл-открыл терминал по новой (с открытым окном с индикатором), то после изменения баланса лот уже не меняется. Код прикрепляю.

LotCalc.mq4

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

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

Доброго времени суток ув. программисты...возникла проблема...пытаюсь написать сеточник, но при тестировании выдает ошибку 4108 при закрытии всех ордеров...знаю что связано с тикетом, но как решить эту проблему не знаю...кусок кода:
bool Close_Orders(int mag, int otype)

{
bool error = false;
int _OR_err = GetLastError();

for (int i = OrdersTotal() - 1; i >= 0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == mag && OrderType() == otype)
{
if(otype == OP_BUY || otype == OP_SELL)
{
if (otype == OP_BUY) RefreshRates();
if(!OrderClose(OrderTicket(), OrderLots(), MarketInfo(Symbol(),MODE_BID), Slippage, clrBlue)) error = true; else
Print("Ошибка закрытия ордера "+IntegerToString(_OR_err));

if (otype == OP_SELL) RefreshRates();
if(!OrderClose(OrderTicket(), OrderLots(), MarketInfo(Symbol(),MODE_ASK), Slippage, clrRed)) error = true; else
Print("Ошибка закрытия ордера "+IntegerToString(_OR_err));
}
}
Sleep(500);
}
}
return(false);
}

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

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

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

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

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

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

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

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

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

Войти

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

Войти

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


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

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