Romoti
Зарегистрирован: 07.06.2008
Сообщения: 17
Откуда: Екатеринбург
|
Была задача определить в какой позиции находится система на последних барах, чтобы пока позиция не закрыта, не отрисовывался уровень закрытия сделки, т.к. этого уровня еще нет. Получился вот такой довольно грамоздкий по обьему индикатор. Может как то можно проще создать массив соответствующий последней незакрытой сделке ?
Код: |
NumLastBar = LastValue( BarIndex() ); // определяем номер последнего бара //
NumLastBuy = LastValue( Highest (IIf(Ref(Buy, 1), BarIndex(), Null))); // определяем номер последнего бара если есть сигнал Buy //
NumLastSell = LastValue( Highest (IIf(Ref(Sell, 1), BarIndex(), Null))); // определяем номер последнего бара если есть сигнал Sell //
NumLastShort = LastValue( Highest (IIf(Ref(Short, 1), BarIndex(), Null))); // определяем номер последнего бара если есть сигнал Short //
NumLastCover = LastValue( Highest (IIf(Ref(Cover, 1), BarIndex(), Null))); // определяем номер последнего бара если есть сигнал Cover //
NumLastMax = Max(Max(NumLastBuy,NumLastSell),Max(NumLastShort,NumLastCover)); // определяем номер бара последнего сигнала //
// LastPoza = если открыта Buy - 1 ; Short - 2 ; иначе -0 //
LastPoza = IIf ( NumLastBuy == NumLastMax AND NumLastMax < NumLastBar , 1, IIf ( NumLastShort == NumLastMax AND NumLastMax < NumLastBar , 2, 0));//
//заполняем массив "poza" на барах последней открытой сделки //
poza = 0; //
if (LastPoza ==1 OR LastPoza ==2) //
{ //
for (i = NumLastMax ; i < NumLastBar ; i++ ) //
poza[i+1] = LastPoza; //
} //
ColorLastPoza = IIf (poza == 1 ,colorBlue, IIf(poza == 2,colorRed,colorGrey40)); //полоска соответствующая последней открытой позиции //
Plot( 1, "Ribbon", ColorLastPoza, styleOwnScale|styleArea|styleNoLabel, -1, 100 ); |
|
_________________ Romoti. |
|