Для вставки кода используйте, пожалуйста, кнопку вставки кода: Правильно вставляем код на форуме
По Вашему коду: при наличии ордеров >0 идёт вызов нескольких функций :
Vizov_funkcii_poiska_poslednei_ceny_na_pokupku(OP_BUY)
и т. п.
Пройдите в режиме пошаговой отладки и просмотрите какие значения передаются на модификацию ордера.
спасибо за ответ кажется понял где ошибка

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Подскажите где ошибка, советник модифицирует ордер на покупку по мартину, первая модификация проходит отлично, но последующие он тейкпрофит ставит с первой модификации а не задает нужный.
void OnTick()
{
if (Kolichestvo_orderov() == 0)
{
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Proskalzovanie, 0, 0, "", Magic_nomer, 0, Blue);
if (ticket > 0 )
{
TP = NormalizeDouble (Ask + TakeProfit * Point, Digits);
ticket = OrderModify(ticket, OrderOpenPrice(), 0, TP, 0);
}
}
else
{
int opredelenie_tipa_ordera = Vizov_funkcii_poiska_tipa_ordera();
if (opredelenie_tipa_ordera == OP_BUY)
{
cena = Vizov_funkcii_poiska_poslednei_ceny_na_pokupku(OP_BUY);
if(Ask <= cena - Shag_mejdu_orderami * Point)
{
Posledni_lot = Poisk_poslednego_lota(OP_BUY);
Posledni_lot = NormalizeDouble (Posledni_lot * Koficent_umnojeniya, 2);
ticket = OrderSend(Symbol(), OP_BUY, Posledni_lot, Ask, Proskalzovanie, 0, 0, "", Magic_nomer, 0, Blue);
if (ticket > 0)
Modifik_Order(OP_BUY);
}
}
}
return;
}
//+-----------------------------------------------------------------------------------------------------------------------------------------------------+
void Modifik_Order(int tip_ordera)
{
double p_cena = 0;
for (int i = OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic_nomer && OrderType() == OP_BUY)
cena = OrderOpenPrice();
p_cena = NormalizeDouble(cena - (Shag_mejdu_orderami / 2) * Point, Digits);
TP = NormalizeDouble(p_cena + TakeProfit * Point, Digits);
}
}
for (int i = OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic_nomer && OrderType() == OP_BUY)
{
stariy_lot = OrderModify(OrderTicket(), OrderOpenPrice(), 0, TP, 0);
}
}
}
}