Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Есть проблемка - открывается сетка ордеров с общим ТП и иногда у одной сделки ТП не выставляется. Ладно если это не дает сделать теккущая цена, но бывает, что ТП должен стоять за 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;
}
if (ticket>0)
Вместо этого условия
поставьте это
Вместо этого условия
поставьте это
if(OrderSelect(ticket))
и ещё, я поменял эту строчку, у меня выскочила ошибка - wrong parameters count. Я так понимаю єтот ордер селект нужно прописать в начале советника?
Ну да, меня «дёрнули» и я в спешке не дописал. Надо так
if(OrderSelect(ticket, SELECT_BY_TICKET))
для селл та же строка?
Можете простым языком сказать что Вы сделали. Я уже второй день ищу информацию что бы решить этот вопрос и не нашёл. Хочу понимать что Вы сделали, что это значит.Спасибо
для селл та же строка?
Можете простым языком сказать что Вы сделали. Я уже второй день ищу информацию что бы решить этот вопрос и не нашёл. Хочу понимать что Вы сделали, что это значит.Спасибо
Прочтите внимательно примечание.
«Функция OrderSelect() копирует данные об ордере…» и далее
Прочтите внимательно примечание.
«Функция OrderSelect() копирует данные об ордере…» и далее
Всем доброго дня.
Есть проблемка - открывается сетка ордеров с общим ТП и иногда у одной сделки ТП не выставляется. Ладно если это не дает сделать теккущая цена, но бывает, что ТП должен стоять за 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.
Если Вы сделаете так
то скорее всего, там где ТП не выставляется, увидите ошибку 1
Вам лучше поправить функцию SetTakeProfit
Чем лучше? Пояснения в студию.