Стратегии и роботы > Удвоить позицию
Re: Удвоить позицию
Уважаемые форумчане! Подскажите плиз, как прописать в роботе, увеличение лота в 2 раза, при подряд убыточной сделке. Например: первая сделка 1 лотом убыточная, вторая сделка 1*2=2 лота убыточна, третья сделка 2*2=4 лота прибыльная, четвертая сделка 1 лотом и тд.
- evge
- Администратор
- Сообщения: 1813
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: Удвоить позицию
пример мартингейл тут
или если это не мартингейл, то
завести на это глобальную переменную в Initialize() для текущего размера лота
при каждой убыточной сделке (как определить что убыток был это другой вопрос, например при использовании стоп-заявок) увеличиваем лот вдвое.
как пример, ручного закрытия убыточной сделки при убытке более 1% и увеличение лота вдвое
при прибыльной сделке Lot надо сбрасывать в первоначальное значение
как пример, выход из прибыльной позиции при прибыли более 2% и сброс лота
ну и понятно, что вход в позицию при наступлении условия необходимо выполнять размером в Lot
пример (условия для входа только для примера)
Максимальную позицию по Long и Short задаем в самой стратегии при тестировании или в роботе.
или если это не мартингейл, то
завести на это глобальную переменную в 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 задаем в самой стратегии при тестировании или в роботе.
никогда такого не было и вот опять
-
- Сообщения: 10
- Зарегистрирован: 11 апр 2017, 11:41
- Благодарил (а): 1 раз
- Поблагодарили: 1 раз
Re: Удвоить позицию
evge писал(а):A.Lemzhin писал(а):Добрый день.
Для Размера открытой позиции есть оператор CurrentPosition, для Учетной цены - AverPrice. Есть ли оператор для Цена Последней Позиции?
на сегодня нет, но можно запомнить предполагаемую цену в глоб. переменной и использовать, когда сделка произойдёт и изменится CurrentPosition(). Однако, это не реальная цена исполнения будет, а желаемая в случае с открытием по Stop'у.
Добрый день, а случаем нет такого метода, который возвращал бы сколько баров назад исполнилась последняя(или хоть какая-нибудь) сделка?
- evge
- Администратор
- Сообщения: 1813
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: Удвоить позицию
elktrade писал(а):возвращал бы сколько баров назад исполнилась последняя(или хоть какая-нибудь) сделка?
в по документации по скриптам АД4 нет такого метода и не упоминается возможность, конечно желательно иметь такую возможность. Ведь отчет по роботу \ стратегии строит на основании совершенных сделок графики, показывает отчет по операциям. Т.е. эти данные доступны и хранятся в стратегии \ роботе при исполнении, а значит их скорее всего можно сделать доступными и в коде стратегий.
Надо на оф. форуме задать вопрос \ предложение по реализации доступа к совершенным сделкам стратегии.
никогда такого не было и вот опять
Re: Удвоить позицию
а как насчёт? а что если? В страте постоянно пересекаются условия и даются сигналы то лонг то шорт, но когда прописываю этот код на удвоение позы и лимит например 10- контрактов, алгоритм начинает набирать позицию по 1 контракту до 10, но блин почему только в одну сторону???????, хотя по стратегии 10 сигналов в одну сторону не проходит ПОДРЯД, когда алгоритм набирает 10 контрактов например в лонг он это дело быстренько продаёт и ждёт следующего сигнала если опять лонг то по кругу, если шорт то тока шорт. Че делать куда тыкать?
Re: Удвоить позицию
PS/ блин код что прописывал был на первой странице этого поста, вторую уже потом прочитал
Re: Удвоить позицию
все что в топике попробовал замкнутый круг один и тот же, Evge Подскажи плз. if open>close; { EnterLongLimit(GetBid());
Вернуться в «Стратегии и роботы»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 13 гостей