![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Игорь! Может подскажите? Что-то из индикатора (iMA) в советник значения с 4 знаками после запятой приходят, а надобно для работы 5 !? Попробовал NormalizeDouble(iMA,Digits) - всё равно 4 знака. Неужто надо весь индикатор переписывать в подпрограмму-функцию эксперта, чтобы 5 знаков получить?!!!
Справко: Alert(), Comment(), Print()
Данные типа double выводятся с 4 десятичными цифрами после точки.
Для вывода чисел с большей точностью используйте функцию DoubleToStr().
Добрый вечер,
Не могу справиться с правильным закрытием позиций. По условиям существует два условия закрытия: 1. если открыта одна позиция; 2. если открыто две (или больше позиций). В обоих случаях объём лота = 0.03. В первом случае лот закрывается раздельно по 0.01 (отработано в постах выше). Во втором случае два лота должны закрыться оба по 0.03. Соответственно если:
то первый вариант закрытия и если:
то другой (в моём варианте (предварительно) если сумма профита обоих позиций > 0, то должны закрываться обе позиции). Выглядит это так:
На деле получается, что при появлении условий для закрытия обоих лотов, первый закрывается полностью, а второй "принимает" на себя условия закртия BuyTotalOp==1 и закрывается по своим условиям.
Подскажите, что неправильно в условиях закрытия и как заставить закрыться оба лота одновременно? Заранее благодарен.
отделите мух от котлет.. напишите несколько полезных функций..
например, подсчет количества открытых ордеров по типу ордера, закрытие ордеров по типу ордера и т.п.
тогда все будет проще..
а то у вас не хватает где-то } и становится вообще непонятно что именно делается.. то ли вы пытаетесь одно временно подсчитывать количества ордеров и тут же их удалять, то ли что ? отложенные ордера может имеет смысл пропускать, а не прерывать код при их наличии ?
хорошим вариантом будет функция, которая по заданным условиям будет формировать массив с параметрами открытых ордеров, пробежав по которому можно их и закрыть..в общем поработайте над структурой..
Спасибо keekkenen, я как раз всё последнее время думаю о создании массива. Просто ни разу не работал с ним и надеялся, что есть решение проще, что у меня уже "зашоренный" взгляд, а кто-нибудь со свежими глазами, посмотрев, скажет " да елки-палки, а где у тебя подсчёт такой-то...". Ведь есть же подсчёт всех ордеров бай в цикле:
а OrderClose по ним не идёт...
ну да это видно "перемудрение".......и честно говоря я не понял вот этого
и вот этого, особенно деление лота на 3 ?? ордер закрывается тем же лотом что и открывается..
почему не так в обоих случаях ?
почему не так в обоих случаях ?
CloseTicketCl = OrderTicket() в общем можно и так...
и вот этого, особенно деление лота на 3 ?? ордер закрывается тем же лотом что и открывается..
не тем же. Закрывается треть лота (по одному из условий - допустим цена достигла +150 пп). Вторая треть закроется, допустим, когда +300 пп от открытия и т.д..
и честно говоря я не понял вот этого
здесь Lots и OrderLots() да, одно и то же.нет, так не получится.. один ордер - один лот, если отрыли ордер лотом 3, то нельзя дробить лот как вы хотите - сначала 1, потом 1 и еще потом 1 - оредер закрывается целиком, т.е.ордер закрывает тем же лотом что и открывался, нельзя закрывать ордера частями..