Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Индикатор локальных экстремумов Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
Амиброкеровец



Зарегистрирован: 30.12.2008
Сообщения: 214
Откуда: Воображляндия

СообщениеДобавлено: Вс Ноя 15, 2009 6:40 pm Ответить с цитатой Вернуться к началу

Всем привет.

Есть такой индикатор локальных экстремумов:

Код:
SetBarsRequired(1000000, 0);

up = L > Ref(L, -1) & H >= Ref(H, -1);
dw = L <= Ref(L, -1) & H < Ref(H, -1);

up = ExRem(up, dw);
dw = ExRem(dw, up);

swing = Flip(up, dw);

x = 0;
x0 = 0;
y = 0;
y0 = 0;

Hi = 0;
Lo = 0;
Line = Null;

function swingline(x0, x, y0, y)
{
   m = (y-y0)/(x-x0);
   for(j = x0; j <= x; j++)
   {
      Line[j] = y0 + (j-x0)*m;
   }
return Line;
}

for( i = 1; i < BarCount; i++ )
{
   if(swing[i] == 1)
   {
      if(up[i] == 1)
      {
         Lo[x] = y;

         y0 = y;
         x0 = x;

         y = H[i];
         x = i;
         swingline(x0, x, y0, y);
      }
      else if(H[i] > y)
      {
         y = H[i];
         x = i;
         swingline(x0, x, y0, y);
      }
   }
   else
   {
      if(dw[i] == 1)
      {
         Hi[x] = y;

         y0 = y;
         x0 = x;

         y = L[i];
         x = i;
         swingline(x0, x, y0, y);
      }
      else if(L[i] < y)
      {
         y = L[i];
         x = i;
         swingline(x0, x, y0, y);
      }       
   }
}

Hm = Hi > 0;
Lm = Lo > 0;
mup = Hm & ValueWhen(Hm, H, 2) < H & ValueWhen(Hm, H, 0) < H;
mdw = Lm & ValueWhen(Lm, L, 2) > L & ValueWhen(Lm, L, 0) > L;
mswing = 1; // принимаем начальное значение 1 (просто так)
mLine = Null;
LineCol = 0;

function mswingline(x0, x, y0, y)
{
   m = (y-y0)/(x-x0);
   for(j = x0; j <= x; j++)
   {
      mLine[j] = y0 + (j-x0)*m;
      LineCol[j] = IIf ( y-y0>= 0, colorGreen, colorRed );
   }
return mLine;
}

x = 0;
x0 = 0;
y = 0;
y0 = 0;
mup1 = 0;
for( i = 1; i < BarCount; i++ )
{
   if(mswing == 1)
   {
      if(mup[i]) // проверяем только бары на которых среднесрочн. максимум
      {
         if(H[i] > mup1) // ищем самый высокий mup (если их несколько подряд)
         {
            x = i;
            y = H[i];
            mup1 = H[i]; // запоминаем новое значение mup
            mswingline(x0, x, y0, y);
         }
      }
      else if(mdw[i]) // реверс
      {
         mswing = 0;
         mdw1 = L[i]; // запоминаем значение для последующего сравнения и поиска минимального
         x0 = x;
         y0 = y;
         x = i;
         y = L[i];
         mswingline(x0, x, y0, y); // рисуем новую линию свинга
      }
   }
   else
   {
      if(mdw[i]) // проверяем только бары на которых среднесрочн. мин.
      {
         if(L[i] < mdw1)
         {
            x = i;
            y = L[i];
            mdw1 = L[i]; // запоминаем новое значение mdw
            mswingline(x0, x, y0, y);
         }
      }
      else if(mup[i]) // реверс
      {
         mswing = 1;
         mup1 = H[i]; // запоминаем значение для последующего сравнения и поиска максимального
         x0 = x;
         y0 = y;
         x = i;
         y = H[i];
         mswingline(x0, x, y0, y); // рисуем новую линию свинга
      }
   }
}

Plot(C, "", colorBlack, styleBar);
//PlotShapes((Hi>0)*shapeSmallDownTriangle, colorGreen, 0, H);
//PlotShapes((Lo>0)*shapeSmallUpTriangle, colorRed, 0, L);
//Plot(mup, "", colorGreen, styleHistogram|styleOwnScale);
//Plot(mdw, "", colorRed, styleHistogram|styleOwnScale);

