Richie Rich Опубликовано 23 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 ноября, 2016 SilverKZ, большое Спасибо! Запомню. 8-> Ссылка на сообщение Поделиться на другие сайты More sharing options...
mangold Опубликовано 23 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 ноября, 2016 Уважаемые программисты ! Подскажите как преобразовать индикатор,чтобы он отображался в подвале как фон при пересечении 0, чтобы потом в это окно можно было добавить другой индикатор. Zeron.mq4Zeron.ex4Alpari_Limited_MT4.png Изменено 23 ноября, 2016 пользователем mangold Ссылка на сообщение Поделиться на другие сайты More sharing options...
garrytabur Опубликовано 23 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 ноября, 2016 Написал функцию закрытия ордеров по обратному сигналу. А она не работает. Может кто подскажет, где я накосячил?void ExtrClosMidi() {//Закрытие ордера на продажу по сигналу СП-0 if(CountSell()>0) { if(SP_midi0>0 && Martin==false) // условие экстренного закрытия ордеров по сигналу СП-0 { for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL) { if(!OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Black)) Alert(Symbol()," Ошибка закрытия ордера на продажу!"); SendMail(Symbol()," Ошибка закрытия ордера на продажу"); } } }return; } }//Закрытие ордера на покупку по сигналу индикатора if(CountBuy()>0) { if(SP_midi0 { for(int i=OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY) { if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Black)) Alert(Symbol()," Ошибка закрытия ордера на покупку!"); SendMail(Symbol()," Ошибка закрытия ордера на покупку"); } } }return; } } }//Окончание закрытия ордеров+++++++++++++++++++++++++++++++++++++++++++++++++++++ Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 23 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 ноября, 2016 А что пишет - какие ошибки в журнале ? Если нет ошибок в журнале надо полностью текст программы смотреть, там у Вас есть функции и переменные, которые могут повлиять на закрытие ордеров.Вы сами гляньте, куда у Вас вообще программа заходит при удалении ордера. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Roman 13 Опубликовано 24 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 24 ноября, 2016 Спасибо а подскажите в каких единицах измеряется время истечения отложенного ордера в функции Send ? Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 24 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 24 ноября, 2016 Ну как я понимаю - формат datatime значит указывается конкретная дата + время с точностью до секунды. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Roman 13 Опубликовано 25 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 ноября, 2016 Не понятно а какое значение нужно поставить если я хочу чтобы отложенный ордер закрылся например через 30 минте через две свечи если ордер не сработал ? Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 25 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 ноября, 2016 Попробуйте так datetime x=TimeCurrent()+30*60;то есть мы к переменной с текущим временем прибавляем то количество секунд, через которое хотим чтобы ордер закрылся ну и переменную x, записываем в функцию Send как время истечения отложенного ордера Ссылка на сообщение Поделиться на другие сайты More sharing options...
Александр_F Опубликовано 26 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 ноября, 2016 Здравствуйте трейдеры. У меня к вам вопрос касательно функции "долива". Суть в следующем, советник открывает отложенные ордера вверх и вниз от текущей цены рынка. Например 3 отложки вверх и 3 отложки вниз, у каждой свой TP и SL. Допустим цена двинулась вверх, и открыла два ордера на OP_BUY. В то время как эти два ордера открылись, снизу от цены образовалось пустое пространство, которое нужно заполнить ордерами OP_SELLSTOP или OP_SELLLIMIT. Казалось-бы, все логично, но я не могу придумать, как обыграть долив при условии функции CountOrders (это количество открываемых отложек), + специфика выбора OP_Limmit и OP_Stop. Все возможные варианты решения проблемы не дали никаких результатов ~x( ~x( ~x( Я прикрепляю ниже его код и если вы знаете как решить эту проблему, видите ошибки или есть какие нибудь идеи, я буду вам очень благодарен за помощь. (P.S. В советнике прописана один из вариантов) Советник_-_копия.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 29 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 29 ноября, 2016 Спойлер Здравствуйте трейдеры. У меня к вам вопрос касательно функции "долива". Суть в следующем, советник открывает отложенные ордера вверх и вниз от текущей цены рынка. Например 3 отложки вверх и 3 отложки вниз, у каждой свой TP и SL. Допустим цена двинулась вверх, и открыла два ордера на OP_BUY. В то время как эти два ордера открылись, снизу от цены образовалось пустое пространство, которое нужно заполнить ордерами OP_SELLSTOP или OP_SELLLIMIT. Казалось-бы, все логично, но я не могу придумать, как обыграть долив при условии функции CountOrders (это количество открываемых отложек), + специфика выбора OP_Limmit и OP_Stop. Все возможные варианты решения проблемы не дали никаких результатов ~x( ~x( ~x( Я прикрепляю ниже его код и если вы знаете как решить эту проблему, видите ошибки или есть какие нибудь идеи, я буду вам очень благодарен за помощь. (P.S. В советнике прописана один из вариантов) Александр_F Логика должна быть такая : если у Вас четкое правило не более трех ордеров в одну сторону, значит перед открытием 4го например вверх надо удалить ненужный, который был первый вверх. Изменено 29 ноября, 2016 пользователем AndreyGold Ссылка на сообщение Поделиться на другие сайты More sharing options...
Александр_F Опубликовано 30 ноября, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 30 ноября, 2016 :-T _2.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Александр_F Опубликовано 2 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 декабря, 2016 :-T _2.3_.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Richie Rich Опубликовано 2 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 2 декабря, 2016 Товарищи программисты, нужна помощь! :((В данном советнике использую функцию проверки открытия ордера на текущей свече. Был ли на ней ордер либо нет. Если был - пропускаем эту свечу и не рассматриваем. Если нет - рассматриваем возможность открыть ордер.Собственно максимум один ордер на каждой свече.Я это реализовал с помощью проверки часа открытия последнего ордера с текущим часом для работы на часовых свечах.И соответственно проверка дня открытия последнего ордера с текущим днём для торговли на дневном таймфрейме. Выглядит это следующим образом: Функции возвращают True, если на текущей свече уже был открыт ордер, либо False, если на текущей свече ещё не было открыто ордера. Цитата bool One_Order_in_Hour() { for(int i=0; i { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderSymbol() == Symbol()) { if (TimeHour (OrderOpenTime()) == Hour () && TimeDay (OrderOpenTime()) == Day () && TimeMonth(OrderOpenTime()) == Month() && TimeYear (OrderOpenTime()) == Year ()) return(1); } } return(0); } Цитата bool One_Order_in_Day() { for(int i=0; i { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderSymbol() == Symbol()) { if (TimeDay (OrderOpenTime()) == Day () && TimeMonth(OrderOpenTime()) == Month() && TimeYear (OrderOpenTime()) == Year ()) return(1); } } return(0); } Всё бы ничего, если б эти функции катастрофически не тормозили время прогона советника в тестере раз так в ...надцать. ~x(Примерно с 3-5 минут до 7-8 часов.Может есть возможность сделать данную проверку иным способом? И было бы шикарно использовать данную примочку на любом таймфрейме, а не только на 1Н и 1Д, как у меня.Надеюсь у кого-нибудь найдёться в закромах подобна функция. ;) 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Arius777 Опубликовано 5 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 5 декабря, 2016 Richie, у тебя тормозит оттого, что ты каждый раз, а скорее даже каждый тик заглядываешь в MODE_History. если это не вспомогательный советник и в нем же ты открываешь ордера, можно сделать флаг. К примеру, делаешь его true, каждый раз как открылся ордер, а на каждой новой свече сбрасываешь его на false. И все, на тиках будешь просто проверять этот флаг. Ну, я бы так сделал. И на любом ТФ будет работать. 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Richie Rich Опубликовано 5 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 5 декабря, 2016 Arius777 то есть сразу после OrderSend некоему булевому значению "X" присваиваем true. А при открытии новой свечи присваиваем X = false;Но вот как сделать проверку данной свечи? Было б шикарно если вы привели пример.Спасибо. Изменено 5 декабря, 2016 пользователем Richie Rich Ссылка на сообщение Поделиться на другие сайты More sharing options...
Arius777 Опубликовано 5 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 5 декабря, 2016 Да где-то выше это уже мусолилось...Ну ладно, вот кратко Спойлер datetime Newcandle;bool Activeorder=false;void OnTick(){ if (Newcandle!=Time[0]) { Activeorder=false; Newcandle = Time[0]; } void MyFunction(...) { ... if (!Activeorder) { ...//здесь какие-то Ваши условия if (OrderSend(...)) Activeorder=true; } }} Ну вот как-то так если кратко - работать будет на всех ТФ, не более одного ордера на каждой свече. >:d Изменено 5 декабря, 2016 пользователем Arius777 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Richie Rich Опубликовано 5 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 5 декабря, 2016 Arius777, Браво! Яро плюсую! =d>Вот так себе сделал: 8-> Спойлер Цитата datetime NewCandle; bool ActiveOrder = false,void OnTick() { if (NewCandle != iTime(Symbol(),TimeFrame,0)) { NewCandle = iTime(Symbol(),TimeFrame,0); ActiveOrder = 0; } if (ActiveOrder == 0) { if (условия на бай) { SendBuy (); ActiveOrder = 1; } if (условия на селл) { SendSell (); ActiveOrder = 1; } } } Изменено 5 декабря, 2016 пользователем Richie Rich 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
yaaarik777 Опубликовано 8 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 декабря, 2016 Всем доброго дня! Подскажите пожалуйста как поставить удаление ордера в советнике.Ситуация такая:выставляем 2 отложенных ордера в разных направлениях, как только срабатывает один из них, то другой удаляется и больше не выставляется.Буду очень благодарен за помощь.Спасибо. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Roman 13 Опубликовано 8 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 декабря, 2016 Здравствуйте вопрос по частичному закрытию лота , а как закрывается остальная часть лота ? Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 8 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 декабря, 2016 Всем доброго дня! Подскажите пожалуйста как поставить удаление ордера в советнике.Ситуация такая:выставляем 2 отложенных ордера в разных направлениях, как только срабатывает один из них, то другой удаляется и больше не выставляется.Буду очень благодарен за помощь.Спасибо. Анализируем, в "цикле" OrderSelect() если появился тип ордера OP_BUY или OP_SELL, то второй ордер с типом OP_SELLSTOP (OP_SELLLIMIT)или OP_BUYSTOP (OP_BUYLIMIT) удаляем через OrderDelete(......) Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 8 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 8 декабря, 2016 Здравствуйте вопрос по частичному закрытию лота , а как закрывается остальная часть лота ? Просто закрывается через OrderClose -> а там OrderLots, выбранного ордера через OrderSelect Ссылка на сообщение Поделиться на другие сайты More sharing options...
Maximus60 Опубликовано 9 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 9 декабря, 2016 Всем доброго! :-HПрошу помощи в написание простого индикатора.Программировать мало умею, и по сему посоветуйте какой нибудь похожий индикатор который можно было бы изменить до своих нужд.Принцип индикатора в том чтоб выделять прямоугольником 4 и более баров (желательно настраиваемый количество) с разнонаправленными типами.Например:Заранее спасибо ! Спойлер Ссылка на сообщение Поделиться на другие сайты More sharing options...
Roman 13 Опубликовано 10 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 декабря, 2016 А цикл используется ? Ссылка на сообщение Поделиться на другие сайты More sharing options...
AndreyGold Опубликовано 10 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 10 декабря, 2016 После того как какой-то ордер или ордера закрылись частично из оставшихся ордеров остается обыкновенный список открытых ордеров, для каких-нибудь действий с этим списком нужен будет цикл их перебора. Ссылка на сообщение Поделиться на другие сайты More sharing options...
vasak0007 Опубликовано 11 декабря, 2016 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 декабря, 2016 Всем, доброго времени суток, такая проблема...Хочу написать небольшой индикатор, которые будет собирать данные, за последние 10 дней, о том, как реагирует рынок на открытие Лондона, то есть бычья свеча или медвежья по отношению к предыдущей часовой свече, но не знаю как сделать, что бы он собирал данные за разные дни с 11ти часовой свечи к 10ти часовой (мск.). Подскажите пожалуйста как это правильно сделать. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти