Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2062
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
мне нужно отделить часть ордеров при открытии и чтобы "качество" было зашито в самом ордере
Или ведите собственный учет ордеров. У Тришкина в начальных статьях ДуЕззи кстати очень не плохой подход по учету торгового окружения, он там Магик кодирует.
добрый день!
дополнил советник функцией открытия доп ордера
по задумке:
- внутри временного интервала получен сигнал
- открывается основной ордер, закрытие стоп/тейк
- если закрытие осн ордера по стопу, сразу же открывается один доп.ордер в противоположном направлении
- закрытие доп.ордера по стоп/тейк
- ждем следующий временной интервал и новый сигнал в нем, и т.д.
у меня получилось это реализовать, но открывается больше чем один доп ордер, т.е. один, потом еще один и т.д. до первой профитной сделки.
Что добавить/убавить в коде, чтобы открывался только один доп. ордер после основного?
добрый день!
дополнил советник функцией открытия доп ордера
по задумке:
- внутри временного интервала получен сигнал
- открывается основной ордер, закрытие стоп/тейк
- если закрытие осн ордера по стопу, сразу же открывается один доп.ордер в противоположном направлении
- закрытие доп.ордера по стоп/тейк
- ждем следующий временной интервал и новый сигнал в нем, и т.д.
у меня получилось это реализовать, но открывается больше чем один доп ордер, т.е. один, потом еще один и т.д. до первой профитной сделки.
Что добавить/убавить в коде, чтобы открывался только один доп. ордер после основного?
Что это? Ордер должен быть предварительно выбран с помощью функции OrderSelect().
так он и выбран вроде
if(CountOrders()==0 && GetTypeLastClosePos()==0) // GetTypeLastClosePos()==0) последним закрытым был ордер BUY
{
if (OrderProfit()<0)
{
OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"продажа",Magic,0,clrRed);
}
}
int CountOrders()
{
int cnt=0;
int i=OrdersTotal()-1;
for(int pos=i;pos>=0;pos--)
{
if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol()==_Symbol)
{
if(OrderMagicNumber()==Magic) cnt++;
}
}
}
return(cnt);
так он и выбран вроде
int CountOrders() - возвращает кол-во ордеров. В данном случае к OrderProfit() никакого отношения не имеет
так он и выбран вроде
if(CountOrders()==0 && GetTypeLastClosePos()==0) // GetTypeLastClosePos()==0) последним закрытым был ордер BUY
{
if (OrderProfit()<0)
{
OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"продажа",Magic,0,clrRed);
}
}
int CountOrders()
{
int cnt=0;
int i=OrdersTotal()-1;
for(int pos=i;pos>=0;pos--)
{
if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol()==_Symbol)
{
if(OrderMagicNumber()==Magic) cnt++;
}
}
}
return(cnt);
Перед тем как что то делать с ордером, где ошибка, принтаните тикет ордера. Скорее всего после подсчета ордеров в структуре свойств ордера другой ордер. Ордер селект просто заполняет структуру свойств ордера, с которой работают другие функции, (и это структура одна для всех ордеров), та же модификация или удаление работают с данными из этой структуры. Лучше Ордерселект использовать непосредственно перед работой с ордером, ошибок будет меньше.
Перед тем как что то делать с ордером, где ошибка, принтаните тикет ордера. Скорее всего после подсчета ордеров в структуре свойств ордера другой ордер. Ордер селект просто заполняет структуру свойств ордера, с которой работают другие функции, (и это структура одна для всех ордеров), та же модификация или удаление работают с данными из этой структуры. Лучше Ордерселект использовать непосредственно перед работой с ордером, ошибок будет меньше.
спасибо
int CountOrders() - возвращает кол-во ордеров. В данном случае к OrderProfit() никакого отношения не имеет
ясно. подумаю
ясно. подумаю
Зашивай при открытии в OrderComment()
У меня почему-то это не получалось. Как правильно через if это прописать и как при ordersend это послать?