Напишу советник бесплатно - страница 187

 

Добрый день.

Перерыл кучу индикаторов, может я слепой, а может такого действительно нет. 

Нужен индикатор для МТ5, который рисует или отображает три цены, линии за последний квартал, ну или можно за заданный период. 1) Максимальная цена. 2) Минимальная цена. 3) средняя цена, рассчитанная от разницы макс-мин.

Буду благодарен, если кто намекнет на такой индикатор)

 
Всем доброго дня.
Есть проблемка - открывается сетка ордеров с общим ТП и иногда у одной сделки ТП не выставляется. Ладно если это не дает сделать теккущая цена, но бывает, что ТП должен стоять за 50 и более пунктов, а у одной из семи (скажем) сделок вместо ТП пусто. Как заставить советник контролировать этот момент? Но при том условии, что он должен контролировать установку ТП именно в этот момент, потому что потом (через час скажем) я захотел сбросить все ТП и сов не должен мне заново их выставлять. Вот фрагмент кода, который вот это делает:

if (gridDirect==-1 && countBUY<MaxTrades)
{
// открыть новый сеточный ордер BUY
comment=EAName+"-"+Symbol()+"-"+(countBUY+1)+"-"+Step;
nextLots = NormalizeDouble(Lots*MathPow(LotExponent, countBUY), lotDecimal);
RefreshRates();
ticket=OpenOrder(OP_BUY,nextLots,comment,MagicBuy, clrLime);
if (ticket>0)
{
SetTakeProfit(OP_BUY,MagicBuy);
}
return;
}
 
Andrey Kuharev #:
if (ticket>0)

Вместо этого условия

if (ticket>0)

поставьте это

if(OrderSelect(ticket))
 
Alexey Viktorov #:

Вместо этого условия

поставьте это

Алексей, а можете , если не сложно, почему так это решит вопрос? Я по пятибальной системе знаний написания советников 2+ (плюс это потому что я что то соображаю))))
 
Alexey Viktorov #:
if(OrderSelect(ticket))
и ещё, я поменял эту строчку, у меня выскочила ошибка - wrong parameters count. Я так понимаю єтот ордер селект нужно прописать в начале советника?
 
Andrey Kuharev #:
и ещё, я поменял эту строчку, у меня выскочила ошибка - wrong parameters count. Я так понимаю єтот ордер селект нужно прописать в начале советника?

Ну да, меня «дёрнули» и я в спешке не дописал. Надо так

if(OrderSelect(ticket, SELECT_BY_TICKET))
 
Alexey Viktorov #:
if(OrderSelect(ticket, SELECT_BY_TICKET))

для селл та же строка?

Можете простым языком сказать что Вы сделали. Я уже второй день ищу информацию что бы решить этот вопрос и не нашёл. Хочу понимать что Вы сделали, что это значит.Спасибо

 
Andrey Kuharev #:

для селл та же строка?

Можете простым языком сказать что Вы сделали. Я уже второй день ищу информацию что бы решить этот вопрос и не нашёл. Хочу понимать что Вы сделали, что это значит.Спасибо

Прочтите внимательно примечание. 

«Функция OrderSelect() копирует данные об ордере…» и далее

OrderSelect - Торговые функции - Справочник MQL4
OrderSelect - Торговые функции - Справочник MQL4
  • docs.mql4.com
OrderSelect - Торговые функции - Справочник MQL4
 
Alexey Viktorov #:

Прочтите внимательно примечание. 

«Функция OrderSelect() копирует данные об ордере…» и далее

Спасибо. И спасибо большое за корректировку кода!
 
Andrey Kuharev #:
Всем доброго дня.
Есть проблемка - открывается сетка ордеров с общим ТП и иногда у одной сделки ТП не выставляется. Ладно если это не дает сделать теккущая цена, но бывает, что ТП должен стоять за 50 и более пунктов, а у одной из семи (скажем) сделок вместо ТП пусто. Как заставить советник контролировать этот момент? Но при том условии, что он должен контролировать установку ТП именно в этот момент, потому что потом (через час скажем) я захотел сбросить все ТП и сов не должен мне заново их выставлять. Вот фрагмент кода, который вот это делает:

if (gridDirect==-1 && countBUY<MaxTrades)
{
// открыть новый сеточный ордер BUY
comment=EAName+"-"+Symbol()+"-"+(countBUY+1)+"-"+Step;
nextLots = NormalizeDouble(Lots*MathPow(LotExponent, countBUY), lotDecimal);
RefreshRates();
ticket=OpenOrder(OP_BUY,nextLots,comment,MagicBuy, clrLime);
if (ticket>0)
{
SetTakeProfit(OP_BUY,MagicBuy);
}
return;
}

Вам лучше поправить функцию SetTakeProfit

P.S.

Если Вы сделаете так

if (ticket>0)
{
SetTakeProfit(OP_BUY,MagicBuy);
} else Print(GetLastError());

то скорее всего, там где ТП не выставляется, увидите ошибку 1

Причина обращения: