Работа завершена
Техническое задание
Функция.
В советнике сеточнике порой необходимо частично закрывать все открытые ордера одного направления.
Мне нужен код этой функции с объявлением глобальных переменных в случае необходимости.
Подробности.
· Процент, на который мы частично закрываем ордер объявляем в настройках.
Input int PartForClose = 10; Допустим, так.
Однако, необходимо с каждым новым частичным закрытием закрывать на одинаковую величину. Поэтому PartForClose – есть не просто процент от оставшегося объема, а процент от первичного объема открытия ордера. Как вариант, можно первичный объем прописать в мэджике, и каждый раз при частичном закрытии ордера не нужно будет ничего вычислять. Это просто версия.
· В аргументах функции, вероятно, достаточно указать только направление ордеров, которые будем закрывать. Например,
enum TradeDir
{
BUY = 0, // Buy
SELL = 1 // Sell
};
PartialClose (const TradeDir dir)
{
}
· Функция должна частично закрыть много ордеров, а за один проход это делать не совсем корректно. Вопрос: можно ли сделать так, чтобы в режиме тестера ордера частично закрывались именно за один проход. Чтобы тестер не растягивал закрытие n ордеров на n бар? Этот вопрос от моего незнания. Если нет – значит нет.
· В глобальных переменных я опишу булевский флаг. Например,
bool ProcessingClose;
Когда приходит пора к частичному закрытию ордеров одного направления, я флаг активирую. Запускается функция как-то так:
If(ProcessingClose) PartialClose (BUY);
После того, как функция обработала и закрыла все ордера, она (функция) должна деактивировать флаг.