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

От xbms, 13 апреля, 2013 в Уголок Программиста

#3626


Столкнулся с такой проблемой, если
if(Close[1]>High[2]) // if(iClose[(1.00001)]>High[(1.00001)])
{
------
}else
if(Close[1][(1.00001)][(1.00001)])
{
-------
}
Как сравнить более точно если так получилось что клозе и не больше и не меньше хайя?



вопрос точно такой что и ранее про стопы. и ты продолжаешь сравнивать даблы :d :d :d
бери разность и задавай точность сравнения, в примере Oll это идеально показано, только вместо Point можешь поставить свою цифру(точность исчисления)
#3627

Как сравнить более точно если так получилось что клозе и не больше и не меньше хайя?

Вам не понадобится это. как бы не сравнивали, сова на долгосроке покажет сравнимые резы.
#3628


Как сравнить более точно если так получилось что клозе и не больше и не меньше хайя?


пропустил вопрос.
поддерживаю. это сферический форекс в вакууме, на реальном рынке таких ситуаций может одна или две в году))) идеальных Доджи не бывает.
#3629

Условия: выставляю отложенный ордер черт знает как далеко от рынка. Затем выставляю на минимальном расстояние ( величина стоп уровня ) SL и TP. В итоге после отправки запроса получаю ошибку не правильные стопы.
Причем ошибка в случаях:


  • Короткая позиция - ошибка когда расстояние от цены открытия до SL равна стоп уровню. При попытке выставить ТР размером стоп уровня все хорошо.

  • Длинная позиция - ошибка когда расстояние от цены открытия до TP равна стоп уровню. При попытке выставить SL размером стоп уровня все хорошо.


Все это возникает только на EURJPY брокер Roboforex (Проверял как на реальном счете так и на демо + на разных компьютерах).
Вопрос такой какого??? Или я чего то не понимаю?
#3630
Qj а если СЛ = стоплевел+1пипс то всё в порядке? Я к тому - в чём смысл установки СЛ = стоплевел? ну добавь 1,2, 5 пипс, ибо в момент активации отложки спред раздвинется и ордер сразу закроется - не вижу смысла, может у Вас есть хитрый план, вот его интересно почитать...
Конкретно по вопросу ничего сказать не могу - ни разу не приходилось ставить близкие стопы.
#3631


Qj а если СЛ = стоплевел+1пипс то всё в порядке? Я к тому - в чём смысл установки СЛ = стоплевел? ну добавь 1,2, 5 пипс, ибо в момент активации отложки спред раздвинется и ордер сразу закроется - не вижу смысла, может у Вас есть хитрый план, вот его интересно почитать...
Конкретно по вопросу ничего сказать не могу - ни разу не приходилось ставить близкие стопы.


Да для коротких позиций так и есть. Все окай становится. Я просто для страховки ставлю, чтобы если нету интернета чтобы отложки закрылись.
Просто получается что вот эти данные не соответствуют действительности для Roboforex EURJPY, а если они не соответствуют то что вообще правильно то работает.

Изменено 16 июня, 2016 пользователем Qj

#3632

А - понятно... ну не расстраивайся, не бери в голову. Спасибо за инфу.

#3633

Шалом, Я хочу спросить: У меня есть машка, допустим настолько большого периода, что почти не двигается т.ч. по сути линия, вверх идет сетка SellStop ордеров, вниз BuyStop, если сработал первый ордер из какой-либо сетки, то вторую сетку надо закрыть.
Как это сделать проще всего? Проверять постоянно открылся ордер или нет(вообще возможно ли это с отложками)?

#3634
SVS696 вверх идёт сетка SellStop ордеров? может лимит? ну это не важно. При активации отложки у неё меняется тип с OP_BUYSTOP -> OP_BUY. Как это определить - зависит от задач совы. Если одновременное присутствие разнонаправленных рыночных не предусмотрено - то при появлении 1-го рыночного, отложки противоположного направления удаляются.
Если возможны локи с магиком совы, то надо запоминать тикеты 1-х ордеров в каждой сетке и отслеживать активацию через контроль типа первого ордера сетки ( ближайшего к цене ).
#3635


SVS696 вверх идёт сетка SellStop ордеров? может лимит? ну это не важно.


Ну это уже не я так придумал)

Вообще я примерно такие варианты и прикидывал, но подумал мало ли есть более простой подход.

Хотя я сделал все же проще и с лимитными ордерами плюнув на один единственный стоп ордер.

Изменено 17 июня, 2016 пользователем SVS696

#3636


Спойлер


Очередной вопрос к Сергею по урокам программированию MQL: "Программирование советника на мартингейле".

Как всегда, буква в букву два дня смотрел и переписывал урок по мартину.
Ошибок и некритических замечаний не получил.
По итогу: управления от iMa нет (включал/выключал - нет), работают только покупки под "машкой", мультипликатор (сам мартин) не работает - лотность одна и та же.


Добавлено: 15-06-2016 16:40:43



Добавлено: 15-06-2016 16:41:09



Добавлено: 15-06-2016 16:41:41

Да, в журнале ошибок чисто. Аттачу (см. выше)

Снизу прикрепил советник работает как в уроке. Спасибо Сергею за его уроки по MQL, теперь для себя пишу советники :d



Мультипликатор (коэффициент мартингейла) не заработал. Очень однонаправленно работает МА-шка: открываются покупки и нет продаж.
У Сергея - чудный стейт за 2015, а у меня не получается. Где-то ошибка или мухлеж.
#3637
Спойлер



Спойлер


Очередной вопрос к Сергею по урокам программированию MQL: "Программирование советника на мартингейле".

Как всегда, буква в букву два дня смотрел и переписывал урок по мартину.
Ошибок и некритических замечаний не получил.
По итогу: управления от iMa нет (включал/выключал - нет), работают только покупки под "машкой", мультипликатор (сам мартин) не работает - лотность одна и та же.


Добавлено: 15-06-2016 16:40:43




Добавлено: 15-06-2016 16:41:09



Добавлено: 15-06-2016 16:41:41

Да, в журнале ошибок чисто. Аттачу (см. выше)

Снизу прикрепил советник работает как в уроке. Спасибо Сергею за его уроки по MQL, теперь для себя пишу советники :d



Мультипликатор (коэффициент мартингейла) не заработал. Очень однонаправленно работает МА-шка: открываются покупки и нет продаж.
У Сергея - чудный стейт за 2015, а у меня не получается. Где-то ошибка или мухлеж.

У меня все норм открывает и бай и селл даже мартин
Спойлер


Если вы прикрепите свой советник я бы посмотрел где у вас ошибки
#3638

Этот вариант исправленного мартина я получил в ответ на мой первый ругательный опус.




Спойлер



Спойлер


Очередной вопрос к Сергею по урокам программированию MQL: "Программирование советника на мартингейле".

Как всегда, буква в букву два дня смотрел и переписывал урок по мартину.
Ошибок и некритических замечаний не получил.
По итогу: управления от iMa нет (включал/выключал - нет), работают только покупки под "машкой", мультипликатор (сам мартин) не работает - лотность одна и та же.


Добавлено: 15-06-2016 16:40:43




Добавлено: 15-06-2016 16:41:09



Добавлено: 15-06-2016 16:41:41

Да, в журнале ошибок чисто. Аттачу (см. выше)

Снизу прикрепил советник работает как в уроке. Спасибо Сергею за его уроки по MQL, теперь для себя пишу советники :d



Мультипликатор (коэффициент мартингейла) не заработал. Очень однонаправленно работает МА-шка: открываются покупки и нет продаж.
У Сергея - чудный стейт за 2015, а у меня не получается. Где-то ошибка или мухлеж.

У меня все норм открывает и бай и селл даже мартин
Спойлер


Если вы прикрепите свой советник я бы посмотрел где у вас ошибки

Martin.mq46 скач.

#3639

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

#3640
Спойлер


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


Vasiliy Pupkin если много сигналов я делаю так.
if(сигнал1 && сигнал2 && сигнал3 && сигнал4)
{
tp = NormalizeDouble(Ask + TakeProfit * Point, Digits);
ticket = OrderSend(Symbol(), OP_BUY, LotsFor10000, Ask, Slippage, 0, tp, "", Magic, 0, Blue);
}

Добавлено: 20-06-2016 16:48:26

Спойлер


Этот вариант исправленного мартина я получил в ответ на мой первый ругательный опус.




Спойлер



Спойлер


Очередной вопрос к Сергею по урокам программированию MQL: "Программирование советника на мартингейле".

Как всегда, буква в букву два дня смотрел и переписывал урок по мартину.
Ошибок и некритических замечаний не получил.
По итогу: управления от iMa нет (включал/выключал - нет), работают только покупки под "машкой", мультипликатор (сам мартин) не работает - лотность одна и та же.


Добавлено: 15-06-2016 16:40:43




Добавлено: 15-06-2016 16:41:09



Добавлено: 15-06-2016 16:41:41

Да, в журнале ошибок чисто. Аттачу (см. выше)

Снизу прикрепил советник работает как в уроке. Спасибо Сергею за его уроки по MQL, теперь для себя пишу советники :d