//SecondCol = IIf ( y-y0>= 0, colorGreen, colorRed );

Plot(mLine, "", LineCol, styleThick);


Как мне к нему добавить функцию расчета объемов на каждой линии и чтобы рассчитанный объем писался на графике (см. прикр. файл с примером)

Вот отдельно функция расчет объемов на выделенном регионе

Код:
FirstBar = BeginValue(BarIndex()) == BarIndex(); // 1 в начале выделенного диапазона
LastBar = EndValue(BarIndex()) == BarIndex(); // 1 в конце выделенного диапазона
Range = Flip(FirstBar, LastBar); // 1 внутри выделенного диапазона

CumVolume = Cum(Nz(Vo)*Range);

Title = " Объем на выбранном диаппазоне " + NumToStr(CumVolume, format = 1);

_________________
Антон
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Ноя 16, 2009 12:25 am Ответить с цитатой Вернуться к началу

Вот так получилось
Код:

SetBarsRequired(1000000, 0);

up = L > Ref(L, -1) & H >= Ref(H, -1);
dw = L <= Ref(L, -1) & H < Ref(H, -1);

up = ExRem(up, dw);
dw = ExRem(dw, up);

swing = Flip(up, dw);

x = 0;
x0 = 0;
y = 0;
y0 = 0;

Hi = 0;
Lo = 0;
Line = Null;

function swingline(x0, x, y0, y)
{
   m = (y-y0)/(x-x0);
   for(j = x0; j <= x; j++)
   {
      Line[j] = y0 + (j-x0)*m;
   }
return Line;
}

for( i = 1; i < BarCount; i++ )
{
   if(swing[i] == 1)
   {
      if(up[i] == 1)
      {
         Lo[x] = y;

         y0 = y;
         x0 = x;

         y = H[i];
         x = i;
         swingline(x0, x, y0, y);
      }
      else if(H[i] > y)
      {
         y = H[i];
         x = i;
         swingline(x0, x, y0, y);
      }
   }
   else
   {
      if(dw[i] == 1)
      {
         Hi[x] = y;

         y0 = y;
         x0 = x;

         y = L[i];
         x = i;
         swingline(x0, x, y0, y);
      }
      else if(L[i] < y)
      {
         y = L[i];
         x = i;
         swingline(x0, x, y0, y);
      }       
   }
}

Hm = Hi > 0;
Lm = Lo > 0;
mup = Hm & ValueWhen(Hm, H, 2) < H & ValueWhen(Hm, H, 0) < H;
mdw = Lm & ValueWhen(Lm, L, 2) > L & ValueWhen(Lm, L, 0) > L;
mswing = 1; // принимаем начальное значение 1 (просто так)
mLine = Null;
LineCol = 0;
CumVol = 0;

function mswingline(x0, x, y0, y)
{
   m = (y-y0)/(x-x0);
   for(j = x0; j <= x; j++)
   {
      mLine[j] = y0 + (j-x0)*m;
      LineCol[j] = IIf ( y-y0 >= 0, colorGreen, colorRed );
   }
return mLine;
}

procedure CumVolume(x0, x, y)
{
   for(j = x0; j <= x; j++)
   {
      CumVol[x] = CumVol[x] + V[j];
   }
   PlotText(NumToStr(CumVol[x]), x, y, colorBlack);
}

qq = 0;

x = 0;
x0 = 0;
y = 0;
y0 = 0;
mup1 = 0;
for( i = 1; i < BarCount; i++ )
{
   if(mswing == 1)
   {
      if(mup[i]) // проверяем только бары на которых среднесрочн. максимум
      {
         if(H[i] > mup1) // ищем самый высокий mup (если их несколько подряд)
         {
            x = i;
            y = H[i];
            mup1 = H[i]; // запоминаем новое значение mup
            mswingline(x0, x, y0, y);
         }
      }
      else if(mdw[i]) // реверс
      {
         mswing = 0;
         mdw1 = L[i]; // запоминаем значение для последующего сравнения и поиска минимального
         x0 = x;
         y0 = y;
         x = i;
         y = L[i];
         mswingline(x0, x, y0, y); // рисуем новую линию свинга
         CumVolume(x0, x, y);
      }
   }
   else
   {
      if(mdw[i]) // проверяем только бары на которых среднесрочн. мин.
      {
         if(L[i] < mdw1)
         {
            x = i;
            y = L[i];
            mdw1 = L[i]; // запоминаем новое значение mdw
            mswingline(x0, x, y0, y);
         }
      }
      else if(mup[i]) // реверс
      {
         mswing = 1;
         mup1 = H[i]; // запоминаем значение для последующего сравнения и поиска максимального
         x0 = x;
         y0 = y;
         x = i;
         y = H[i];
         mswingline(x0, x, y0, y); // рисуем новую линию свинга
         CumVolume(x0, x, y);
      }
   }
}

Plot(C, "", colorBlack, styleBar);
Plot(mLine, "", LineCol, styleThick);

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Амиброкеровец



Зарегистрирован: 30.12.2008
Сообщения: 214
Откуда: Воображляндия

СообщениеДобавлено: Пн Ноя 16, 2009 9:39 am Ответить с цитатой Вернуться к началу

Очень красиво, то что надо, Олег!!

_________________
Антон
Посмотреть профиль Отправить личное сообщение
max



Зарегистрирован: 01.08.2008
Сообщения: 253

СообщениеДобавлено: Пт Ноя 20, 2009 10:48 am Ответить с цитатой Вернуться к началу

Амиброкеровец писал(а):
Очень красиво, то что надо, Олег!!

если что, я такой брал на яхугрупп - поищи поиском по именти Ord (чувак в книжке которого это есть)
если не найдешь - пиши я попробую у себя на втором компе откапать
Посмотреть профиль Отправить личное сообщение
Амиброкеровец



Зарегистрирован: 30.12.2008
Сообщения: 214
Откуда: Воображляндия

СообщениеДобавлено: Сб Ноя 21, 2009 12:03 pm Ответить с цитатой Вернуться к началу

max писал(а):
Амиброкеровец писал(а):
Очень красиво, то что надо, Олег!!

если что, я такой брал на яхугрупп - поищи поиском по именти Ord (чувак в книжке которого это есть)
если не найдешь - пиши я попробую у себя на втором компе откапать


Можешь ссылку кинуть на яхугрупп , я искал тут, но глухo
http://finance.groups.yahoo.com/group/amibroker/msearch_adv?date=any&DM=------------&DD=----&DY=----&DM2=------------&DD2=----&DY2=----&AM=contains&AT=ord&SM=contains&ST=&MM=contains&MT=&charset=UTF-8&e=1

_________________
Антон
Посмотреть профиль Отправить личное сообщение
max



Зарегистрирован: 01.08.2008
Сообщения: 253

СообщениеДобавлено: Сб Ноя 21, 2009 10:35 pm Ответить с цитатой Вернуться к началу

держи код, но не уверен что внутри дня работает
книжку ищи на пауке. В принципе чувак пишет не глупые вещи и на элиттрейдере тусит

Код:
/*        Ord Volume by Peter Bjarheim
            Rev - 11-12-07
         
   Adjust "zig percent change" so that each swing last from 5 to 30 days
   (the the percentage, the more sigificant the swing is).
   
   Peak Volume Extreme Detection:
      ->Sometimes several days around the true swing price extreme, a higher volume extreme has been encountered.
      Back testing suggests that these swing volumes while rare, do occur and are significant.
   
   
---->   Rules For Trading from http://www.ord-oracle.com/
   
   
   This software is designed to pick out the swings in a stock and then measure the force between the swings. The
force is the amount of volume between the swings that pushes the stock in an up-mode or down-mode. Stocks trend
in the direction of the highest volume. Stocks correct or consolidate on lighter volume. By measuring the volume
between the swings and comparing to previous swings, one can "See" the force of a particular move developing in the
stock. In an uptrend the stock should have higher volume on the rally phase than the correction phase. In a
downtrend the stock should have higher volume on the declining phase than the up correction phase. With that in
mind, we have developed this software to do just that. Keep in mind that this software measures volume force in a
stock and is not implied to be a stand-alone tool to pick every turn in a stock. The Ord-volume software is designed
to help identify the probable direction by the volume flow the stock has. Other factors of the stock may push it in a
different direction.

1. To pick the strongest stock (in up-trend), average daily volume should shrink near 50% on correction phase
compared to the rally phase.

2. To pick the weakest stocks (in down-trend) average daily volume should shrink near 50% on up phase compared to
the declining phase.

Definition of a "Swing". A "Swing" is a price high or low where the stock changes direction.
Definition of "Ord-Volume". "Ord-volume" measures the average volume between "Swings".
Definition of "Ord-Volume Low". "Ord-Volume Low" is a down-leg in a stock.
Definition of "Ord-Volume High". "Ord-Volume High" is an up-leg in a stock.

3. A buy signal is triggered when a stock closes above a previous important "Ord-Volume low" where the current
"Ord-volume low" shrinks near 50% or greater against the "Important "Ord-volume low"". An "Important
"Ord-volume Low" is when that low marks a bottom where the equity starts a sideways consolidation.

4. A sell signal is triggered when a stock closes below a previous important "Ord-Volume High" where the current
"Ord-Volume High" shrinks near 50% or greater against the "Important "Ord-Volume High"". An "Important
"Ord-Volume High"" is when that high marks a top where the equity starts a sideways consolidation.

5. Target price Projections:
   5.1 An upside target for a buy signal will be the previous "Swing High". If volume is equal or greater on the test of the
   previous high then the next higher swing high will be the target and so on.

   5.2 A downside target after a sell signal will be the previous "Swing Low". If volume is equal or greater than the
   previous "Swing Low" then the next lower swing will be the target and so on.
   
*/
swingDays = 0;
swingVol = 0;
ordVol = 0;
upswingSignal = 0;
downswingSignal = 0;
accumulatedVolume = 0;
accumulatedDays = 0;
arrayHasSignal = 0;
zigPercentage = Param("ZigZag Percent", 10, 2, 50);
trendZig = Zig(C, zigPercentage);
action = Status("action");
midPointY = 0;
midPointValue = 0;
peakVolumeExtremeDetectionDays = Param("Peak Vol. Days", 6, 1, 20); //3 days before and 3 days after a peak
daysBeforeAndAfterForPeakVolume = round(peakVolumeExtremeDetectionDays/2);
peakVolume = 0;
colorOrdVolume = ParamColor("Ord Vol. Info.", colorGrey50);
colorZig = ParamColor("ZigZag", colorGold);
colorPeakUp = ParamColor("Support Info.", colorGreen);
colorPeakDown = ParamColor("Resistance Info.", colorRed);
scalingFactor = 0.1;


function volumeInMillions(inVolume)
{
   volInM = inVolume/1000000;
   return NumToStr(volInM, 1.2, False) + " m";
}

function getPeakVolume(daysToCheck, nowDay)
{
   returnPeakVolume = V[nowDay];
   dayNumberBefore = (nowDay) - daysToCheck;
   dayNumberAfter = (nowDay) + daysToCheck;
   //find Max swing Volume
   if( dayNumberBefore > 0 AND dayNumberAfter < BarCount )
   {
      returnPeakVolume = V[dayNumberBefore];
      //_TRACE("Start returnPeakVolume = " + returnPeakVolume);
      for( j = dayNumberBefore; j < dayNumberAfter; j++ )
      {
         if(returnPeakVolume < V[j])
         {
            returnPeakVolume = V[j];
         }
         //_TRACE("returnPeakVolume = " + returnPeakVolume);
      }
   }
   else if( dayNumberBefore > 0 AND dayNumberAfter >= BarCount )
   {
      returnPeakVolume = V[dayNumberBefore];
      //_TRACE("Start returnPeakVolume = " + returnPeakVolume);   
      for( j = dayNumberBefore; j < BarCount; j++ )
      {
         if(returnPeakVolume < V[j])
         {
            returnPeakVolume = V[j];
         }
         //_TRACE("returnPeakVolume = " + returnPeakVolume);         
      }
   }
   else
   {
      peakVolume = V[i-1];
   }
   
   return returnPeakVolume;
}

for( i = 3; i < BarCount; i++)
{
//initialize parameters
   arrayHasSignal[i] = 0;

//Then we check which way the price goes

   swingVol = swingVol + V[i-1];//Don't add today since price may have changed direction
   swingDays = swingDays + 1;

   if( (trendZig[i] < trendZig[i-1]) AND (trendZig[i-1] > trendZig[i-2]) AND i > 10 )//Changes from up swing to down swing
   {
      /*_TRACE("Changes from up swing to down swing, i = " + i);
      _TRACE("trendZig[i-2] = " + trendZig[i-2]);
      _TRACE("trendZig[i-1] = " + trendZig[i-1]);
      _TRACE("trendZig[i] = " + trendZig[i]);*/
      downswingSignal[i-1] = 0;
      upswingSignal[i-1] = 1;
      ordVol[i-1] = swingVol/swingDays;   
      accumulatedVolume[i-1] = swingVol;
      accumulatedDays[i-1] = swingDays;
      arrayHasSignal[i-1] = 1;
      if(action == actionIndicator)
      {
         midPointValue = i - round(swingDays/2) - 1;
         midPointY = trendZig[midPointValue];
         peakVolume = getPeakVolume(daysBeforeAndAfterForPeakVolume, i - 1);
         PlotText("(" + volumeInMillions(ordVol[i-1]) + ")", midPointValue, midPointY, colorOrdVolume);
         PlotText(NumToStr(H[i-1], 1.1, False) + " (" + volumeInMillions(peakVolume) + ")", i-4, trendZig[i-1] * 1.02, colorPeakUp);
      }
      swingVol = 0;
      swingDays = 0;
   }

   if( (trendZig[i] > trendZig[i-1]) AND (trendZig[i-1] < trendZig[i-2]) AND i > 10 )//Changes from down swing to up swing
   {
      downswingSignal[i-1] = 1;
      upswingSignal[i-1] = 0;
      ordVol[i-1] = swingVol/swingDays;
      accumulatedVolume[i-1] = swingVol;
      accumulatedDays[i-1] = swingDays;
      arrayHasSignal[i-1] = 1;
      if(action == actionIndicator)
      {
         midPointValue = i - round(swingDays/2) - 1;
         midPointY = trendZig[midPointValue];
         peakVolume = getPeakVolume(daysBeforeAndAfterForPeakVolume, i - 1);
         PlotText("(" + volumeInMillions(ordVol[i-1]) + ")", midPointValue, midPointY, colorOrdVolume);
         PlotText(NumToStr(L[i-1], 1.1, False) + " (" + volumeInMillions(peakVolume) + ")", i-4, trendZig[i-1] * 0.95, colorPeakDown);
      }   
      swingVol = 0;
      swingDays = 0;
   }
   if( i == BarCount - 1)//add last signal too
   {
      swingVol = swingVol + V[i];//Remember to add today also
      swingDays = swingDays + 1;

      if(trendZig[i] < trendZig[i-1])//is down swing
      {
         downswingSignal[i] = 1;
         upswingSignal[i] = 0;
         ordVol[i] = swingVol/swingDays;   
         accumulatedVolume[i] = swingVol;
         accumulatedDays[i] = swingDays;
         arrayHasSignal[i] = 1;
      }

      if(trendZig[i] > trendZig[i-1])//is up swing
      {
         downswingSignal[i] = 0;
         upswingSignal[i] = 1;
         ordVol[i] = swingVol/swingDays;
         accumulatedVolume[i] = swingVol;
         accumulatedDays[i] = swingDays;
         arrayHasSignal[i] = 1;
      }
      
      if(action == actionIndicator)
      {
         midPointValue = i - round(swingDays/2) - 1;
         midPointY = trendZig[midPointValue];
         PlotText("(" + volumeInMillions(ordVol[i]) + ")", midPointValue, midPointY, colorOrdVolume);
      }

   }
}
if(action == actionExplore)
{
   //Filter = 1;
   Filter = arrayHasSignal;
   //AddColumn(trendZig , "trendZig ", 1.2);
   AddColumn(C, "Swing Up", 1.2, colorDefault, IIf(upswingSignal, colorPeakUp, colorDefault));
   AddColumn(C, "Swing Down", 1.2, colorDefault, IIf(downswingSignal, colorPeakDown, colorDefault));
   AddColumn(ordVol, "Ord Vol.", 1.0);
   AddColumn(accumulatedDays, "Swing Days", 1.0);
   AddColumn(accumulatedVolume, "Tot. Swing Vol.", 1.0);
}
else if(action == actionIndicator)
{
   Plot(trendZig, "Ord Vol ZigZag", colorZig);
   //Scale the axis so we can read the numbers
   Plot(trendZig + (trendZig * scalingFactor), "", colorRed, styleNoDraw);
   Plot(trendZig - (trendZig * scalingFactor), "", colorBlue, styleNoDraw);
}
Посмотреть профиль Отправить личное сообщение
Krechetov



Зарегистрирован: 05.08.2009
Сообщения: 76

СообщениеДобавлено: Пн Апр 05, 2010 1:05 am Ответить с цитатой Вернуться к началу

Извиняюсь. Вопрос знатокам. В данном индикаторе экстремумов, последний хай всегда ближе последнего лоя.... Есть ли подобный индикатор но симмитричный... Чтобы последним мог быть и хай и лой у линии mLine, в данном случае ?
Посмотреть профиль Отправить личное сообщение
Krechetov



Зарегистрирован: 05.08.2009
Сообщения: 76

СообщениеДобавлено: Пн Апр 05, 2010 1:40 am Ответить с цитатой Вернуться к началу

asder писал(а):
Извиняюсь. Вопрос знатокам. В данном индикаторе экстремумов, последний хай всегда ближе последнего лоя.... Есть ли подобный индикатор но симмитричный... Чтобы последним мог быть и хай и лой у линии mLine, в данном случае ?


Индикатор имею в виду который в самом первом посте ветки
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Апр 05, 2010 8:27 am Ответить с цитатой Вернуться к началу

Проверил. Ничего подобного. Бывает последним идет Хай, бывает Лой...

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Krechetov



Зарегистрирован: 05.08.2009
Сообщения: 76

СообщениеДобавлено: Пн Апр 05, 2010 9:32 am Ответить с цитатой Вернуться к началу

000 писал(а):
Проверил. Ничего подобного. Бывает последним идет Хай, бывает Лой...


В теории визуально оно так. Но если сделать

T1=Ref(mline,-2) == LLV(mline,5);
T2=abs(ValueWhen(T1,BarIndex() , n = 1)-BarIndex()-2);

N1=Ref(mline,-2) == HHV(mline,5);
N2=abs(ValueWhen(N1,BarIndex() , n = 1)-BarIndex()-2);

И посмотреть. То количество баров с последнего Лоя T2, всегда будет больше количества баров с последнего хая N2......

Т.е. получается что для амиброкера последним идёт всегда хай.... Не знаю это как то со свингом связано или ещё с чем....

Можно ли сделать так чтобы и хаи и лои определялись симметрично в данном случае ?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Апр 05, 2010 1:23 pm Ответить с цитатой Вернуться к началу

Это потому, что ты неправильно вычисляешь последние хай и лой. Не учитываешь, что в конце графика mline неопределена.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Krechetov



Зарегистрирован: 05.08.2009
Сообщения: 76

СообщениеДобавлено: Пн Апр 05, 2010 5:06 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Это потому, что ты неправильно вычисляешь последние хай и лой. Не учитываешь, что в конце графика mline неопределена.


И как тогда правильно определять чтобы именно последний перегиб был ?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вт Апр 06, 2010 12:09 am Ответить с цитатой Вернуться к началу

Код:

T1 = mLine < Ref(mLine, -1) AND (mLine < Ref(mLine, 1) OR Ref(IsNull(mLine), 1));
N1 = mLine > Ref(mLine, -1) AND (mLine > Ref(mLine, 1) OR Ref(IsNull(mLine), 1));

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Krechetov



Зарегистрирован: 05.08.2009
Сообщения: 76

СообщениеДобавлено: Ср Апр 07, 2010 9:08 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Код:

T1 = mLine < Ref(mLine, -1) AND (mLine < Ref(mLine, 1) OR Ref(IsNull(mLine), 1));
N1 = mLine > Ref(mLine, -1) AND (mLine > Ref(mLine, 1) OR Ref(IsNull(mLine), 1));



Спасибо, попробую так Smile
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen