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

Обсуждение, описание стратегий и роботов, идеи для стратегий
Kuwalda
Сообщения: 1
Зарегистрирован: 13 апр 2017, 15:49
Благодарил (а): 1 раз

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

Непрочитанное сообщение Kuwalda » 13 апр 2017, 15:58

Уважаемые форумчане! Подскажите плиз, как прописать в роботе, увеличение лота в 2 раза, при подряд убыточной сделке. Например: первая сделка 1 лотом убыточная, вторая сделка 1*2=2 лота убыточна, третья сделка 2*2=4 лота прибыльная, четвертая сделка 1 лотом и тд.

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

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

Непрочитанное сообщение evge » 13 апр 2017, 17:18

пример мартингейл тут

или если это не мартингейл, то

завести на это глобальную переменную в Initialize() для текущего размера лота

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

AddGlobalVariable("Lot", Types.Int, 1);


при каждой убыточной сделке (как определить что убыток был это другой вопрос, например при использовании стоп-заявок) увеличиваем лот вдвое.

как пример, ручного закрытия убыточной сделки при убытке более 1% и увеличение лота вдвое

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

if (CurrentPLper() < -1)
{
ClosePosition();
Lot *= 2;
}


при прибыльной сделке Lot надо сбрасывать в первоначальное значение

как пример, выход из прибыльной позиции при прибыли более 2% и сброс лота

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

if (CurrentPLper() > 2)
{
ClosePosition();
Lot = 1;
}


ну и понятно, что вход в позицию при наступлении условия необходимо выполнять размером в Lot

пример (условия для входа только для примера)

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

if (Input1.Close > Input1.Open && CurrentPosition() == 0)
{
EnterLong(Lot);
}

if (Input1.Close < Input1.Open && CurrentPosition() == 0)
{
EnterShort(Lot);
}


Максимальную позицию по Long и Short задаем в самой стратегии при тестировании или в роботе.
никогда такого не было и вот опять

elktrade
Сообщения: 10
Зарегистрирован: 11 апр 2017, 11:41
Благодарил (а): 1 раз
Поблагодарили: 1 раз

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

Непрочитанное сообщение elktrade » 21 апр 2017, 17:51

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


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


Добрый день, а случаем нет такого метода, который возвращал бы сколько баров назад исполнилась последняя(или хоть какая-нибудь) сделка?

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

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

Непрочитанное сообщение evge » 22 апр 2017, 08:47

elktrade писал(а):возвращал бы сколько баров назад исполнилась последняя(или хоть какая-нибудь) сделка?


в по документации по скриптам АД4 нет такого метода и не упоминается возможность, конечно желательно иметь такую возможность. Ведь отчет по роботу \ стратегии строит на основании совершенных сделок графики, показывает отчет по операциям. Т.е. эти данные доступны и хранятся в стратегии \ роботе при исполнении, а значит их скорее всего можно сделать доступными и в коде стратегий.

Надо на оф. форуме задать вопрос \ предложение по реализации доступа к совершенным сделкам стратегии.
никогда такого не было и вот опять

KakTak
Сообщения: 128
Зарегистрирован: 21 мар 2016, 17:55

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

Непрочитанное сообщение KakTak » 05 авг 2017, 04:51

а как насчёт? а что если? В страте постоянно пересекаются условия и даются сигналы то лонг то шорт, но когда прописываю этот код на удвоение позы и лимит например 10- контрактов, алгоритм начинает набирать позицию по 1 контракту до 10, но блин почему только в одну сторону???????, хотя по стратегии 10 сигналов в одну сторону не проходит ПОДРЯД, когда алгоритм набирает 10 контрактов например в лонг он это дело быстренько продаёт и ждёт следующего сигнала если опять лонг то по кругу, если шорт то тока шорт. Че делать куда тыкать?

KakTak
Сообщения: 128
Зарегистрирован: 21 мар 2016, 17:55

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

Непрочитанное сообщение KakTak » 05 авг 2017, 04:54

PS/ блин код что прописывал был на первой странице этого поста, вторую уже потом прочитал

KakTak
Сообщения: 128
Зарегистрирован: 21 мар 2016, 17:55

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

Непрочитанное сообщение KakTak » 05 авг 2017, 05:04

все что в топике попробовал замкнутый круг один и тот же, Evge Подскажи плз. if open>close; { EnterLongLimit(GetBid());


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

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

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