Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 383
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Если без внешних всяких - то есть PositionClose
А ещё можно открыть позицию с тем же объёмом в обратную сторону, в итоге получится закрытие.
Устанавливаем две локальные переменные в функции OnTick типа bool: buyExist = false и sellExist = false.
По приходу нового тика проверяете наличие ордеров, принадлежавших данному советнику. Если есть ордер на продажу - sellExist = true, тоже самое с бай ордером. И далее проверяете, если buyExist = true - ордер на покупку не открывать. Тоже для sell. Все.
А зачем лишние переменные, если всё-равно проверяем наличие открытых позиций?
Проверили наличие Buy - нет открытых Buy - открыли один, проверили наличие Sell - нет открытых Sell -открыли один. Переменные-то зачем?
А зачем лишние переменные, если всё-равно проверяем наличие открытых позиций?
Проверили наличие Buy - нет открытых Buy - открыли один, проверили наличие Sell - нет открытых Sell -открыли один. Переменные-то зачем?
А зачем лишние переменные, если всё-равно проверяем наличие открытых позиций?
Проверили наличие Buy - нет открытых Buy - открыли один, проверили наличие Sell - нет открытых Sell -открыли один. Переменные-то зачем?
Я та думал что будет что то на манер ОрдерТотал. а тут береборку делать надо? и функцию прописывать? распознания ордеров?
Можно и так. Я просто это в голове представил как отдельную функцию проверки, где по ссылке переданы флаги. В данном случае, мой вариант, выполняет только одну функцию - проверка наличия ордеров, а не проверка+открытие. Легче будет расширить программу. Короче - одна функция - одно действие.
Ну так, а проверка-то - и есть вызов функции, возвращающая флаг:
if(!Функция_проверки_наличия_позиции(symbol, OP_BUY,magic)) Функция_открытия_позиции(symbol, OP_BUY,Lots,stop_loss,take_profit,magic,comment);
if(!Функция_проверки_наличия_позиции(symbol, OP_SELL,magic)) Функция_открытия_позиции(symbol, OP_SELL,Lots,stop_loss,take_profit,magic,comment);
Я та думал что будет что то на манер ОрдерТотал. а тут береборку делать надо? и функцию прописывать? распознания ордеров?
нету говорит такой функции ?
А как без перебора? У Вас одновременно может быть куча ордеров, от кучи экспертов по куче символов... А Вы ведь хотите, чтобы Ваш эксперт обрабатывал только свои ордера?
он начальное дополнение к основному роботу . задача советника держать всегда открытые 2 ордера в оба направления ( основной робот их подхватывает , но сам основной робот не может начать . и когда осн. закончит с одним их направлений ордера он его закроет ) и тут этот советник должен опять открыть ордер в том направление рынка кв котором нет ордера.
просто нужно добавить ему условия открытий сделки
extern double Lots = 1.00;
extern int MagicNumb = 698541; //Magic
int start ()
{
if (OrdersTotal() == 0 && ********** )
OrderSend("USDCHF",OP_BUY,Lots,Ask,0,0,0,"5891",MagicNumb,0,Red);
if (OrdersTotal() == 0 && ***********)
OrderSend("USDCHF",OP_SELL,Lots,Bid,0,0,0,"58892",MagicNumb,0,Red);
}
он начальное дополнение к основному роботу . задача советника держать всегда открытые 2 ордера в оба направления ( основной робот их подхватывает , но сам основной робот не может начать . и когда осн. закончит с одним их направлений ордера он его закроет ) и тут этот советник должен опять открыть ордер в том направление рынка кв котором нет ордера.