Мультипликатор (коэффициент мартингейла) не заработал. Очень однонаправленно работает МА-шка: открываются покупки и нет продаж.
У Сергея - чудный стейт за 2015, а у меня не получается. Где-то ошибка или мухлеж.

mischkus у меня все норм открывает и бай и селл даже мартин
Спойлер


Если вы прикрепите свой советник я бы посмотрел где у вас ошибки


mischkus все работает верно. Допустим сигнал на sell советник открывает ордер на продажу, если цена идет не в нашу сторону то каждые n пунктов указанные в параметре step будет открываться ордер на продажу, независимо где сейчас цена выше или ниже линии МА 55. Прогоните д за период с 4.01.2016 по текущей день и установите параметры TP 60 Step 25 и 8.01.2016 откроется сделка на покупку.

Изменено 21 июня, 2016 пользователем Foxonn

#3641
Vasiliy Pupkin если сигналы должны приходить одновременно ( на одной свече ), то можно делать так, как написал Foxonn.
Если сигналы не одновременные или смешанные, то тут надо определиться с временным интервалом - сколько бар анализировать на наличие сигналов? Логика будет несколько сложнее - надо делать или в цикле или сохранять сигнал в переменной с неким временем жизни...
#3642

Не могу понять, почему советник на ровном месте виснет...

Причем рандомным образом. Клин в функции Signal () в моменте когда мы ждем завершения часового бара. В качестве отладки добавил даже информер, но он не помогает, просто вижу в определенный момент зависание исполнения.


Добавлено: 22-06-2016 03:30:56

Хммм... Убрал while(true) и виснуть вроде перестало, но в данном случае внутри while true должен был работать информер с счетчиком, а он не работал Оо

Deviation.mq44 скач.

Изменено 22 июня, 2016 пользователем SVS696

#3643


Не могу понять, почему советник на ровном месте виснет...

Причем рандомным образом. Клин в функции Signal () в моменте когда мы ждем завершения часового бара. В качестве отладки добавил даже информер, но он не помогает, просто вижу в определенный момент зависание исполнения.


Добавлено: 22-06-2016 03:30:56

Хммм... Убрал while(true) и виснуть вроде перестало, но в данном случае внутри while true должен был работать информер с счетчиком, а он не работал Оо


Так ведь while(true) это бесконечный цикл. И если счетчик не работал, значит цикл никогда не закончится и советник виснет и терминал вешает.
#3644


Так ведь while(true) это бесконечный цикл. И если счетчик не работал, значит цикл никогда не закончится и советник виснет и терминал вешает.


...и пока не сработает return false/return/break
#3645



Так ведь while(true) это бесконечный цикл. И если счетчик не работал, значит цикл никогда не закончится и советник виснет и терминал вешает.


...и пока не сработает return false/return/break

Вот, return был... Но до него не доходило из-за того, что новый бар уже не срабатывал как условие входа в условие где return, в доказательство этому повисший счетчик отсчета (Сколько осталось до нового часового бара).

Из всего этого я сделал вывод, что для datetime необходимы тики, без них - зависон, да и iTime аналогично не берет новые значения с графика.

Изменено 23 июня, 2016 пользователем SVS696

#3646


Вот, return был... Но до него не доходило из-за того, что новый бар уже не срабатывал как условие входа в условие где return, в доказательство этому повисший счетчик отсчета (Сколько осталось до нового часового бара).
Из всего этого я сделал вывод, что для datetime необходимы тики, без них - зависон, да и iTime аналогично не берет новые значения с графика.


дело не в iTime и типе datetime, а в том что у тебя основной код варится в онтике, который срабатывает только по ткиу брокера, вот и вся заморочка. либо ты налажал с меcтом объявления двух сравниваемых datetime. то есть ошибка в алгоритме.

ну а так, вобщем, чтобы не страдать такой фигней как алко/наркозависимость от тиков брокера, я давным давно пишу код так:

добавляю в конце инита перед системным ретёрном условие
if (!IsTesting())
{
EventSetMilisecondTimer(50);
OnTimer();
}

дальше описываем и онтик и онтаймер:
void OnTick()
{
if (!IsTesting()) return;
Base();
}

void OnTimer()
{
if (IsTesting()) return;
Base();
}

ну и самый главный блок:
void Base()
{
if (!IsTradeAlowed()) return;
/////////// и пишу тут свою логику, как будто это ОнТик
}

для красоты кода следует еще прописать в ондеините EventKillTimer(), но по идее компилятор сам его туда добавляет если ты забыл это сделать.

