Общие вопросы по разработке > Как посчитать убыточную сделку.

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
elktrade
Сообщения: 10
Зарегистрирован: 11 апр 2017, 11:41
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Как посчитать убыточную сделку.

Непрочитанное сообщение elktrade » 02 ноя 2017, 15:44

Подскажите, пожалуйста, какой-нибудь код по проще, чтобы я мог получать количество убыточных сделок.

Наваял нечто такое, а оно не считает :?

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

...
if(CurrentPosition() == 0 && PreviousPosition > 0 && PreviousPLper < 0) {CountBadTrade++;}
...
...
/// в конце стратегии
if(CurrentPosition() != PreviousPosition) {PreviousPosition = CurrentPosition();}
if(CurrentPLper() != PreviousPLper) {PreviousPLper = CurrentPLper();}

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

Re: Как посчитать убыточную сделку.

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

Может так попробовать? Сам не проверял, но по логике.

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

function Initialize()
{
...
AddGlobalVariable("LastPL", Types.Double);
AddGlobalVariable("Loss", Types.Int, 0);
}

function OnUpdate()
{

if (CurrentPosition() != 0 && LastPL < 0) Loss++;

LastPL = CurrentPL();

}
никогда такого не было и вот опять

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

Re: Как посчитать убыточную сделку.

Непрочитанное сообщение elktrade » 02 ноя 2017, 18:10

Если я правильно понял, в приведенном примере счетчик будет увеличиваться каждый бар, пока текущая позиция не равна нулю, а прибыль минусовая.
А мне бы нужно чтобы, одна убыточная сделка, посчиталась 1 раз, если потом после прибыльных сделок, была еще одна убыточная сделка то еще +1.

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

Re: Как посчитать убыточную сделку.

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

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

if (CurrentPosition() == 0 && LastPL < 0) Loss++;

LastPL = CurrentPL();


а так?
никогда такого не было и вот опять

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

Re: Как посчитать убыточную сделку.

Непрочитанное сообщение elktrade » 03 ноя 2017, 12:59

В общем из тех.поддержки написали, вдруг кому пригодится, предложили юзать RealizedPL(0)

RealizedPL без параметров возвращает общее значение,
Но если передавать индекс, то цифры будут как в отчёте в разделе операции.
То есть RealizedPL(0) - PL последней закрытой сделки (самая верхняя строка из операций)
1 - предпоследняя и так далее,
До RealizedPLCount()-1

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

Re: Как посчитать убыточную сделку.

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

Да, всё проще оказывается. Это добавили в одном из последних обновлений.

RealizedPL() – возвращает текущий реализованный доход по закрытым сделкам робота (стратегии).

RealizedPLCount() – Количество закрытых сделкок робота (стратегии).
RealizedPL(int index) – возвращает реализованный доход по индексу по закрытым сделкам робота (стратегии). 0 – от последней сделки.

в документации это есть.
никогда такого не было и вот опять


Вернуться в «Общие вопросы по разработке»

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

Сейчас этот форум просматривают: Bing [Bot] и 25 гостей