Стратегии и роботы > Удвоить позицию

Обсуждение, описание стратегий и роботов, идеи для стратегий
A.Lemzhin
Сообщения: 9
Зарегистрирован: 31 янв 2017, 12:07

Удвоить позицию

Непрочитанное сообщение A.Lemzhin » 31 янв 2017, 12:15

Можно ли прописать в стратегии робота удвоение позиции Лонг (Шорт) если цена закрытия меньше (больше) цены открытой позиции?

Аватара пользователя
evge
Администратор
Сообщения: 1811
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 366 раз
Контактная информация:

Re: Удвоить позицию

Непрочитанное сообщение evge » 31 янв 2017, 13:47

Можно,

AverPrice() - цена открытой позиции
CurrentPosition() - текущая позиция

EnterLong(Q) - открыть позицию в long на Q шт, но не больше максимальной позиции long стратегии
EnterShort(Q) - открыть позицию в short на Q шт, но не больше максимальной позиции short стартегии

всё это поможет удвоить позицию

подобное этому

Код: Выделить всё

//удвоение уже открытой позиции
if (Input1.Close[0] > AverPrice() && CurrentPosition() < 0) EnterShort(-CurrentPosition());
if (Input1.Close[0] < AverPrice() && CurrentPosition() > 0) EnterLong(CurrentPosition());


это удвоение УЖЕ открытой позиции,
необходимо ещё в стратегии условия на открытие первоначальной позиции. Конечно открытие первоначальной позиции должно быть меньше максимально возможной, т.к. удвоение иначе работать не будет. Например, так EnterLong(Q) - Q кол-во первоначальное меньшее в 2 и более раза чем LongLimit стратегии.
никогда такого не было и вот опять

Аватара пользователя
Gluker
Сообщения: 12
Зарегистрирован: 31 мар 2016, 09:25
Благодарил (а): 9 раз
Поблагодарили: 1 раз

Re: Удвоить позицию

Непрочитанное сообщение Gluker » 31 янв 2017, 17:06

evge писал(а):

Код: Выделить всё

//удвоение уже открытой позиции
if (Input1.Close[0] > AverPrice() && CurrentPosition() < 0) EnterShort(-CurrentPosition() * 2);
if (Input1.Close[0] < AverPrice() && CurrentPosition() > 0) EnterLong(CurrentPosition() * 2);


это удвоение УЖЕ открытой позиции,


EnterShort(-CurrentPosition() * 2) - разве это не утроение позиции?

Аватара пользователя
evge
Администратор
Сообщения: 1811
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 366 раз
Контактная информация:

Re: Удвоить позицию

Непрочитанное сообщение evge » 31 янв 2017, 17:14

Да, поправил. Там не утроение. Там не нужно * 2, вообще.

position-add-01.png
Удвоение позиции
position-add-01.png (25.52 КБ) 24576 просмотров
никогда такого не было и вот опять

A.Lemzhin
Сообщения: 9
Зарегистрирован: 31 янв 2017, 12:07

Re: Удвоить позицию

Непрочитанное сообщение A.Lemzhin » 31 янв 2017, 17:23

Спасибо за помощь. Всё отлично работает!

A.Lemzhin
Сообщения: 9
Зарегистрирован: 31 янв 2017, 12:07

Re: Удвоить позицию

Непрочитанное сообщение A.Lemzhin » 31 янв 2017, 19:33

А можно дополнительно в условии прописать:
if (Input1.Close[0] < AverPrice() * Коэффициент && CurrentPosition() > 0) EnterLong(CurrentPosition())

Аватара пользователя
evge
Администратор
Сообщения: 1811
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 366 раз
Контактная информация:

Re: Удвоить позицию

Непрочитанное сообщение evge » 31 янв 2017, 20:48

A.Lemzhin писал(а):А можно дополнительно в условии прописать:
if (Input1.Close[0] < AverPrice() * Коэффициент && CurrentPosition() > 0) EnterLong(CurrentPosition())


Конечно, это условие "можно" менять как угодно. Добавьте параметр коэф. в стратегии и добавляйте его в условие.
Здесь нельзя менять только CurrentPosition() > 0, т.к. в данном случае мы проверяем обязательное наличие позиции лонг.
никогда такого не было и вот опять

A.Lemzhin
Сообщения: 9
Зарегистрирован: 31 янв 2017, 12:07

Re: Удвоить позицию

Непрочитанное сообщение A.Lemzhin » 01 фев 2017, 14:02

Спасибо. Всё получилось! ...... хотя большой радости при тестировании стратегии не принесло..... :D

A.Lemzhin
Сообщения: 9
Зарегистрирован: 31 янв 2017, 12:07

Re: Удвоить позицию

Непрочитанное сообщение A.Lemzhin » 16 фев 2017, 17:18

Добрый день.
Для Размера открытой позиции есть оператор CurrentPosition, для Учетной цены - AverPrice. Есть ли оператор для Цена Последней Позиции?

Аватара пользователя
evge
Администратор
Сообщения: 1811
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 366 раз
Контактная информация:

Re: Удвоить позицию

Непрочитанное сообщение evge » 16 фев 2017, 17:59

A.Lemzhin писал(а):Добрый день.
Для Размера открытой позиции есть оператор CurrentPosition, для Учетной цены - AverPrice. Есть ли оператор для Цена Последней Позиции?


на сегодня нет, но можно запомнить предполагаемую цену в глоб. переменной и использовать, когда сделка произойдёт и изменится CurrentPosition(). Однако, это не реальная цена исполнения будет, а желаемая в случае с открытием по Stop'у.
никогда такого не было и вот опять


Вернуться в «Стратегии и роботы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя