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



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

СообщениеДобавлено: Пт Апр 04, 2008 4:18 pm Ответить с цитатой Вернуться к началу

Олег, подскажи пожалуйста, как сделать так, чтобы линия mLine рисовалась не постоянно, а по факту, когда уже явно появился среднесрочный максимум или минимум (т.е. когда на графике есть все три необходимых краткосрочных максимума или минимума) Rolling Eyes
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Сб Апр 05, 2008 5:56 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;
mup1 = 0;

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

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

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);
Plot(Line, "", colorRed);
Plot(mLine, "", colorBlue);


Исправил еще парочку мелких косяков

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



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

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

Немного не так.
У самого мысли вертятся, но что-то пока ни одна не подошла. Smile
Ниже вторая часть кода с небольшими исправлениями:

Код:

Hm = Hi > 0;
Lm = Lo > 0;

mup1 = 0;
mdw1 = 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;

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

x = 0;
x0 = 0;
y = 0;
y0 = 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
         }
      }
      else if(mdw[i]) // реверс
      {
             if(L[i] > mup1)   // если минимум становится больше максимума
               {
               }
        else
               {
                  mswingline(x0, x, y0, y);
                  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
         }
      }
      else if(mup[i]) // реверс
      {
            if(H[i] < mdw[i])
               {
               }
        else     
               {
                  mswingline(x0, x, y0, y);
                  mswing = 1;
                  mup1 = H[i]; // запоминаем значение для последующего сравнения и поиска максимального
                  x0 = x;
                  y0 = y;
                  x = i;
                  y = H[i];
                  mswingline(x0, x, y0, y);
               }
       }
   }
}


в итоге пытаюсь получить, что-то вроде этого:

==========================================

Image

на правой стороне графика красная линия (среднесрочный линия) должна была остановиться на среднесрочной впадине, так как среднесрочной вершины еще нет

==========================================

Image

теперь на правой стороне графика уже видно, что есть среднесрочная вершина... это стало понятно когда справа появился среднесрочный максимум

==========================================

Т.е. следующие телодвижение со стороны линии должно будет произойти или при большей среднесрочной вершине, или при среднесрочной впадине.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Апр 07, 2008 11:05 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;

function mswingline(x0, x, y0, y)
{
   m = (y-y0)/(x-x0);
   for(j = x0; j <= x; j++)
   {
      mLine[j] = y0 + (j-x0)*m;
   }
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);
Plot(Line, "", colorRed);
Plot(mLine, "", colorBlue);

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



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

СообщениеДобавлено: Вт Апр 08, 2008 6:20 am Ответить с цитатой Вернуться к началу

Воо, просто отлично, огромное спасибо. Оказывается самое большое зло скрывалось в поставленных мной знаками равно, по причине периодических возникновений двойных вершин и впадин

Код:

mup = Hm & ValueWhen(Hm, H, 2) <= H & ValueWhen(Hm, H, 0) <= H;
mdw = Lm & ValueWhen(Lm, L, 2) >= L & ValueWhen(Lm, L, 0) >= L;


Говори адрес, куда посылать коньяк Smile
Посмотреть профиль Отправить личное сообщение
SERGEY V.



Зарегистрирован: 24.04.2008
Сообщения: 84
Откуда: Новосибирск

СообщениеДобавлено: Вс Май 04, 2008 4:17 pm Ответить с цитатой Вернуться к началу

Есть одна просьба по Ларри Вилльямсу, напишите, пожалуйста, код для Ами его индикатора «Кумулятивное накопление/распределение Уильямса» (Williams' Accumulation/ Distribution, Williams' A/D). Самому пока сложно, с Ами познакомился недели три назад, могу пока только что-нибудь совсем простое написать.

Вычисление (из справки Квика):
CumWADn = CumWadn-1 + WADn,
где
WADn = PRICEn - TL, если PRICEn > PRICEn-1,
WADn = PRICEn - TH, если PRICEn < PRICEn-1,
WADn = 0, если PRICEn = PRICEn-1,
TH = max(PRICEn-1, HIGHn) - истинный диапазон пиков,
TL = min(PRICEn-1, LOWn) – истинный диапазон донышек,
PRICEn – цена закрытия в n-ом интервале,
HIGH – максимальное значение цены в n-ом интервале,
LOW – минимальное значение цены в n-ом интервале.

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


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

СообщениеДобавлено: Вс Май 04, 2008 11:31 pm Ответить с цитатой Вернуться к началу

Вроде так
Код:

TH = Max(H, Ref(C, -1));
TL = Min(L, Ref(C, -1));

WAD =
IIf(C > Ref(C, -1), C - TL,
IIf(C < Ref(C, -1), C - TH, 0));

CumWAD = Cum(WAD);
Plot(CumWAD, "", colorRed);

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



Зарегистрирован: 24.04.2008
Сообщения: 84
Откуда: Новосибирск

СообщениеДобавлено: Пн Май 05, 2008 4:00 am Ответить с цитатой Вернуться к началу

000 писал(а):
Вроде так
Код:

TH = Max(H, Ref(C, -1));
TL = Min(L, Ref(C, -1));

WAD =
IIf(C > Ref(C, -1), C - TL,
IIf(C < Ref(C, -1), C - TH, 0));

CumWAD = Cum(WAD);
Plot(CumWAD, "", colorRed);


Олег (000), спасибо! Laughing
Посмотреть профиль Отправить личное сообщение
pims
Гость





СообщениеДобавлено: Пн Июн 09, 2008 5:10 pm Ответить с цитатой Вернуться к началу

Добрый день!
понравился индикатор Л.Вильямса пользуюсь аналогичным но руками и в экселе, тут набрел на этот прекрасный сайт
и форум, много интересного, ну и захотелось немного автоматизировать и обленгчить себе работу.Если можно
просьба доработать его под мои условия, только не знаю - что проще доработать или написать новый))) сам не
могу этого сделать, просьба- помогите с этим пожалуйста!

1. Убрать вертикальные линии, уменьшить размер треугольников обозначающих хай-лоу свинга,
до минимального значения или просто обозначать точкой, установить на нулевом баре обозначение
хай лоу при соблюдении условия, пусть отображаемый значек двигается при изменении х-л бара.
2.Данный индикатор отображает не все экстримумы цены, необходимо, что б рисовались свинги,
даже если цена бара привышает предыдущий хотя бы на 1п. Внешний бар тоже необходимо учитывать,
Экстремумы цены(свинги) могут быть на разных концах внешнего бара,Внутренний бар по отношению
к предыдущему - не учитываем. т.е нужно отобразить все колебания цены, это необходимо для
расчета точек-о них ниже. Для примера прикрепил файл со скринами, как примерно это должно
выглядеть
При смещении времени открытия\закрытия дня подробнее тут- http://amisite.ru/phpBB2/viewtopic.php?t=94
с пятницы на понедельник получается два дневных бара с одной датой пятницы, необходимо в коде эти бары
как то обьеденить если возможно, чтоб считывались хай-лоу как с одного, но чтоб это не мешало
работе индикатора с нормальным графиком.
3.произвести расчет дополнительных точек и нанесения их на график цены, начинаем расчет с нулевого бара,
отдельно для хай и лоу сыинга. для хай- берем значения цены нулевого бара( если соблюдено условие для хай
и появился значек) плюс ценовое значение 1 свинга плюс ценовое значение 2 свинга и делим на три, т.е
вычисляем среднюю цену и наносим это значение на вертикальный уровень нулевого бара, при изменении
цены в процессе торгов расчетное значение тоже меняется. Аналогично считается среднее ценовое значение
свингов лоу и наносится на вертикальный уровень нулевого бара, Отображать символами типа кружок, ромб,
квадрат размер необходимо минимально возможный, но чтоб при наложении значка на тело бара можно было
его наблюдать
000
Site Admin


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

СообщениеДобавлено: Пн Июн 09, 2008 10:50 pm Ответить с цитатой Вернуться к началу

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

Не понял. Напиши плиз подробнее.
Цитата:
2.Данный индикатор отображает не все экстримумы цены, необходимо, что б рисовались свинги,
даже если цена бара привышает предыдущий хотя бы на 1п

Тоже не понятно. Вроде должны рисоваться все при условии, что свинг бар определяется вот такими условиями
up = L > Ref(L, -1) & H >= Ref(H, -1); // лоу выше предыдущего и хай выше или равен предыдущему
dw = L <= Ref(L, -1) & H < Ref(H, -1); // хай ниже предыдущего и лоу ниже или равен предыдущему.
Цитата:
Внешний бар тоже необходимо учитывать

Свинги по внешнему бару встроим в уже существующие или сделать их отдельно?
Цитата:
3.произвести расчет дополнительных точек и нанесения их на график цены, начинаем расчет с нулевого бара,
отдельно для хай и лоу сыинга. для хай- берем значения цены нулевого бара( если соблюдено условие для хай
и появился значек) плюс ценовое значение 1 свинга плюс ценовое значение 2 свинга и делим на три, т.е
вычисляем среднюю цену и наносим это значение на вертикальный уровень нулевого бара, при изменении
цены в процессе торгов расчетное значение тоже меняется. Аналогично считается среднее ценовое значение
свингов лоу и наносится на вертикальный уровень нулевого бара, Отображать символами типа кружок, ромб,
квадрат размер необходимо минимально возможный, но чтоб при наложении значка на тело бара можно было
его наблюдать

Нулевой бар это последний (текущий) на графике?

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





СообщениеДобавлено: Вт Июн 10, 2008 10:49 am Ответить с цитатой Вернуться к началу

000 писал(а):
Цитата:
установить на нулевом баре обозначение
хай лоу при соблюдении условия, пусть отображаемый значек двигается при изменении х-л бара.

Не понял. Напиши плиз подробнее.


чтоб значек находился на текущем(нулевом) баре , даже если свинг не завершен, т.е окончательный максимум еще не определился
000 писал(а):

Цитата:
2.Данный индикатор отображает не все экстримумы цены, необходимо, что б рисовались свинги,
даже если цена бара привышает предыдущий хотя бы на 1п

Тоже не понятно. Вроде должны рисоваться все при условии, что свинг бар определяется вот такими условиями
up = L > Ref(L, -1) & H >= Ref(H, -1); // лоу выше предыдущего и хай выше или равен предыдущему
dw = L <= Ref(L, -1) & H < Ref(H, -1); // хай ниже предыдущего и лоу ниже или равен предыдущему.


свинг в верх определяется -лоу выше предыдущего или равен предыдущему и хай выше предыдущего
свинг в низ определяется -хай ниже предыдущего или равен предыдущемуи и лоу ниже предыдущего.

Внешний бар тоже необходимо учитывать

000 писал(а):
Свинги по внешнему бару встроим в уже существующие или сделать их отдельно?


Немного не допонял вопроса( скорее всего в существующий, отдельно не нужно
000 писал(а):

Цитата:
3.произвести расчет дополнительных точек и нанесения их на график цены, начинаем расчет с нулевого бара,
отдельно для хай и лоу сыинга. для хай- берем значения цены нулевого бара( если соблюдено условие для хай
и появился значек) плюс ценовое значение 1 свинга плюс ценовое значение 2 свинга и делим на три, т.е
вычисляем среднюю цену и наносим это значение на вертикальный уровень нулевого бара, при изменении
цены в процессе торгов расчетное значение тоже меняется. Аналогично считается среднее ценовое значение
свингов лоу и наносится на вертикальный уровень нулевого бара, Отображать символами типа кружок, ромб,
квадрат размер необходимо минимально возможный, но чтоб при наложении значка на тело бара можно было
его наблюдать

Нулевой бар это последний (текущий) на графике?


да, текущий
Naumov



Зарегистрирован: 25.12.2009
Сообщения: 9
Откуда: Volgograd

СообщениеДобавлено: Вс Июн 13, 2010 9:37 pm Ответить с цитатой Вернуться к началу

Олег, добрый день.
Возвращаясь к уже решенной задаче. Помоги, пожалуйста, разобраться с тем, каким образом удалось реализовать следующее требование:

Griff писал(а):

...
Дело в том, что точки по факту рисуются в тот момент, когда уже точно ясно, что это или минимум или максимум, т.е. сегодня, показывает что вчера или несколько дней назад был этот самым минимум или максимум.

Как сделать так точка рисовалась на месте этого минимума или максимума (как показано на рисунке), а не постфактум? Shocked
...

Потратил ни один день, и никак не могу понять, как удалось избежать запаздывания в один бар при построении экстремумов (да и всей в целом) свинговой линии.
Заранее спасибо.

_________________
"Когда эту задачу решат, она будет считаться простой." GE.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Июн 15, 2010 6:57 am Ответить с цитатой Вернуться к началу

Если я правильно помню, то там в цикле просматриваются бары с условиями
Код:
up = L > Ref(L, -1) & H >= Ref(H, -1);
dw = L <= Ref(L, -1) & H < Ref(H, -1);

нийден первый up смотрим дальше если опять up, то переносим условия на него, смотрим дальше если опять up, то опять переносим условия...

Вот как то так.

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



Зарегистрирован: 25.12.2009
Сообщения: 9
Откуда: Volgograd

СообщениеДобавлено: Вт Июн 15, 2010 10:59 pm Ответить с цитатой Вернуться к началу

Олег, спасибо.

Буду копать в этом направлении.

_________________
"Когда эту задачу решат, она будет считаться простой." GE.
Посмотреть профиль Отправить личное сообщение
DMITRY



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

СообщениеДобавлено: Чт Янв 13, 2011 10:36 am Ответить с цитатой Вернуться к началу

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen