Добрый день! У меня такойвопрос, можно ли как то сделать, что бы заявка создавалась с take profit без stop lossa?
BreakingStop(3, 0.3, SignalPriceType.DeltaInPercentFromAveragePrice); если поставить 0, то все плохо вместо стоп лосса.
Общие вопросы по разработке > Take Profit без Stop Loss (BreakingStop)
-
- Сообщения: 3
- Зарегистрирован: 11 янв 2019, 13:40
- Поблагодарили: 1 раз
- evge
- Администратор
- Сообщения: 1811
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 366 раз
- Контактная информация:
Re: Take Profit без Stop Loss (BreakingStop)
CloseLongLimit(Price)
CloseLongLimit(Price, Q) – закрыть позицию лонг по стратегии по цене Price полностью (или заданное количество Q).
CloseShortLimit(Price)
CloseShortLimit(Price, Q) – закрыть позицию шорт по стратегии по цене Price полностью (или заданное количество Q).
Или
Поставить стоп в BreakingStop() заведомо большой, с низкой вероятностью исполнения.
Но вариант с CloseLongLimit() и CloseShortLimit() не будет работать в таком виде:
За один бар (сигнал) АД4 не принимает 2 подряд заявки, т.е. не ставит в очередь заявку CloseLongLimit(), а просто её игнорирует.
В отличие от стоп заявок, которые уходят в очередь на исполнение, и как исполнится заявка на открытие позиции сразу же выставляется заявка на стоп.
т.е. вот такой вариант будет работать:
Не знаю, ошибка ли это в АД4 или так и было задумано, но это прибавляет забот по закрытию позиции по лимиту.
Чтобы первый вариант заработал нужно:
- открыть позицию на баре по сигналу;
- на следующем баре выставить лимитную заявку на закрытие.
что-то типа такого:
есть вероятность того, что на баре открытия и до бара отправки заявки закрытия по лимиту (take) цена может сходить до лимитной цены take и уже больше туда не прийти, а заявки на take ещё не выставлялось.
Т.е. есть 1 бар временного лага, когда тейка (LMT заявки закрытия) не будет вообще, а позиция будет уже открыта!
Ещё нужно учитывать то, что CloseLongLimit() и CloseShortLimit() выполняются по цене, а не дельте, но это не особо "проблема".
В итоге:
1. Действительно, в АД4 не хватает заявки типа CloseLongLimit(), CloseShortLimit(), работающих по аналогии с стоп заявками уходящими в очередь на исполнение после заявок открытия позиции. Ну и возможность задавать их с параметром SignalPriceType как у стоп заявок.
2. Выход пока только в виде BreakingStop() с большим стопом ( но есть вероятность что он когда-то выстрелит (исполнится) )
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() с большим стопом ( но есть вероятность что он когда-то выстрелит (исполнится) )
никогда такого не было и вот опять
- evge
- Администратор
- Сообщения: 1811
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 366 раз
- Контактная информация:
Re: Take Profit без Stop Loss (BreakingStop)
Пример сказанного выше:
а теперь вариант команд подряд:
и вариант с BreakingStop() и большим, "маловероятно" исполнимым стопом:
Код: Выделить всё
function Initialize()
{
StrategyName = "AA";
AddParameter("TakeProfit", 0.1, "", 1);
AddInput("Input1", Inputs.Candle, 1, true, "");
LongLimit = 1;
ShortLimit = -1;
}
function OnUpdate()
{
if (CurrentPosition() > 0)
{
CloseLongLimit(AverPrice() * (1 + 0.01 * TakeProfit));
}
if (CurrentPosition() == 0)
{
EnterLong();
}
}
а теперь вариант команд подряд:
Код: Выделить всё
function Initialize()
{
StrategyName = "AA";
AddParameter("TakeProfit", 0.1, "", 1);
AddInput("Input1", Inputs.Candle, 1, true, "RIU9=ФОРТС");
LongLimit = 1;
ShortLimit = -1;
}
function OnUpdate()
{
if (CurrentPosition() == 0)
{
EnterLong();
CloseLongLimit(AverPrice() * (1 + 0.01 * TakeProfit));
}
}
и вариант с BreakingStop() и большим, "маловероятно" исполнимым стопом:
Код: Выделить всё
function Initialize()
{
StrategyName = "AA";
AddParameter("TakeProfit", 0.1, "", 1);
AddInput("Input1", Inputs.Candle, 1, true, "RIU9=ФОРТС");
LongLimit = 1;
ShortLimit = -1;
}
function OnUpdate()
{
if (CurrentPosition() == 0)
{
EnterLong();
BreakingStop(10, TakeProfit, SignalPriceType.DeltaInPercentFromAveragePrice);
}
}
никогда такого не было и вот опять
Вернуться в «Общие вопросы по разработке»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей