Стратегии и роботы > Стратегия Invest_Positive
- evge
- Администратор
- Сообщения: 1808
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 365 раз
- Контактная информация:
Re: Стратегия Invest_Positive
Небольшая доработка в стратегиях Positive и Negative.
Добавлено ещё одно правило (5).
и добавлен параметр
Poor - закрытие частями докупленной / допроданной позиции при изменении цены на дельту от последней цены в области докупки / допродажи
Выгодно это будет при долгой просадке и блуждании цены в предполагаемой области докупки / допродажи.
Параметр задается как 0 - нет частичного закрытия, НЕ 0, т.е. любое число - будет частичное закрытие.
Пример
Скачать обе стратегии
Добавлено ещё одно правило (5).
и добавлен параметр
Poor - закрытие частями докупленной / допроданной позиции при изменении цены на дельту от последней цены в области докупки / допродажи
Выгодно это будет при долгой просадке и блуждании цены в предполагаемой области докупки / допродажи.
Параметр задается как 0 - нет частичного закрытия, НЕ 0, т.е. любое число - будет частичное закрытие.
Пример
Скачать обе стратегии
никогда такого не было и вот опять
- Simonov
- Сообщения: 89
- Зарегистрирован: 20 сен 2017, 11:36
- Благодарил (а): 83 раза
- Поблагодарили: 20 раз
Re: Стратегия Invest_Positive
evge писал(а):Небольшая доработка в стратегиях Positive и Negative.
Полезная доработка! Спасибо большое!
-
- Сообщения: 9
- Зарегистрирован: 13 мар 2019, 20:17
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
Re: Стратегия Invest_Positive
Евгений, добрый день. Помогите пожалуйста немного изменить правила стратегии Invest_Positive.
Сейчас после открытия позиции может быть две ситуации:
1.Цена пошла ниже-мы докупаем по сетке и продаем дополнительно набранные позиции когда цена вернулась на стартовый уровень- это оставляем без изменений.
2.Цена пошла выше- сейчас в стратегия продает актив только когда он достигнет нужного уровня. Если актив нужного уровня не достигнет, стратегия будет держать прибыльную позиции без фиксации.Прошу добавить возможность постепенно распродавать актив по сетке. К примеру с шагом в процентах или в диапазоне до нужного уровня цены. При откатах не докупать, что бы не увеличивать среднею стоимость по инструменту. Если цена по инструменты возвращается к стартовому уровню то мы снова докупаем ранее распроданный объем и все начинается по кругу- при росте распродажа, при снижение набор позиции. Важно, не докупать инструмент пока мы находимся в зоне выше стартовой.
Надеюсь смог изъяснить мысль, буду признателен за помощь.
Сейчас после открытия позиции может быть две ситуации:
1.Цена пошла ниже-мы докупаем по сетке и продаем дополнительно набранные позиции когда цена вернулась на стартовый уровень- это оставляем без изменений.
2.Цена пошла выше- сейчас в стратегия продает актив только когда он достигнет нужного уровня. Если актив нужного уровня не достигнет, стратегия будет держать прибыльную позиции без фиксации.Прошу добавить возможность постепенно распродавать актив по сетке. К примеру с шагом в процентах или в диапазоне до нужного уровня цены. При откатах не докупать, что бы не увеличивать среднею стоимость по инструменту. Если цена по инструменты возвращается к стартовому уровню то мы снова докупаем ранее распроданный объем и все начинается по кругу- при росте распродажа, при снижение набор позиции. Важно, не докупать инструмент пока мы находимся в зоне выше стартовой.
Надеюсь смог изъяснить мысль, буду признателен за помощь.
- evge
- Администратор
- Сообщения: 1808
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 365 раз
- Контактная информация:
Re: Стратегия Invest_Positive
Приветствую! Ок, принято. Завтра посмотрю как можно доработать. Отпишу здесь.
никогда такого не было и вот опять
- evge
- Администратор
- Сообщения: 1808
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 365 раз
- Контактная информация:
Re: Стратегия Invest_Positive
Модифицированный (предварительный) вариант на проверку.
Добавлен параметр QC, который задается в кол-ве шт для закрытия частями при движении к целевой цене. Дельту до максимальной цены рассчитывает автоматически, по тому же принципу что и докупку при падении.
пример работы и параметры тестирования на таймфрейме M5:
Добавлен параметр QC, который задается в кол-ве шт для закрытия частями при движении к целевой цене. Дельту до максимальной цены рассчитывает автоматически, по тому же принципу что и докупку при падении.
Код: Выделить всё
/**
Инвестиционная стратегия.
При старте покупает по текущим ценам начальный объем qStart.
Докупает на Q при снижении цены, не более позиции робота и не ниже порога (cmin).
Продает докупленное кол-во при росте цены выше цены начальной покупки.
Если Poor не равен 0, докупка закрывается частями по цене выше чем последняя цена на дельту.
Продает весь объем при росте цены выше целевой цены и останавливается
Algorithm = ИНВЕСТИЦИИ;**/
function Initialize()
{
StrategyName = "Invest_positive";
AddParameter("qStart", 1000, "Сколько купить при старте", 0);
AddParameter("cmax", 160, "Целевая цена", 0);
AddParameter("QC", 100, "Шаг закрытия позиции в штуках", 0);
AddParameter("cmin", 60, "Нижний порог покупки", 0);
AddParameter("Q", 100, "Шаг покупки в штуках", 0);
AddParameter("Poor", 0, "Закрывать докупки частями, если значение не 0", 0);
AddInput("Input1", Inputs.Candle, 1, true, "");
AddGlobalVariable("LastPrice", Types.Double, 100000000000);
AddGlobalVariable("LastPriceClose", Types.Double, 100000000000);
AddGlobalVariable("FirstPrice", Types.Double, 0);
AddGlobalVariable("DeltaPrice", Types.Double, 0);
AddGlobalVariable("DeltaPriceClose", Types.Double, 0);
}
function OnUpdate()
{
// В момент запуска покупаем qStart акций
// Основная прибыль: продаем qStart акций по цели (cmax)
// Дополнительно: ниже цены старта покупаем (но не ниже cmin), выше продаем
// evge 14.03.2019 https://alfadirect4.ru
// модификация стратегии с закрытием по частям при движении к целевой цене
double c = Input1.Close[0];
double pos = CurrentPosition();
double qStep;
// Правило 1: Открытие позиции на начальный объем
// и расчет DeltaPrice
if ( (LastPrice == 100000000000) )
{
// Проверки
if (Q <= 0)
{
ShowMessage("Не задано Q - шаг количества");
Stop();
}
if ( cmin >= cmax )
{
ShowMessage("cmin больше, чем cmax ");
Stop();
}
// Открываем позицию, если стартовое кол-во больше 0
if (qStart > 0)
EnterLong(qStart);
LastPrice = c;
LastPriceClose = c;
FirstPrice = c;
// Расчитываем дельту цены для докупки
if (Q > 0 )
{
qStep = (LongLimit - qStart) / Q ;
DeltaPrice = (LastPrice - cmin) / qStep;
}
// Расчитываем дельту цены для закрытия позиции частями
if (QC > 0 )
{
qStep = qStart / QC ;
DeltaPriceClose = (cmax - LastPrice) / qStep;
}
}
// Правило 2: Закрытие всей позиции при достижении сmax
if ( c > cmax)
{
CloseLong();
//ShowMessage("Цена достигла цели, робот закрывает позицию и будет остановлен");
//Stop();
// Остановка робота
}
// Правило 2.1: закрытие позиции частями
if ( c > LastPriceClose + DeltaPriceClose && c < cmax )
{
CloseLong(QC);
LastPriceClose = c;
}
// Правило 2.2: повторный старт
if ( pos < qStart && c <= FirstPrice)
{
EnterLong(qStart - pos);
LastPrice = c;
LastPriceClose = c;
//FirstPrice = c;
}
// Правило 3: Добавление к позиции при падении
if ( c < LastPrice - DeltaPrice && c > cmin )
{
EnterLong(Q);
LastPrice = c;
}
// Правило 4: Продажа докупки росте цены выше стартовой цены
if ( c > FirstPrice && pos > qStart)
{
CloseLong(pos - qStart);
LastPrice = c;
}
// Правило 5: Закрытие докупленной части позиции при росте выше последней цены на deltaPrice
if ( Poor != 0 && c > LastPrice + DeltaPrice && pos > qStart)
{
CloseLong(Q);
LastPrice = c;
}
}
пример работы и параметры тестирования на таймфрейме M5:
никогда такого не было и вот опять
-
- Сообщения: 9
- Зарегистрирован: 13 мар 2019, 20:17
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
Re: Стратегия Invest_Positive
Предварительно, все идеально, как я хотел. Вечером протестирую, дам обратную связь. Огромное спасибо Евгений!
- evge
- Администратор
- Сообщения: 1808
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 365 раз
- Контактная информация:
Re: Стратегия Invest_Positive
Если что-то не так, сообщайте, поправлю код.
никогда такого не было и вот опять
-
- Сообщения: 9
- Зарегистрирован: 13 мар 2019, 20:17
- Благодарил (а): 7 раз
- Поблагодарили: 1 раз
Re: Стратегия Invest_Positive
Доброе время. Протестировал. Система работает как хотел.
Стратегия весьма эффективна в инструментах типа Газпром (годами ходит в боковике) или поможет набрать портфель на интересном активе при инвестировании. Пара тестов показали, что частичное закрытие позиции в зоне ниже нуля ухудшали итоговую прибыль. На мой взгляд лучше не крыть позиции в убыточной зоне, надо давать прибыли вырасти.
Спасибо Евгений!
Стратегия весьма эффективна в инструментах типа Газпром (годами ходит в боковике) или поможет набрать портфель на интересном активе при инвестировании. Пара тестов показали, что частичное закрытие позиции в зоне ниже нуля ухудшали итоговую прибыль. На мой взгляд лучше не крыть позиции в убыточной зоне, надо давать прибыли вырасти.
Спасибо Евгений!
- ip851874
- Сообщения: 42
- Зарегистрирован: 21 ноя 2020, 22:56
- Откуда: Москва
- Благодарил (а): 14 раз
- Контактная информация:
Re: Стратегия Invest_Positive
Приветствую!
При тестировании возник вопрос, не могу уловить как считается дельта для продажи докупленного объема![Вопрос :?:](./images/smilies/icon_question.gif)
При тестировании возник вопрос, не могу уловить как считается дельта для продажи докупленного объема
![Вопрос :?:](./images/smilies/icon_question.gif)
Вернуться в «Стратегии и роботы»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 31 гость