Страница 2 из 2

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

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

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

Добавлено: 13 апр 2017, 17:18
evge
пример мартингейл тут

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

завести на это глобальную переменную в 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 задаем в самой стратегии при тестировании или в роботе.

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

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


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


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

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

Добавлено: 22 апр 2017, 08:47
evge
elktrade писал(а):возвращал бы сколько баров назад исполнилась последняя(или хоть какая-нибудь) сделка?


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

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

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

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

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

Добавлено: 05 авг 2017, 04:54
KakTak
PS/ блин код что прописывал был на первой странице этого поста, вторую уже потом прочитал

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

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