CloseLongLimit(Price)CloseLongLimit(Price, Q) – закрыть позицию лонг по стратегии по цене Price полностью (или заданное количество Q).
CloseShortLimit(Price)CloseShortLimit(Price, Q) – закрыть позицию шорт по стратегии по цене Price полностью (или заданное количество Q).
Или
Поставить стоп в BreakingStop() заведомо большой, с низкой вероятностью исполнения.
Но вариант с CloseLongLimit() и CloseShortLimit() не будет работать в таком виде:
Код: Выделить всё
if (Long)
{
EnterLong();
CloseLongLimit(Take);
}
За один бар (сигнал) АД4 не принимает 2 подряд заявки, т.е. не ставит в очередь заявку CloseLongLimit(), а просто её игнорирует.
В отличие от стоп заявок, которые уходят в очередь на исполнение, и как исполнится заявка на открытие позиции сразу же выставляется заявка на стоп.
т.е. вот такой вариант будет работать:
Код: Выделить всё
if (Long)
{
EnterLong();
BreakingStop(Stop, Take, SignalPriceType.DeltaInPercentFromAveragePrice);
}
Не знаю, ошибка ли это в АД4 или так и было задумано, но это прибавляет забот по закрытию позиции по лимиту.
Чтобы первый вариант заработал нужно:
- открыть позицию на баре по сигналу;
- на следующем баре выставить лимитную заявку на закрытие.
что-то типа такого:
Код: Выделить всё
//сигнал на открытие
if (CurrentPosition() == 0)
{
EnterLong();
}
//позиция Long есть, ставим заявку на закрытие по лимиту
if (CurrentPosition() > 0)
{
CloseLongLimit(Take);
}
есть вероятность того, что на баре открытия и до бара отправки заявки закрытия по лимиту (take) цена может сходить до лимитной цены take и уже больше туда не прийти, а заявки на take ещё не выставлялось.
Т.е. есть 1 бар временного лага, когда тейка (LMT заявки закрытия) не будет вообще, а позиция будет уже открыта!
Ещё нужно учитывать то, что CloseLongLimit() и CloseShortLimit() выполняются по цене, а не дельте, но это не особо "проблема".
В итоге: 1. Действительно, в АД4 не хватает заявки типа CloseLongLimit(), CloseShortLimit(), работающих по аналогии с стоп заявками уходящими в очередь на исполнение после заявок открытия позиции. Ну и возможность задавать их с параметром SignalPriceType как у стоп заявок.
2. Выход пока только в виде BreakingStop() с большим стопом ( но есть вероятность что он когда-то выстрелит (исполнится)

)