для чего вся фишка так расписана: в тестере работает только блок онтик, онтаймер в нем не пашет. при этом чтобы не было глюков кода и параллельного исполнения или внезапного стектрейсоверфлоу я блочу онтик при торговле на реальном сервере(так как онтик и онтаймер будут пахать параллельно друг другу) и пускаю код только по онтаймеру.

Изменено 23 июня, 2016 пользователем dermitay

#3647


Спойлер


Вот, return был... Но до него не доходило из-за того, что новый бар уже не срабатывал как условие входа в условие где return, в доказательство этому повисший счетчик отсчета (Сколько осталось до нового часового бара).
Из всего этого я сделал вывод, что для datetime необходимы тики, без них - зависон, да и iTime аналогично не берет новые значения с графика.


дело не в iTime и типе datetime, а в том что у тебя основной код варится в онтике, который срабатывает только по ткиу брокера, вот и вся заморочка. либо ты налажал с меcтом объявления двух сравниваемых datetime. то есть ошибка в алгоритме.

ну а так, вобщем, чтобы не страдать такой фигней как алко/наркозависимость от тиков брокера, я давным давно пишу код так:

добавляю в конце инита перед системным ретёрном условие
if (!IsTesting())
{
EventSetMilisecondTimer(50);
OnTimer();
}

дальше описываем и онтик и онтаймер:
void OnTick()
{
if (!IsTesting()) return;
Base();
}

void OnTimer()
{
if (IsTesting()) return;
Base();
}

ну и самый главный блок:
void Base()
{
if (!IsTradeAlowed()) return;
/////////// и пишу тут свою логику, как будто это ОнТик
}

для красоты кода следует еще прописать в ондеините EventKillTimer(), но по идее компилятор сам его туда добавляет если ты забыл это сделать.

для чего вся фишка так расписана: в тестере работает только блок онтик, онтаймер в нем не пашет. при этом чтобы не было глюков кода и параллельного исполнения или внезапного стектрейсоверфлоу я блочу онтик при торговле на реальном сервере(так как онтик и онтаймер будут пахать параллельно друг другу) и пускаю код только по онтаймеру.


Хм, возьму на заметку. А с циклами я проблему решил убрав их и немного подкорректировав алгоритм.
#3648


Спойлер


Очередной вопрос к Сергею по урокам программированию MQL: "Программирование советника на мартингейле".

Как всегда, буква в букву два дня смотрел и переписывал урок по мартину.
Ошибок и некритических замечаний не получил.
По итогу: управления от iMa нет (включал/выключал - нет), работают только покупки под "машкой", мультипликатор (сам мартин) не работает - лотность одна и та же.


Добавлено: 15-06-2016 16:40:43



Добавлено: 15-06-2016 16:41:09



Добавлено: 15-06-2016 16:41:41

Да, в журнале ошибок чисто. Аттачу (см. выше)

Снизу прикрепил советник работает как в уроке. Спасибо Сергею за его уроки по MQL, теперь для себя пишу советники :d


Медленно, но верно уже просматриваю программные коды и даже начинаю что-то понимать.

Вопрос по уроку №4 "Программирование советника на мартингейле": какие изменения надо внести, чтобы вместо покупок советник открывал продажи и наоборот? Замена "+" на "-" в стр. 160 и 173 вопрос не решила.

2016-06-30_33.jpg

#3649


Медленно, но верно уже просматриваю программные коды и даже начинаю что-то понимать.

Вопрос по уроку №4 "Программирование советника на мартингейле": какие изменения надо внести, чтобы вместо покупок советник открывал продажи и наоборот? Замена "+" на "-" в стр. 160 и 173 вопрос не решила.



посыл заявки брокеру на открытие ордера делается функцией OrderSend(...), почитай мануал.
твой вопрос решается сменой мест строк 177 и 164, 157 и 170, но ты показал лишь часть кода, общая логика вобще не видна.
#3650



Медленно, но верно уже просматриваю программные коды и даже начинаю что-то понимать.

Вопрос по уроку №4 "Программирование советника на мартингейле": какие изменения надо внести, чтобы вместо покупок советник открывал продажи и наоборот? Замена "+" на "-" в стр. 160 и 173 вопрос не решила.



посыл заявки брокеру на открытие ордера делается функцией OrderSend(...), почитай мануал.
твой вопрос решается сменой мест строк 177 и 164, 157 и 170, но ты показал лишь часть кода, общая логика вобще не видна.


dermitay, радостно пробовать разные варианты. Аттачу мартина из уроков Сергея, задача та же: инвертировать покупки в продажи с закрытием одних по приходу других (управление МА).

Martin.mq49 скач.

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

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