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

От pavlus777, 1 августа, 2016 в Уголок Программиста

#176

Добрый день.

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

#177

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

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


Спойлер



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++;
}
}
}
}
}

#178

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



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

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



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

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

Изменено 25 ноября, 2018 пользователем Leery

#180

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



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

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

123.mq511 скач.
123.ex55 скач.

#182


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


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

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



Это уже будет вторая задача. а я пока с первой не разобрался :(
#184

вторая задача


Тогда я не понимаю!
Какая первая задача?
#185
Цитата

Какая первая задача?



Сначала оставить метки только на экстремумах
#186

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


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

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

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

Изменено 26 ноября, 2018 пользователем MikR0ReR

#187

а вытащить только перегибы как Mql4 здесь не получится?

#188

получится?


Получится!

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

Изменено 26 ноября, 2018 пользователем MikR0ReR

Автор#189

Новый урок:
http://tradelikeapro.ru/mql5-ea-na-vneshnem-indikatore/

#190

В справочнике есть функция 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?

Изменено 15 января, 2019 пользователем 0ll

#191

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

#192

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


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

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


Счет какой Неттинговый или Хеджинговый?
#193



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

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

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

что.png

Изменено 30 января, 2019 пользователем s22aa

#194

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

Вы заполняете переменные из одного буфера, но разными значениями! на одном проходе цикла i может быть заполнена только одна переменная.
#195

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




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

Insid_Outside_Bar.mq58 скач.

#196
s22aa обычно с копи/паста и начинают программировать, так что Вы на правильном пути ;)
Автор#197

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

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

#198

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

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

Insid_Outside_Bar.mq510 скач.
2019-02-11_20-43-34.png

#199


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

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

Insid_Outside_Bar.mq57 скач.

#200

Insid_Outside_Bar.mq5



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

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

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

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

Но всё равно спасибо за ответ.

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

Перейти к списку тем
Форум · 2.0.20260627.0025