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

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

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

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

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

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

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

Добавлено: 02 ноя 2017, 17:41
evge
Может так попробовать? Сам не проверял, но по логике.

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

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

function OnUpdate()
{

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

LastPL = CurrentPL();

}

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

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

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

Добавлено: 02 ноя 2017, 20:44
evge

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

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

LastPL = CurrentPL();


а так?

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

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

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

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

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

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

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

в документации это есть.