vikneo Опубликовано 5 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 5 мая, 2019 Здравствуйте всем! Решил скопировать с видеоурока советника с трейлингом, при компиляции выскакивают 3 предупреждения и советник не торгует, все перепроверил, не могу понять что не так. Заниматься начал не давно, помогите подсказкой, за ранее большое спасибо. Test_Trailing.rar Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rever27 Опубликовано 5 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 5 мая, 2019 Здравствуйте всем! Решил скопировать с видеоурока советника с трейлингом, при компиляции выскакивают 3 предупреждения и советник не торгует, все перепроверил, не могу понять что не так. Заниматься начал не давно, помогите подсказкой, за ранее большое спасибо. Не было открытия, потому что было OnTick.Ошибки это предупреждения о том, что не объявлена переменная для открытия ордера и модификации. По хорошему ее нужно объявить и если ошибка - выдавать принт, либо дальнейшие действияTest__Tralling.mq4 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
vitek01 Опубликовано 6 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 мая, 2019 Уважаемые комрады, а как свое изображение(картинку) создавать на графике, че то потыкал,потыкал, однако не хочет показываться, стесняется наверно) r) Ссылка на сообщение Поделиться на другие сайты More sharing options...
Partorius Опубликовано 6 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 мая, 2019 Подскажите, как закрыть часть сделки Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ar4i Опубликовано 6 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 мая, 2019 подскажите пожалуйста ссылку на работу со стрелочными индикаторами.интересует как правильно вставлять буфера iCustom в условие. например, известно что всего два буфера, стрелка вырисовываться на первом баре и не перерисовываться. по идее ожидал следующий вид: if(Open[1] && Price_Down > 0)...в общем на форуме наверное есть уже разбор это полета. Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 6 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 6 мая, 2019 а как свое изображение(картинку) создавать на графикеСмотри описание и пример здесьПодскажите, как закрыть часть сделкиOrderClose и там указываете, кол-во лотов которые надо закрыть, если их меньше чем лотов в ордере, то оставшаяся часть останется в рынке ( при этом тикет ордера изменится )как правильно вставлять буфера iCustom в условиепримерно так:double buf1 = iCustom(... );if ( Close[1] buf1 ) ... Изменено 6 мая, 2019 пользователем 0ll 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ar4i Опубликовано 7 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 мая, 2019 "примерно так:double buf1 = iCustom(... );if ( Close[1] buf1 ) ..." спасибо oll. но в случае повторной стрелки: сделка закрывается(причем по нулевому бару). открывается новая сделка в противоположном направление и снова через бар(уже по первому) перекрываться в верном направление.хотелось бы убрать это переоткрытие так,что бы сделка держалась строго до противоположной стрелки.пробовал твой вариант вариант с стр: http://tlap.com/forum/ugolok-programmista/13/obuchenie-yazyku-mql4-pod-metatrader-4/4034/1710.0ll_e_Check_Indi_1.mq4и пробовал так: if(Close[1] bufSell && last_type != OP_SELL) { last_type = OP_SELL; ...пока не получилось. 0ll_e_Check_Indi_1.mq4 Изменено 7 мая, 2019 пользователем Ar4i Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 7 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 мая, 2019 но в случае повторной стрелки: сделка закрывается(причем по нулевому бару). открывается новая сделка в противоположном направление и снова через бар(уже по первому) перекрываться в верном направление.Если "правильная" стрелка открывается только на 1-баре, зачем Вы контролируете стрелки на 0-баре? - просто не делайте этого. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ar4i Опубликовано 7 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 7 мая, 2019 Если "правильная" стрелка открывается только на 1-баре, зачем Вы контролируете стрелки на 0-баре? - просто не делайте этого. нет. проблема в том. что иногда идет повторная "правильная" стрелка. и так происходит(переоткрытие ?): как на приложенном рисунке. 2.png Изменено 7 мая, 2019 пользователем Ar4i Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 8 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 мая, 2019 нет. проблема в том. что иногда идет повторная "правильная" стрелка. и так происходит(переоткрытие ?)Проблема в закрытии - почему закрылась бай сделка и открылась селл? - вот там скорее всего и был "неправильный" сигнал селл. посмотрите это место в визуальном режиме или пишите в лог основания для открытия сделки, чтоб потом почитать последовательность. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ar4i Опубликовано 8 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 мая, 2019 там скорее всего и был "неправильный" сигнал селл все верно. дело в логике индикатора. "неправильный" сигнал ли? или неотрисовка "правильного"? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 8 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 мая, 2019 Вы писали: сделка закрывается(причем по нулевому бару). открывается новая сделка в противоположном направление и снова через бар(уже по первому) перекрываться в верном направление.Я так понял, что сигнал на 0-баре неустойчив, но на 1-баре уже не рисует, и вот теперь оказывается Вы сомневаетесь и в 1-баре... Если индюк может "передумать" и на 1-баре, то нужно торговать на 2, иначе решения нет...Можно попробовать ставить короткий СЛ с переворотом, но только до закрытия "входного" бара. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Partorius Опубликовано 10 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 мая, 2019 Подскажите, имеется стрелочный индикатор, вот таким образом я обрабатываю сигнал с него double buyarrow = iCustom(Symbol(), 0, "30_PD_Alert", SignalGap, EnableSoundAlert, EableMailAlert, 1, 1); double sellarrow = iCustom(Symbol(), 0, "30_PD_Alert", SignalGap, EnableSoundAlert, EableMailAlert, 0, 1); bool BuySignal=(buyarrow!=EMPTY_VALUE); bool SellSignal=(sellarrow!=EMPTY_VALUE);проблема в том, что по окончании следующего бара после стрелки значения BuySignal и SellSignal обнуляются т.к. нет сигнала, а мне необходимо знать какая стрелка была последней, как это сделать? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 10 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 мая, 2019 мне необходимо знать какая стрелка была последней, как это сделать?Нужна ещё одна переменная, например:int LastSig = -1; // -1 - сигнала не былоif ( BuySignal ) { LastSig = OP_BUY; .... } //наверняка у Вас есть этот блок - вставьте туда if ( SellSignal ) { LastSig = OP_SELL; ... } Ссылка на сообщение Поделиться на другие сайты More sharing options...
Partorius Опубликовано 10 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 мая, 2019 мне необходимо знать какая стрелка была последней, как это сделать?Нужна ещё одна переменная, например:int LastSig = -1; // -1 - сигнала не былоif ( BuySignal ) { LastSig = OP_BUY; .... } //наверняка у Вас есть этот блок - вставьте туда if ( SellSignal ) { LastSig = OP_SELL; ... } Не совсем понимаю что делать дальше с переменной LastSig Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 10 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 мая, 2019 Не совсем понимаю что делать дальше с переменной LastSigВы задали вопрос, я предложил решение, а что делать дальше мне не ведомо... это-ж Ваша стратегия торговли. Можно, например, не входить повторно в Бай, если предыдущий сигнал был Бай. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Partorius Опубликовано 10 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 мая, 2019 Не совсем понимаю что делать дальше с переменной LastSigВы задали вопрос, я предложил решение, а что делать дальше мне не ведомо... это-ж Ваша стратегия торговли. Можно, например, не входить повторно в Бай, если предыдущий сигнал был Бай. я просто не понимаю как работает Ваше предложение, если можно разжуйте пожалуйстаВот кусок кода Спойлер if ( isNewBar() ) { double buyarrow = iCustom(Symbol(), 0, "30_PD_Alert", SignalGap, EnableSoundAlert, EableMailAlert, 1, 1); double sellarrow = iCustom(Symbol(), 0, "30_PD_Alert", SignalGap, EnableSoundAlert, EableMailAlert, 0, 1); bool BuySignal=(buyarrow!=EMPTY_VALUE); bool SellSignal=(sellarrow!=EMPTY_VALUE); Comment(BuySignal, "\n", buyarrow, "\n", SellSignal, "\n", sellarrow, "\n", Signal); if (CountSell() == 0) { if (SellSignal > 0 && fTimeInZone3s()) { CloseBuy(); SL = NormalizeDouble(Bid + StopLoss * Point, Digits); TP = NormalizeDouble(Bid - TakeProfit * Point, Digits); ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, comment, Magic, 0, Red); if (ticket >0) { if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES) == true) OrderModify(ticket, OrderOpenPrice(), SL, TP, 0); } } } логика простая если последняя стрелка sellarrow и время соответствующее, то открываем в sell, если buyarrow то в buy Изменено 11 мая, 2019 пользователем 0ll Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 11 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 мая, 2019 логика простая если последняя стрелка sellarrow и время соответствующее, то открываем в sell, если buyarrow то в buyТ.е. получаем новый сигнал, но время не то, сигнал запоминаем, дожидаемся нужного времени и только тогда входим по последнему сигналу?Вот так можно: Спойлер static int LastSig = -1;if ( isNewBar() ) { double buyarrow = iCustom(Symbol(), 0, "30_PD_Alert", SignalGap, EnableSoundAlert, EableMailAlert, 1, 1); double sellarrow = iCustom(Symbol(), 0, "30_PD_Alert", SignalGap, EnableSoundAlert, EableMailAlert, 0, 1); if (buyarrow!=EMPTY_VALUE) LastSig = OP_BUY; if (sellarrow!=EMPTY_VALUE) LastSig = OP_SELL; Comment(BuySignal, "\n", buyarrow, "\n", SellSignal, "\n", sellarrow, "\n", Signal); if (LastSig == OP_SELL && CountSell() == 0 && fTimeInZone3s() ) { CloseBuy(); SL = NormalizeDouble(Bid + StopLoss * Point, Digits); TP = NormalizeDouble(Bid - TakeProfit * Point, Digits); ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, 0, 0, comment, Magic, 0, Red); if (ticket >0) { if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES) == true) OrderModify(ticket, OrderOpenPrice(), SL, TP, 0); } } Ссылка на сообщение Поделиться на другие сайты More sharing options...
vitek01 Опубликовано 16 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 мая, 2019 При тестирований очень медленно все это дело, скажите это зависит от мощности пк или это тестер такой тормознутый? Приходится по тест проводить... trlolo Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 16 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 16 мая, 2019 vitek01 понятно, что зависит от мощности/памяти, но большую роль играет качество кода, когда программист понимает, как например организуется цикл в процессоре, как происходит присвоение значения переменной или сравнение двух величин - поневоле начинаешь придумывать наименее затратный алгоритм. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 17 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 мая, 2019 бОльшая часть советников работает по индикаторам, либо по свечному анализу. Советников, использующих в логике конкретно тики - единицы...Отсюда следует, что основная причина тормознутости ботов- это ненужная обработка информации на каждом тике... Кстати, к таковой относится реализация инфопанелей в составе советника, которая показывает в т.ч. спред...Я не много написал советников, но единственный случай, когда бот реально работал на всех тиках- это закрытие по профиту, либо трал, да и тот, который считает расстояние на каждом тике...п.с. возможно пропустил еще какую то жизненную ситуацию, где нужно обрабатывать каждый тик.п.п.с. все написанное не относится к скальперам. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 17 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 мая, 2019 единственный случай, когда бот реально работал на всех тиках- это закрытие по профиту, либо трал, да и тот, который считает расстояние на каждом тике...Даже там можно пропускать тики, если дистанция от пред. анализа менее 5 пипс (например). 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 17 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 17 мая, 2019 Но ведь все равно нужно анализировать... Но за совет- лайк! Ссылка на сообщение Поделиться на другие сайты More sharing options...
ZloyZam Опубликовано 19 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 мая, 2019 бОльшая часть советников работает по индикаторам, либо по свечному анализу. Советников, использующих в логике конкретно тики - единицы...Отсюда следует, что основная причина тормознутости ботов- это ненужная обработка информации на каждом тике... Кстати, к таковой относится реализация инфопанелей в составе советника, которая показывает в т.ч. спред...Я не много написал советников, но единственный случай, когда бот реально работал на всех тиках- это закрытие по профиту, либо трал, да и тот, который считает расстояние на каждом тике...п.с. возможно пропустил еще какую то жизненную ситуацию, где нужно обрабатывать каждый тик.п.п.с. все написанное не относится к скальперам. В простеньких роботах да. Но если писать нормальную торговую систему, то надо учитывать, что трейдер может переставить отложку, стопы, закрыть/отменить ордер и это может произойти в любой момент. Поэтому я каждый ордер оборачиваю в класс и на каждом тике контролирую его состояние (есть ли он физически и не поменялись ли его параметры). При этом контролируется только ордера с которыми работает советник. Основная ошибка начинающих в работе с ордерами - это тупо каждый раз искать его среди открытых по Magic, OrderSelect достаточно "дорогая" функция, а если ордеров много, а ваш в конце списка, то вот вам и сотня миллисекунд только на поиск. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 19 мая, 2019 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 19 мая, 2019 Основная ошибка начинающих в работе с ордерами - это тупо каждый раз искать его среди открытых по Magic, OrderSelect достаточно "дорогая" функцияВам встречалось частичное закрытие? Сейчас модно закрыть часть ордера, а другая часть может висеть в рынке с другим тикетом, имхо здесь без цикла с OrderSelect не обойтись. Новичков лучше не сбивать - пусть по старинке через цикл ордера контролируют, тем более 90% не слышали о классах вообще ничего. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти