xbms Опубликовано 26 марта, 2014 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 марта, 2014 Здравствуйте! :)Подскажите пожалуйста в чём может быть проблема.Ругается на одни и те же функции... Пример кода //+------------------------------------------------------------------+int CountSell(){ for(int trade = OrdersTotal() -1; trade >=0; trade--) { [glow=yellow,2,300]OrderSelect[/glow](trade, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderType() == OP_SELL) Count++; } } return(Count);}//+------------------------------------------------------------------+void CloseOrders(){ for(int trade=OrdersTotal()-1; trade >= 0; trade--) { [glow=yellow,2,300]OrderSelect[/glow](trade, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { [glow=yellow,2,300]OrderDelete[/glow](OrderTicket(), Black); } }}//+------------------------------------------------------------------+ не то, чтобы ругается, просто предупреждает о том, что значение, которое возвращает OrderSelect было бы неплохо проверять :)Ведь OrderSelect возвращает булевое значение, которое означает выбран ордер или нет.Если посмотрите хотя бы один из моих уроков, то увидите, что я всегда пишу так:if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) т.е. оператором if я проверяю выбран ордер или нет. Изменено 26 марта, 2014 пользователем xbms 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Redeemer Опубликовано 26 марта, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 марта, 2014 не то, чтобы ругается, просто предупреждает о том, значение, которое возвращает OrderSelect было бы неплохо проверять :)Ведь OrderSelect возвращает булевое значение, которое означает выбран ордер или нет.Если посмотрите хотя бы один из моих уроков, то увидите, что я всегда пишу так: if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) т.е. оператором if я проверяю выбран ордер или нет. В том-то и беда, Сергей, что даже функция, взятая из Вашего видео, мета эдитором критикуется....int CountBuy(){ int count = 0; for(int trade = OrdersTotal() -1; trade >=0; trade--) { OrderSelect(trade, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderType() == OP_BUY) Count++; } } return(Count);} Наверно из-за этого отказывается открывать ордера... :-? Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 26 марта, 2014 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 марта, 2014 Цитата Наверно из-за этого отказывается открывать ордера... :-? нет, в этой функции идёт всего-лишь пересчет кол-ва ордеров...а то, что у Вас где-то не открывает, нужно уже смотреть условия открытия.вероятно эту функцию Вы выдернули из более ранних, самых первых уроков... да, там не было проверки.в дальнейшем же, проверка всегда использовалась. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Redeemer Опубликовано 26 марта, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 марта, 2014 Цитата Наверно из-за этого отказывается открывать ордера... :-? нет, в этой функции идёт всего-лишь пересчет кол-ва ордеров...а то, что у Вас где-то не открывает, нужно уже смотреть условия открытия.вероятно эту функцию Вы выдернули из более ранних, самых первых уроков... да, там не было проверки.в дальнейшем же, проверка всегда использовалась. Благодарю!Видимо, ещё не дошёл до них :-W Изменено 26 марта, 2014 пользователем Redeemer Ссылка на сообщение Поделиться на другие сайты More sharing options...
35aleks Опубликовано 26 марта, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 марта, 2014 не подскажите как написать код что бы открывал разные валютные пары Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sergey K Опубликовано 27 марта, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 марта, 2014 Добрый вечер! Вопрос к учителю языка mql4. В уроке 5 используется функция Time, я так понял, что ее замена в новой платформе iTime. Но прямая замена не получилась. Ругается на return, после if. Как корректно поправить код, что бы работал. До 5 урока все шло нормально, а тут застрял. Ссылка на сообщение Поделиться на другие сайты More sharing options...
35aleks Опубликовано 30 марта, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 марта, 2014 Кто может подсказать как в коде прописать Ask или Bid с 2 нулями или с 3 мя на 5 знаках отложки ставить Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 30 марта, 2014 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 марта, 2014 Добрый вечер! Вопрос к учителю языка mql4. В уроке 5 используется функция Time, я так понял, что ее замена в новой платформе iTime. Но прямая замена не получилась. Ругается на return, после if. Как корректно поправить код, что бы работал. До 5 урока все шло нормально, а тут застрял. А где Ваш код?Добавлено: 30-03-2014 09:19:41Кто может подсказать как в коде прописать Ask или Bid с 2 нулями или с 3 мя на 5 знаках отложки ставить через NormalizeDouble можно..., например:double _ask = NormalizeDouble(Ask, 3); 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sergey K Опубликовано 30 марта, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 марта, 2014 Прошу прощения. Код здесь. SimpleTraling.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 30 марта, 2014 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 марта, 2014 Прошу прощения. Код здесь. ну тут всё просто, Ваш код:void OnTick() { if(timeprev == iTime(NULL, 0, 0)) return(0); timeprev = iTime(NULL, 0, 0); ..... обратите внимание на то, что событие OnTick имеет тип void, а Вы пытаетесь оператором return вернуть ноль: return(0);тип void не "умеет" возвращать результат... ошибка тут :)значит нужно просто написать: if(timeprev == iTime(NULL, 0, 0)) return; 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
elruso Опубликовано 30 марта, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 марта, 2014 Всем Привет!!! Вот закончил моего шахтёра по собственной стратегии без индюков чисто техническая!!! По школе програмироания XBMS \M/ Вот такие пироги получились!!! Шахтёр добывает золото довольно стабильно! Вот жду тест на реале! естественно депо в 100 раз меньше!!! взял ВПС и повесил на баланс 60 баксов, тоесть каждые 60 надо повышать на 0.01 лот! Тест сделан с фиксированным лотом потому-что ММ не програмировал!!! Но хотелось бы добавить ММ! XBMS хорошо бы урок по ММ :d!!! Встроить такой ММ где бы советник просто посмотрел на баланс и если там меньше 60 то не торгуй а если больше или равен 60 то соответственно рассчитать и применить лот по выражению каждые (60 повышать лот на 0.01) естественно в две стороны, то есть если убыток то понижать! Screen_Shot_2014-03-26_at_5.56.35_PM.png Ссылка на сообщение Поделиться на другие сайты More sharing options...
Старик Опубликовано 31 марта, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 31 марта, 2014 Но хотелось бы добавить ММ! XBMS хорошо бы урок по ММ :d!!! Встроить такой ММ где бы советник просто посмотрел на баланс и если там меньше 60 то не торгуй а если больше или равен 60 то соответственно рассчитать и применить лот по выражению каждые (60 повышать лот на 0.01) естественно в две стороны, то есть если убыток то понижать! А слабо ознакомиться с тьмой выложенных на форуме ботов от XBMS?! :)Там все есть.Или без кино разобраться в теме никак?... :)Коллеги, кроме шуток - на форуме много ботов от авторов с открытыми кодами.Это бесценный материал для самообучения. Ссылка на сообщение Поделиться на другие сайты More sharing options...
35aleks Опубликовано 31 марта, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 31 марта, 2014 xbms = Спасибо!Но 3 это же разрядность после запятой, а нужно 3 нуля может через массив но как нужно именно отложник ставить на 3 нулях Ссылка на сообщение Поделиться на другие сайты More sharing options...
Sergey K Опубликовано 31 марта, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 31 марта, 2014 Понял. Спасибо. :) Ссылка на сообщение Поделиться на другие сайты More sharing options...
elruso Опубликовано 31 марта, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 31 марта, 2014 Но хотелось бы добавить ММ! XBMS хорошо бы урок по ММ :d!!! Встроить такой ММ где бы советник просто посмотрел на баланс и если там меньше 60 то не торгуй а если больше или равен 60 то соответственно рассчитать и применить лот по выражению каждые (60 повышать лот на 0.01) естественно в две стороны, то есть если убыток то понижать! А слабо ознакомиться с тьмой выложенных на форуме ботов от XBMS?! :)Там все есть.Или без кино разобраться в теме никак?... :)Коллеги, кроме шуток - на форуме много ботов от авторов с открытыми кодами.Это бесценный материал для самообучения. Хаха во, Старик!!!!! Написал уже спасибо за информацию! Тест с ММ позже приклею! Хочу ещё попробовать сделать тест более точнее по статье Павла 99% аккуратности! 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
35aleks Опубликовано 2 апреля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 апреля, 2014 Всем привет!Подскажите как прописать в коде если цена ниже МА50 и подходит к линии нарисованные индикатором который прилагается выставить отложник по этой линии.У индикатора Буфера нет. Urovni.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Монархист Опубликовано 2 апреля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 апреля, 2014 Приветствую всех гуру, особенно XBMS!Почитывал вот уроки.Решил сам попробовать чего то написать.А тут загвоздки и пошли.Советник на основе одного внешнего индикатора соорудить решил.Всего по одному то открытому ордеру и должно быть.Открываться ордер открывается, а при закрытии что-то всё время ошибка 131 выскакивает(ERR_INVALID_TRADE_VOLUME Неправильный объем). И не борется никак.Не судите за избыток не используемых параметров.rsi_slope.mq4 - советникSlope Direction Line.mq4 - индикатор rsi_slope.mq4Slope_Direction_Line.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 2 апреля, 2014 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 апреля, 2014 xbms = Спасибо!Но 3 это же разрядность после запятой, а нужно 3 нуля может через массив но как нужно именно отложник ставить на 3 нулях тогда ставь 2, вместо трёх, и будут заполнены 2 разряда после запятой, а остальные нули...Добавлено: 02-04-2014 15:13:01Приветствую всех гуру, особенно XBMS!Почитывал вот уроки.Решил сам попробовать чего то написать.А тут загвоздки и пошли.Советник на основе одного внешнего индикатора соорудить решил.Всего по одному то открытому ордеру и должно быть.Открываться ордер открывается, а при закрытии что-то всё время ошибка 131 выскакивает(ERR_INVALID_TRADE_VOLUME Неправильный объем). И не борется никак.Не судите за избыток не используемых параметров.rsi_slope.mq4 - советникSlope Direction Line.mq4 - индикатор так-с... ну для начала смотрим ошибку:2014.04.02 19:14:57.078 2014.01.20 20:05 rsi_slope GBPUSD,M5: OrderClose error 131 ага, ясно, теперь смотрим где в советнике OrderClose:OrderClose(ticket, 1, OrderClosePrice(), Slippage, Blue); открываем справку:bool OrderClose( int ticket, // номер ордера double lots, // количество лотов double price, // цена закрытия int slippage, // максимальное проскальзывание color arrow_color // цвет ); что мы видим вторым параметром?правильно, объём... а что у нас?а у нас 1 лот пытается закрыться... теперь смотрю сколько у меня открылось... 0.01 лота, ага, а закрыть попытались 1...ну вот и ошибка :)хотя это я тут описал только одну, а у Вас их больше именно тут, правьте эту ошибку и ищите вторую! ;) Изменено 2 апреля, 2014 пользователем xbms 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Монархист Опубликовано 3 апреля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 3 апреля, 2014 ага, ясно, теперь смотрим где в советнике OrderClose:OrderClose(ticket, 1, OrderClosePrice(), Slippage, Blue); открываем справку:bool OrderClose( int ticket, // номер ордера double lots, // количество лотов double price, // цена закрытия int slippage, // максимальное проскальзывание color arrow_color // цвет ); что мы видим вторым параметром?правильно, объём... а что у нас?...хотя это я тут описал только одну, а у Вас их больше именно тут, правьте эту ошибку и ищите вторую! Вторым параметром вот поставил и Lots и 1.0. Всё заработало. Вторую ошибку не вижу. Ссылка на сообщение Поделиться на другие сайты More sharing options...
xbms Опубликовано 3 апреля, 2014 Автор Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 3 апреля, 2014 Цитата Вторым параметром вот поставил и Lots и 1.0. Всё заработало. Вторую ошибку не вижу. Вообще, корректно будет закрывать так: if (OrderType()) == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Blue); if (OrderType()) == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Blue); а ещё корректней написать свою функцию закрытия ордеров с обработкой возможных ошибок... Ссылка на сообщение Поделиться на другие сайты More sharing options...
Монархист Опубликовано 4 апреля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 апреля, 2014 Вообще, корректно будет закрывать так: if (OrderType()) == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Blue); if (OrderType()) == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Blue); а ещё корректней написать свою функцию закрытия ордеров с обработкой возможных ошибок... За функцию закрытия ордеров с обработкой ошибок согласен конечно же.А вот закрыть ордер так хуже ?OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), Slippage, Blue); Ссылка на сообщение Поделиться на другие сайты More sharing options...
elruso Опубликовано 4 апреля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 апреля, 2014 Вообще, корректно будет закрывать так: if (OrderType()) == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Blue); if (OrderType()) == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Blue); а ещё корректней написать свою функцию закрытия ордеров с обработкой возможных ошибок... За функцию закрытия ордеров с обработкой ошибок согласен конечно же.А вот закрыть ордер так хуже ?OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), Slippage, Blue); Закрыть надо бай по по цене Bid, и сел по Ask! А ранее естественно проверить на их наличие!!! Ну вот как Xbms написал так и закрывай! Ссылка на сообщение Поделиться на другие сайты More sharing options...
Монархист Опубликовано 4 апреля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 апреля, 2014 if (OrderType()) == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Blue); if (OrderType()) == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Blue); Закрыть надо бай по по цене Bid, и сел по Ask! А ранее естественно проверить на их наличие!!! Ну вот как Xbms написал так и закрывай! Хорошо! Вопросов больше нет.Описки и ошибки возможны всегда в этом деле.Вот даже в 2-х приведенных примерах при закрытии ордера "SELL" цвет другой можно указать."RED" например. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Старик Опубликовано 4 апреля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 апреля, 2014 if (OrderType()) == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Blue); if (OrderType()) == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, Blue); Закрыть надо бай по по цене Bid, и сел по Ask! А ранее естественно проверить на их наличие!!! Ну вот как Xbms написал так и закрывай! Хорошо! Вопросов больше нет.Описки и ошибки возможны всегда в этом деле.Вот даже в 2-х приведенных примерах Программирование требует понимания рынка и знания того, что программируешь.И железной логики.в операторе OrderClose не может быть параметра OrderClosePrice(), потому что до закрытия ордера цена закрытия ордера не известна.Ордер еще открыт и никто не знает по какой цене он реально когда-то закроется...вдумывайся в каждый параметр, понимай его смысл - и когда-то потихоньку начнет получаться.Но сначала стоит решить оно тебе реально надо, то программирование?...Месяцы и годы уйдут, пока серьезно научишься.Или занялся только чтобы время убить? 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Монархист Опубликовано 4 апреля, 2014 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 4 апреля, 2014 Но сначала стоит решить оно тебе реально надо, то программирование?...Месяцы и годы уйдут, пока серьезно научишься.Или занялся только чтобы время убить? Именно надо.Месяцы прошли. Ручная еле еле дышит.А зачем это надо, могу конечно пояснить.Но наверное и каждый знает что ему и зачем. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти