Kasatik Опубликовано 20 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 20 августа, 2016 Здравствуйте, подскажите люди добрые как подсчитать убыточные ордера, идущие подряд. А при прибыльном, счет обнулялся бы. Что то изобрел, но не хватает ...int LossOrders(){ int oldticket; ticket = 0; for (i = OrdersHistoryTotal() - 1; i >= 0; i--) { if (OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == magic) { oldticket = OrderTicket(); if (oldticket > ticket) { ticket = oldticket; if(OrderProfit() { orderloss++; }else orderloss=0; } } } } return(orderloss);} Ссылка на сообщение Поделиться на другие сайты More sharing options...
Kasatik Опубликовано 22 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 августа, 2016 Нашел здесь же на ветке. Спасибо xNorDx! Ссылка на сообщение Поделиться на другие сайты More sharing options...
iPerevalov Опубликовано 23 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 августа, 2016 Здраствуйте. Кто может, помогите разобраться с проблемой. Это касается одно из уроков по MQL.Не открывается стоп-ордер на покупку. Если задавать вместо Bid конкретное значение, то все огонь! void OnTick() { pipstop = NormalizeDouble(Bid + 10 * Point, 5); SL = NormalizeDouble(pipstop - 20 * Point, 5); TP = NormalizeDouble(pipstop + 30 * Point, 5); ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.01, pipstop, 3, SL, TP, "", 12345, 0, Yellow); if (ticket } Изменено 23 августа, 2016 пользователем iPerevalov Ссылка на сообщение Поделиться на другие сайты More sharing options...
vitek01 Опубликовано 23 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 августа, 2016 Здраствуйте. Кто может, помогите разобраться с проблемой. Это касается одно из уроков по MQL.Не открывается стоп-ордер на покупку. Если задавать вместо Bid конкретное значение, то все огонь! void OnTick() { pipstop = NormalizeDouble(Bid + 10 * Point, 5); SL = NormalizeDouble(pipstop - 20 * Point, 5); TP = NormalizeDouble(pipstop + 30 * Point, 5); ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.01, pipstop, 3, SL, TP, "", 12345, 0, Yellow); if (ticket } Все будет нормально, не переживай! Ссылка на сообщение Поделиться на другие сайты More sharing options...
SilverKZ Опубликовано 23 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 августа, 2016 Здраствуйте. Кто может, помогите разобраться с проблемой. Это касается одно из уроков по MQL.Не открывается стоп-ордер на покупку.... Здравствуйте, сколько у вас в цене знаков после запятой, если 5, то FREEZELEVEL не дает выставить отложенный ордер. Ссылка на сообщение Поделиться на другие сайты More sharing options...
iPerevalov Опубликовано 23 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 августа, 2016 Здраствуйте. Кто может, помогите разобраться с проблемой. Это касается одно из уроков по MQL.Не открывается стоп-ордер на покупку. Если задавать вместо Bid конкретное значение, то все огонь! void OnTick() { pipstop = NormalizeDouble(Bid + 10 * Point, 5); SL = NormalizeDouble(pipstop - 20 * Point, 5); TP = NormalizeDouble(pipstop + 30 * Point, 5); ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.01, pipstop, 3, SL, TP, "", 12345, 0, Yellow); if (ticket } Все будет нормально, не переживай! И в мыслях не было! ;) Здраствуйте. Кто может, помогите разобраться с проблемой. Это касается одно из уроков по MQL.Не открывается стоп-ордер на покупку.... Здравствуйте, сколько у вас в цене знаков после запятой, если 5, то FREEZELEVEL не дает выставить отложенный ордер. Да, 5 знаков. Если поставить вместо Bid точное число, ,например, такое как 1.43502, то ордер открывается. Ссылка на сообщение Поделиться на другие сайты More sharing options...
SilverKZ Опубликовано 24 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 24 августа, 2016 iPerevalov, сделайте как в приложении. Buy открывается по Ask, у вас BuyStop выставляется по неверной цене, т.е. ниже Ask. Получается (Bid + 10 * Point) OrderSend.mq4 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
iPerevalov Опубликовано 24 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 24 августа, 2016 iPerevalov, сделайте как в приложении. Buy открывается по Ask, у вас BuyStop выставляется по неверной цене, т.е. ниже Ask. Получается (Bid + 10 * Point) Глупая ошибка. Спасибо. Сменил Bid на Ask! Ссылка на сообщение Поделиться на другие сайты More sharing options...
iPerevalov Опубликовано 25 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 августа, 2016 Здравствуйте. По возможности помогите разобраться с частичным закрытием ордеров. Попробовал сам написать код программы.Первую половину лота необходимо закрыть на главной линии Боллинжера. Вторую - на верхней. Я думал, что это можно реализовать двумя условиями. В первом условии при вызове функции OrderClose() в параметре количество лотов записал OrderLots() / 2. А во втором условии оставил вызов функции OrderClose(). Компилятор не ругается, но Журнал показывает сообщение: "Ошибка закрытия 1 ордера на покупку". Дело в этом OrderLots() / 2. Так как когда я явно пытался указать значение лота, например, 0.01, то в Журанле уже не было сообщений.Помогите разобраться с проблемой или подсказать более грамотное решение для частичного закрытия ордеров с вдумя условиями. // первое условие с центральной линией Боллинжера if (Bid >= Bonds_Main && CountBuy() > 0) { for(int i = OrdersTotal() - 1; i >= 0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderMagicNumber() == MAGIC && OrderType() == OP_BUY) if(!OrderClose(OrderTicket(), OrderLots() / 2, Bid, SLIPPAGE, Black)) Print("Ошибка закрытия 1 ордера на покупку"); } } } // второе условие с верхней линией Боллинжера if (Bid >= Bonds_Upper && CountBuy() > 0) { for(int i = OrdersTotal() - 1; i >= 0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderMagicNumber() == MAGIC && OrderType() == OP_BUY) if(!OrderClose(OrderTicket(), OrderLots(), Bid, SLIPPAGE, Black)) Print("Ошибка закрытия 2 ордера на покупку"); } } }Bonds_Main - значение центральной линии Боллинжера,Bonds_Upper - значение вверхней линия Боллинжера,CountBuy() - функция, возвращающая количество ордеров на покупку. Ссылка на сообщение Поделиться на другие сайты More sharing options...
SilverKZ Опубликовано 25 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 августа, 2016 Здравствуйте. По возможности помогите разобраться с частичным закрытием ордеров. ... Я знаю в чем проблема, но, пожалуй, не скажу. Сделаю лучше, подскажу как поступать в таких случаях. Просто принтуйте в журнал значения переменных, результаты функций и вычислений.Например, так Print("Ошибка закрытия 1 ордера на покупку", OrderLots() / 2);и сравнивайте с тем, что должно быть. 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
iPerevalov Опубликовано 25 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 августа, 2016 Здравствуйте. По возможности помогите разобраться с частичным закрытием ордеров. ... Я знаю в чем проблема, но, пожалуй, не скажу. Сделаю лучше, подскажу как поступать в таких случаях. Просто принтуйте в журнал значения переменных, результаты функций и вычислений.Например, так Print("Ошибка закрытия 1 ордера на покупку", OrderLots() / 2);и сравнивайте с тем, что должно быть. Попробовал по вашему совету провести вывод лота. Действительно, ошибка в дроблении. На выходе получается 0.0050000. Написал вывод сообщения о выводе лота выбранного ордера и выводит 0.0100000. Подумал, вначале что дело в нулях. Но это не так (проверил =) ). Спасибо вам за помощь. Я понял свою ошибку. Дело в двух проверках. >:d:dДобавил дополнительное условие в первой проверке, для того чтобы не происходило закрытие ордера в нем. if(Bid >= Bonds_Main && CountBuy() > 0) { for(int i = OrdersTotal() - 1; i >= 0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderLots() == LOTS) { if(OrderMagicNumber() == MAGIC && OrderType() == OP_BUY) if(!OrderClose(OrderTicket(), OrderLots() / 2, Bid, SLIPPAGE, Black)) Print("Ошибка закрытия ордера на покупку " + DoubleToStr(OrderLots())); } } Изменено 25 августа, 2016 пользователем iPerevalov Ссылка на сообщение Поделиться на другие сайты More sharing options...
mario_uka Опубликовано 29 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 августа, 2016 Добрый день!Можно ли запилить индикатор что бы показывал следующую инфу:- Количество бычих свечей (зеленый цвет для удобства)- Количество медвежих свечей (красный цвет для удобства)- Количество бычих пунктов (зеленый цвет для удобства)- Количество медвежих пунктов (красный цвет для удобства), Ну и соответсвенно общий вид 12 б/8 м, 55п/40п ну что -то типо этого.По у же закрытым свечамЕсть идея, но отработку проверял только на небольшом временном периоде(т.к на калькуляторе не реал считать постоянно)Выложу потом стратегию в разделе стратегий с эти индикатором, если его сварганят.П.С Ну и конечно же цена вопроса?? Ссылка на сообщение Поделиться на другие сайты More sharing options...
SilverKZ Опубликовано 29 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 августа, 2016 Mario_uka, добрый день! Я могу сделать такой индикатор. Цена вопроса - отзыв о качестве обслуживания.Как рассчитывать количество пунктов: от открытия до закрытия свечи или от максимума до минимума? Изменено 29 августа, 2016 пользователем SilverKZ 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
mario_uka Опубликовано 29 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 августа, 2016 Ок! Договорились)) Ссылка на сообщение Поделиться на другие сайты More sharing options...
SilverKZ Опубликовано 29 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 августа, 2016 Ok! Индикатор отображает нужную вам информацию в левом верхнем углу, подробности на скрине. В пунктах для 5-ти знаков от максимума до минимума. Если будет нужно от открытия до закрытия свечи, пишите.Настройки индикатора: BarsPeriod = 300; // Количество баров для подсчета BarsCounter.ex4USDCHFH4.png 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
mario_uka Опубликовано 29 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 августа, 2016 Можешь подкорректировать- нужно по цене открытия и закрытия+ отображение по 4-х знаку, а то много цифр))))Ну и респект \M/ \M/ \M/ за оперативность. Где отзыв написать? Добавлено: 29-08-2016 11:24:23И еще вопрос можно ли сделать как в этом индюке, тут ранге период можно выбрать на графике двумя вертикальными чертамиVP-Range-v6.ex4VP-Range-v6.mq4 Изменено 29 августа, 2016 пользователем mario_uka Ссылка на сообщение Поделиться на другие сайты More sharing options...
SilverKZ Опубликовано 29 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 августа, 2016 Можешь подкорректировать- нужно по цене открытия и закрытия+ отображение по 4-х знаку, а то много цифр))))... Сделал.BarsCounter_v2.ex4 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
mario_uka Опубликовано 30 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 августа, 2016 Спасибо все норм!!!)))Будь другом запили еще вертикальные линии(чтобы двигать можно было для нужного периода) не понятно за какой период он считает, допустим ставлю 119 свечей, если сложить с угла получается 116. я так понял там где типа доджи он за свечу не берет. Ссылка на сообщение Поделиться на другие сайты More sharing options...
SilverKZ Опубликовано 30 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 августа, 2016 Смогу только завтра. Доджи не считаются, можно сделать так 12 б / 8 м / 1 д. Ссылка на сообщение Поделиться на другие сайты More sharing options...
mario_uka Опубликовано 30 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 августа, 2016 Добавь просто линии периода, которые можно двигать для выбора нужного(при появлении новой свечи нужно перебивать кол-во считаемых свечей-линиями проще было бы), а по отображению все норм) Ссылка на сообщение Поделиться на другие сайты More sharing options...
SilverKZ Опубликовано 31 августа, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 31 августа, 2016 Сделал линии, расчет ведется между линиями, доджи не считаются.Настройки индикатора: BarsPeriod = 100; // Количество баров для подсчетаInpColor = clrRed; // Цвет линий InpStyle = STYLE_DASH; // Стиль линий InpWidth = 1; // Толщина линий InpBack = true; // Линии на заднем плане InpSelection = true; // Выделить для перемещений InpHidden = true; // Скрыт в списке объектов InpZOrder = 0; // Приоритет на нажатие мышью Удачных торгов!AUDUSDH12.pngBarsCounter_v2.ex4 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
mario_uka Опубликовано 1 сентября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 1 сентября, 2016 Спасибо! На выходных примерно выложу стратегию, ну и конечно не забуду упомянуть твой вклад l-) в этот индюк)))) Еще раз спасибо :d Ссылка на сообщение Поделиться на другие сайты More sharing options...
iPerevalov Опубликовано 2 сентября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 сентября, 2016 Здравствуйте! Выполняя задание по 5 уроку MQL4, столкнулся в с проблемой. Задание: написать трейлинг-стоп по Parabolic SAR. Пятый день не могу понять свою ошибку. В журнале пишет: OrderModify error 1 (то есть "Нет ошибки, но результат неизвестен").Мог бы кто-нибудь помочь разобраться с заданием? test5SAR.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
SilverKZ Опубликовано 2 сентября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 сентября, 2016 Здравствуйте! Выполняя задание по 5 уроку MQL4, столкнулся в с проблемой. Задание: написать трейлинг-стоп по Parabolic SAR. Пятый день не могу понять свою ошибку. В журнале пишет: OrderModify error 1 (то есть "Нет ошибки, но результат неизвестен").Мог бы кто-нибудь помочь разобраться с заданием? Добрый день! Принтуйте SAR и OrderStopLoss(), посмотрите у них разное количество знаков после запятой, поэтому проверка SAR > OrderStopLoss() дает true и осуществляется модификация ордера по той же цене.Лекарство: SAR = NormalizeDouble(iSAR(Symbol(), 0, 0.02, 0.2, 1), _Digits);Удачи! Ссылка на сообщение Поделиться на другие сайты More sharing options...
Robert_spb Опубликовано 3 сентября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 3 сентября, 2016 Привет всем! Прошу помощи.Помогите написать код для советника, который будет определять ближайшую цену, заканчивающуюся на: 00, 25,50,75. (Либо для пятизнака: 000,250,500,750.)Например, имеем цену закрытия свечи, 1.11348. Ближайшая верхняя цена, по условиям, 1.11500, а нижняя 1.11250. Надо найти значения этих цен.Попытался сделать так. Тестер зависает. double Level_quaternary() { double CloseBar = iClose( Symbol(),TFclose,1 ), Step = 25(250 для пятизнака) for (double i=CloseBar; i { string a = DoubleToString(i,Digits); //переводим цену в текст. string b = StringSubstr(a,4,ff); //находим значение окончания if (b == "250") //если равен 250,500,750,000. то возвращаем значение этой цены. Soprotivlenie = i; } return(Soprotivlenie); } Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти