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

Обучение языку MQL5 под MetaTrader 5


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

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

Добрый день.

Делаю первые шаги в mql5. Сгенерировал советник на основе индикаторов RSI М5 и RSI M15. Подскажите, как настроить так, чтобы сделка совершалась по срабатыванию обоих сигналов одновременно? Вес для обоих стоит 1. Если вес ставлю по 0.5, то сделки не совершаются совсем. Параметр Signal threshold value to open = 90.

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

  • Ответов 296
  • Создано
  • Последний ответ

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

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

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

Здравствуйте, друзья юные программисты! В этой ветке предлагаю обсуждать все возникающие вопросы в процессе освоения тонкостей языка MQL5. В настоящий момент мы записываем цикл уроков по MQL5, пока

Перейти

Уважаемые коллеги, добавлю от себя... По ссылке полный справочник по функциям MQL5, с примерами, который вы можете скачать себе локально. Хорошая штука, рекомендую :) https://yadi.sk/d/BBFYJw_-trnbN

Перейти

Нечеловеческое спасибо за тему >000 ЧИТАЕМ В ПЕРВУЮ ОЧЕРЕДЬ ПОЛНАЯ ДОКУМЕНТАЦИЯ ПО MQL5, ОНЛАЙН, БЕСПЛАТНО И БЕЗ СМС Руководство по интерфейсу // Алгоритимеческий трейдинг на MQL5 // Описание те

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

Доброго времени суток Господа Программисты.

Подскажите пожалуйста, что исправить в данной функции, что бы метка ставилась только на крайнем экстремуме, а не во всех местах остановки цены


Спойлер



void _GetExtremumZZPrice()
{
int ke = 0; // будем в них подсчитывать количество меток
int ZZHandle;
double ZZ[];
datetime Time[];


ZZHandle = iCustom(_Symbol, PeriodPatterns, "Examples\\Zigzag", DepthZZ, DeviationZZ, BackstepZZ);
if (ZZHandle
ArraySetAsSeries(ZZ,true);

if (CopyBuffer(ZZHandle,0,1,2,ZZ) return;

int copied=CopyTime(NULL,0,1,2,Time);
if(copied {
Print("Не удалось скопировать времена открытия");
return;
}


bool created;// будем получать результат попытки создания объекта
for(int i=0;i {
if(ZZ!=0 && ZZ!=EMPTY_VALUE)// нашли точку
{
if(ke {
//--- попробуем создать объект
created=ObjectCreate(0,string(ZZ),OBJ_ARROW_LEFT_PRICE,0,Time,ZZ);
if(created)// если создался - сделаем ему тюнинг
{
//--- установим цвет метки
ObjectSetInteger(0,string(ZZ),OBJPROP_COLOR,clrYellow);
//--- установим стиль окаймляющей линии
ObjectSetInteger(0,string(ZZ),OBJPROP_STYLE,0);
//--- установим размер метки
ObjectSetInteger(0,string(ZZ),OBJPROP_WIDTH,1);
ke++;
}
}
}
}
}

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

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

а не во всех местах остановки цены



Данная функция ВООБЩЕ НЕ РАБОТОСПОСОБНА! В ней куча ошибок! Приведите скрин, что у вас получилось и что вы хотите.
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL5 под MetaTrader 5 Опубликовано
Цитата

Данная функция ВООБЩЕ НЕ РАБОТОСПОСОБНА! В ней куча ошибок! Приведите скрин, что у вас получилось и что вы хотите.



Извините, я думал Вы догадаетесь поставить параметры индикатора

input ENUM_TIMEFRAMES PeriodPatterns = PERIOD_H4;
input int DepthZZ = 12;
input int DeviationZZ = 5;
input int BackstepZZ = 3;

Хочу чтобы остались только метки на перегибе (экстремуме) ZigZaga , а остальные не отображались




Добавлено: 25-11-2018 16:49:52

У меня работает , но вот так. Выделенные метки нужно оставить остальные убрать

2018-11-25_19-32-58.png

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

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

У меня работает , но вот так.



Проблем с подстановкой параметров у меня нет!
Везде где нужно обратиться к элементу массивов ZZ и Time вы совершили ошибку. Такой код даже не скомпилируется, я не говорю даже о запуске в MT5.
Может код предоставлен другой в отличии что на скрине?
В этом коде в цикле rof, ZZ и Time меняем на
ZZ и Time
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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


Вот полный код советника ;) который и компилируется и криво работает ( по крайней мере у меня)


fcplm как я говорил с входными параметрами нет проблем. Другое дело когда предоставляешь код, пользуйся кнопкой вставить "код". Как раз в твоем случае "форум съел" фигурные [] скобки, на отсутствие которых я обратил внимание.
Твой код действует согласно логике правильно. Так как ты пишешь не индикатор а советник, тебе также предстоит написать код который будет убирать лишние значения.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL5 под MetaTrader 5 Опубликовано
Цитата

Так как ты пишешь не индикатор а советник, тебе также предстоит написать код который будет убирать лишние значения



Это уже будет вторая задача. а я пока с первой не разобрался :(
Ссылка на сообщение
Поделиться на другие сайты

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

только на экстремумах


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

Добавлено: 26-11-2018 16:41:21

По логике кода происходит так. Прорисовывается зигзаг в низ, это дает сигнал на обозначение уровня. На следующей свече, цена ушла еще ниже, зигзаг рисуется еще ниже, а это дает сигнал прорисовать еще уровень. И так далее. А прошлые уровни ты не удаляешь! Вот и получается захламленность. Изменено пользователем MikR0ReR
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

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

получится?


Получится!

Подумай! Твой индюк состоит из ZigZag, к та муже задачи один в один (буковка в буковку, циферка в циферку). Нафига изобретать велосипед, вози код ZigZag и поменяй объект отрисовки, не линию, а поставь значение цены. Изменено пользователем MikR0ReR
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

  • 1 month later...
  • 2 weeks later...
Обучение языку MQL5 под MetaTrader 5 Опубликовано

В справочнике есть функция OrderSend есть пример для реализации

#define EXPERT_MAGIC 123456   // MagicNumber эксперта
//+------------------------------------------------------------------+
//| Открытие позиции Buy |
//+------------------------------------------------------------------+
void OnStart()
{
//--- объявление и инициализация запроса и результата
MqlTradeRequest request={0};
MqlTradeResult result={0};
//--- параметры запроса
request.action =TRADE_ACTION_DEAL; // тип торговой операции
request.symbol =Symbol(); // символ
request.volume =0.1; // объем в 0.1 лот
request.type =ORDER_TYPE_BUY; // тип ордера
request.price =SymbolInfoDouble(Symbol(),SYMBOL_ASK); // цена для открытия
request.deviation=5; // допустимое отклонение от цены
request.magic =EXPERT_MAGIC; // MagicNumber ордера
//--- отправка запроса
if(!OrderSend(request,result))
PrintFormat("OrderSend error %d",GetLastError()); // если отправить запрос не удалось, вывести код ошибки
//--- информация об операции
PrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order);
}


Что обозначает {0} в MqlTradeRequest request и MqlTradeResult result? Изменено пользователем 0ll
Ссылка на сообщение
Поделиться на другие сайты

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

Добрый день. Подскажите, почему при работе советника из урока "MQL5: Пишем советник на Мартингейле" выводится ошибка: "Не удалось установить TakeProfit, код ошибки 10036"
10036 - TRADE_RETCODE_POSITION_CLOSED - Позиция с указанным POSITION_IDENTIFIER уже закрыта
Код советника из урока не изменял.

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

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

Что обозначает {0}


MqlTradeRequest и MqlTradeResult являются структурами, следовательно команда {0} заполняет значения элементов, в данном случае предполагаю, что эти значения заполняются "0". В режиме отладки можно это проверить.

"Не удалось установить TakeProfit, код ошибки 10036"


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

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



Добавлено: 30-01-2019 12:43:48

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

Код вставить не даёт форум, вставлю картинку с кодом.

что.png

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

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

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

Вы заполняете переменные из одного буфера, но разными значениями! на одном проходе цикла i может быть заполнена только одна переменная.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

на одном проходе цикла i может быть заполнена только одна переменная.




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

Insid_Outside_Bar.mq5

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

Обучение языку MQL5 под MetaTrader 5 Опубликовано
s22aa обычно с копи/паста и начинают программировать, так что Вы на правильном пути ;)
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

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

http://tradelikeapro.ru/pishem-ea-martin-na-mql5/

Перезаписали урок в связи с изменениями в MT5 metaeditore

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

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

Подскажите почему индикатор рисует точки там где их быть не должно.

С помощью "Вложение:выберите файл" прикрепил картинку и индюк, но предварительный просмотр их мне не показывает :(
Вставить код индюка с помощью кнопки "вставить код" вообще ругается на какие то ссылки.Бедааа.

Insid_Outside_Bar.mq5
2019-02-11_20-43-34.png

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

  • 4 weeks later...
Обучение языку MQL5 под MetaTrader 5 Опубликовано


Подскажите почему индикатор рисует точки там где их быть не должно.

С помощью "Вложение:выберите файл" прикрепил картинку и индюк, но предварительный просмотр их мне не показывает :(
Вставить код индюка с помощью кнопки "вставить код" вообще ругается на какие то ссылки.Бедааа.

Insid_Outside_Bar.mq5

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

  • 3 weeks later...
Обучение языку MQL5 под MetaTrader 5 Опубликовано

Insid_Outside_Bar.mq5



ZloyZam, ваш ответ видел давно и только сегодня допёр, что ответ в прикреплённом индикаторе )))

Сегодня выходные, поэтому посмотреть как работает ваш вариант не могу, но проблему рисования лишних точек, я решил заполнением буферов нулями

ArrayFill (BuffDn, prev_calculated, rates_total - prev_calculated, 0);

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

Но всё равно спасибо за ответ.
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

Войти

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

Войти

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


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

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