Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 121 сообщений
Cообщения с меткой

торговля на бирже - Самое интересное в блогах

Следующие 30  »
rss_rss_hh_new

Руководство: как использовать Python для алгоритмической торговли на бирже. Часть 2

Четверг, 29 Июня 2017 г. 13:47 (ссылка)





Мы продолжаем публикацию адаптации руководства DataCamp по использованию Python для разработки финансовых приложений. Первая часть материала рассказывала об устройстве финансовых рынков, акциях и торговых стратегиях, данных временных рядов, а также о том, что понадобится для начала разработки.



Теперь, когда вы уже больше знаете про требования к данным, разобрались с понятием временных рядов и познакомились с pandas, пришло время глубже погрузиться в тему финансового анализа, который необходим для создания торговой стратегии.



Jupyter notebook этого руководства можно скачать здесь.



Общий финансовый анализ: подсчет прибыли



При простом подсчете дневного процентного изменения не принимаются во внимание, например, дивиденды и другие факторы — просто отмечается процентное изменение цены приобретенных акций по сравнению с предыдущим торговым днем. Подсчитать такие изменения легко с помощью функции pct_change(), входящей в пакет Pandas.



# Import `numpy` as `np`
import numpy as np

# Assign `Adj Close` to `daily_close`
daily_close = aapl[['Adj Close']]

# Daily returns
daily_pct_change = daily_close.pct_change()

# Replace NA values with 0
daily_pct_change.fillna(0, inplace=True)

# Inspect daily returns
print(daily_pct_change)

# Daily log returns
daily_log_returns = np.log(daily_close.pct_change()+1)

# Print daily log returns
print(daily_log_returns)


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



Знание прибыли за день — это хорошо, но что если нам нужно рассчитать этот показатель за месяц или даже квартал? В таких случаях можно использовать функцию resample(), которую мы рассматривали в прошлой части руководства:



# Resample `aapl` to business months, take last observation as value 
monthly = aapl.resample('BM').apply(lambda x: x[-1])

# Calculate the monthly percentage change
monthly.pct_change()

# Resample `aapl` to quarters, take the mean as value per quarter
quarter = aapl.resample("4M").mean()

# Calculate the quarterly percentage change
quarter.pct_change()




Использование pct_change() удобно, но в таком случае сложно понять, как именно вычисляется дневной доход. Поэтому в качестве альтернативы можно использовать фукнцию Pandas под названием shift(). Затем нужно разделить значения daily_close на daily_close.shift(1) -1. При использовании этой функции в начале результирующего датафрейма будут находиться NA-значения.



Для справки, вычисление дневного изменения стоимости акций вычисляется по формуле:



,



Где p — это цена, t — это время (в нашем случае, день), а r — это доход. Можно создать график распределения daily_pct_change:



# Import matplotlib
import matplotlib.pyplot as plt

# Plot the distribution of `daily_pct_c`
daily_pct_change.hist(bins=50)

# Show the plot
plt.show()

# Pull up summary statistics
print(daily_pct_change.describe())


image



Результат выглядит симметричным и нормально распределенным: дневное изменение цены находится в районе bin 0.00. Следует понимать, что для корректной интерпретации результатов гистограммы нужно использовать функцию describe(), примененную к daily_pct_c. В таком случае будет видно, что среднее значение также близко к bin 0.00, а стандартное отклонение составляет 0,02. Также нужно изучить процентили, чтобы понять, какой объём данных выходит за границы -0,010672, 0,001677 и 0,014306.



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



# Calculate the cumulative daily returns
cum_daily_return = (1 + daily_pct_change).cumprod()

# Print `cum_daily_return`
print(cum_daily_return)


Здесь снова можно использовать Matplotlib для быстрой отрисовки cum_daily_return. Нужно лишь добавить функцию plot() и, опционально, определить размер графика с помощью figsize.



# Import matplotlib
import matplotlib.pyplot as plt

# Plot the cumulative daily returns
cum_daily_return.plot(figsize=(12,8))

# Show the plot
plt.show()


image



Все довольно просто. Теперь, если нужно анализировать не дневной доход, а месячный, следует вернуться к функции resample() — с ее помощью можно привести cum_daily_return к месячным значениям:



# Resample the cumulative daily return to cumulative monthly return 
cum_monthly_return = cum_daily_return.resample("M").mean()

# Print the `cum_monthly_return`
print(cum_monthly_return)


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



Чтобы тоже это сделать, сначала нужно загрузить больше данных — в нашем случае, c Yahoo! Finance. Для этого можно создать функцию, которая будет использовать ticker акции, а также начальную и конечные даты торгового периода. В примере ниже функция data() берет ticker для получения данных, начиная со startdate до enddate, и возвращает результат функции get(). Данные размечаются с помощью корректных тикеров (ticker), в результате получается датафрейм, содержащий эту информацию.



В коде ниже данные акций Apple, Microsoft, IBM и Google загружены в один общий датафрейм:



def get(tickers, startdate, enddate):
def data(ticker):
return (pdr.get_data_yahoo(ticker, start=startdate, end=enddate))
datas = map (data, tickers)
return(pd.concat(datas, keys=tickers, names=['Ticker', 'Date']))

tickers = ['AAPL', 'MSFT', 'IBM', 'GOOG']
all_data = get(tickers, datetime.datetime(2006, 10, 1), datetime.datetime(2012, 1, 1))




Примечание: этот код также использовался в руководстве по использованию Pandas для сферы финансов, позднее он был доработан. Также, поскольку в настоящий момент существуют проблемы с загрузкой данных с Yahoo! Finance, для корректной работы, возможно, придется загрузить пакет fix_yahoo_finance — инструкции по установке можно найти здесь или в Jupyter notebook этого руководства.



Вот результат выполнения этого кода:



image



Этот большой датафрейм можно использовать для отрисовки интересных графиков:



# Import matplotlib
import matplotlib.pyplot as plt

# Isolate the `Adj Close` values and transform the DataFrame
daily_close_px = all_data[['Adj Close']].reset_index().pivot('Date', 'Ticker', 'Adj Close')

# Calculate the daily percentage change for `daily_close_px`
daily_pct_change = daily_close_px.pct_change()

# Plot the distributions
daily_pct_change.hist(bins=50, sharex=True, figsize=(12,8))

# Show the resulting plot
plt.show()


image



Еще один полезный для финансового анализа график — это матрица рассеяния. Получить ее можно с помощью библиотеки pandas. Нужно будет добавить к коду функцию scatter_matrix(). В качестве аргументов передаются daily_pct_change, а в качестве диагонали устанавливается значение по выбору — так, чтобы получить график оценки плотности ядра (Kernel Density Estimate, KDE). Также, с помощью аргумента alpha можно установить прозрачность, а с помощью figsize изменять размер графика.



# Import matplotlib
import matplotlib.pyplot as plt

# Plot a scatter matrix with the `daily_pct_change` data
pd.scatter_matrix(daily_pct_change, diagonal='kde', alpha=0.1,figsize=(12,12))

# Show the plot
plt.show()


image



В случае локальной работы для построения матрицы рассеяния может понадобиться модуль plotting (т.е. pd.plotting.scatter_matrix()).



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



Продолжение следует…..



Другие материалы по теме финансов и фондового рынка от ITinvest:




Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/331940/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Руководство: как использовать Python для алгоритмической торговли на бирже. Часть 1

Суббота, 24 Июня 2017 г. 13:30 (ссылка)





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



Среди наиболее популярных в сфере финансов языков программирования можно отметить R и Python, также часто используются C++, C# и Java. В опубликованном на сайте DataCamp руководстве речь идет о том, как начать использовать Python для создания финансовых приложений — мы представляем вам серию статей-адаптаций глав этого материала.



Структура руководства:




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

  • Во второй части будет представлено введение в работу с данными временных рядов и инструментами финансового анализа, вроде подсчета волатильности и скользящих средних, с помощью Python-библиотеки Pandas.

  • Затем мы перейдем к непосредственной разработке простой импульсной торговой стратегии.

  • В четвертой части речь пойдет о том, как проводить бэктест стратегии на исторических данных.

  • В завершение, будут затронуты вопросы оптимизации стратегии для повышения ее производительности, а также оценки ее работы и надежности.



Введение: простым языком об устройстве сферы финансов



Прежде чем окунуться в мир торговых стратегий, имеет смысл коснуться базовых понятий. Однако это не означает, что то, о чем пойдет речь ниже, рассчитано совсем на новичков. Будет здорово, если вы предварительно ознакомитесь с курсом по использованию Python для работы с данными, а также представляете себе, как работать со списками и пакетами Python, а также хотя бы на базовом уровне знакомы с NumPy и Pandas.



Акции и торговля на бирже



Когда компания хочет продолжить развитие бизнеса, запускать новые проекты или расширяться, то в качестве инструмента финансирования может использовать акции. Акция представляет долю во владении компании, акции обменивают на деньги. Акции можно покупать и продавать: участники таких сделок проводят операции с уже существующими, ранее выпущенными акциями.



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



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



При покупке акций инвестор получает определенную долю в компании, из чего может в будущем извлечь финансовую выгоду, продав эту долю. Стратегии могут различаться: существуют длинные сделки (long), заключаемые в надежде на дальнейший рост акций, и короткие, когда инвестор предполагает, что акции будут дешеветь, поэтому продает акции в надежде в будущем «откупить» их обратно по более низкой цене.



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



Торговые стратегии обычно проверяют с помощью бэктестинга: это подход, при которым стратегия «прогоняется» на исторических данных о торгах — на их основе программа генерирует сделки. Это позволяет понять, принесла бы такая стратегия доход при том развитии рыночной ситуации, что наблюдалось в прошлом. Таким образом, можно предварительно оценить перспективность стратегии в торгах в режиме реального времени. При этом, нет гарантий того, что хорошие показатели на исторических данных повторятся при работе на реальном рынке.



Данные временных рядов



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







По оcи X расположены даты, а цена — на оси Y. «Последовательные равные промежутки времени» в данном случае означает, что по временной оси даты расположены с двухнедельным интервалом: можно сравнить 3/7/2005 и 3/31/2005, а также 4/5/2005 и 4/19/2005 (здесь даты записаны в принятом в США формате, когда сначала идет месяц, а затем день).



Однако финансовые данные обычно включают не два параметра (цена и дата), а пять — помимо величины торгового периода, это цена открытия торгового периода, наивысшая и низшая цена в его рамках, а также цена в момент закрытия периода. Это значит, что если мы рассматривает дневной период, то анализ данных даст нам информацию о том, на каком уровне находилась цена в момент старта и завершения торгов в выбранный день, а также какой была максимальная и минимальная цена в ходе торгов.



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



Основы Python для сферы финансов: Pandas



Одним из самых востребованных инструментов при использовании Python для разработки финансовых приложений является пакет Pandas. Он нужен уже в самом начале, но по мере углубления в процесс разработки понадобятся и такие пакеты как NumPy, SciPy, Matplotlib.



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



Импорт финансовых данных



Пакет pandas-datareader позволяет получать данные из таких источников, как Google, Yahoo! Finance или Всемирный банк — подробнее о доступных источниках данных написано в документации. В этом руководстве будет рассматриваться получение данных с сервиса Yahoo! Finance. Для начала работы необходимо установить последнюю версию пакета с помощью pip:



pip install pandas-datareader


Инструкции по установке версии в разработке представлены здесь.



import pandas_datareader as pdr
import datetime
aapl = pdr.get_data_yahoo('AAPL',
start=datetime.datetime(2006, 10, 1),
end=datetime.datetime(2012, 1, 1))


Не так давно в Yahoo API произошли изменения, так что для начала самостоятельной работы с библиотекой нужно установить исправления, который позволит дождаться официального патча. Подробнее проблема описана здесь. Однако для этого руководства данные были скачаны заранее, так что проблем с его изучением не возникнет.



Важно также понимать, что несмотря на то, что pandas-datareader — это удобный инструмент для загрузки данных, он далеко не единственный для Python. Также можно использовать библиотеки вроде Quandl, которая позволяет получать данные с сервиса Google Finance:



import quandl 
aapl = quandl.get("WIKI/AAPL", start_date="2006-10-01", end_date="2012-01-01")


Также многим известно, что в сфере финансов для анализа данных очень популярен Excel. Для удобства будущей работы можно интегрировать этот инструмент с Python (подробнее по ссылке).



Работа с данными временных рядов



Для импортирования данных мы использовали pandas_datareader. В результате возник объект aapl — это DataFrame, то есть двумерная именованная структура данных со столбцами потенциально разных типов. Первое, что следует сделать при работе с таким фреймом — запустить функции head() и tail() для того, чтобы взглянуть на первый и последний столбцы датафрейма. Для получения полезной статистической сводки по скачанным данным можно воспользоваться функцией describe().



Пример этого кода можно найти на странице исходного материала.



Данные содержат четыре столбца с ценой открытия и закрытия торгового периода, а также максимальной и минимальной ценой — мы рассматриваем дневные интервалы и акции Apple. Также мы получаем два дополнительных столбца: Volume и Adj Close. Первый из них используется для того, чтобы зафиксировать количество акций, с которыми совершались сделки в торговый день. Второй столбец — это «отрегулированная» цена закрытия (adjusted closing price), это значит, что в цену закрытия периода были добавлены все действия с акциями, которые могли быть совершены до момента открытия следующего торгового дня.



Если нужно сохранить данные в CSV-файл, это можно сделать с помощью функции to_csv(), а прочитать файл можно с помощью read_csv() — это полезно для ситуаций, когда источник данных меняется и доступ к ним временно теряется.



import pandas as pd
aapl.to_csv('data/aapl_ohlc.csv')
df = pd.read_csv('data/aapl_ohlc.csv', header=0, index_col='Date', parse_dates=True)


После базового анализа скачанных данных, пора двигаться дальше. Для этого можно, к примеру, изучить индексы и столбцы, выбрав, например, десять последних строк конкретного столбца. Это называется разбиением (subsetting), поскольку берется лишь небольшой набор имеющихся данных. Получившееся подмножество — это ряд, то есть одноразмерный именованный массив.



Для того, чтобы посмотреть на индекс и столбцы данных следует использовать атрибуты index и columns. Затем можно выделить подмножество из десяти последних наблюдений в столбце column. Для изолирования этих значений следует использовать квадратные скобки. Последнее значение помещается в переменную ts, а проверка ее типа осуществляется с помощью функции type().



# Inspect the index 
aapl.index

# Inspect the columns
aapl.columns

# Select only the last 10 observations of `Close`
ts = aapl['Close'][-10:]

# Check the type of `ts`
type(ts)


Использование квадратных скобок удобно, но это не самый характерный способ при работе с Pandas. Поэтому также стоит рассмотреть функции loc() и iloc(): первая из них используется для label-based индексирования, а последняя для позиционального индексирования.



На практике, это значит, что можно передать ярлык ряда вроде 2007 или 2006-11-01 в функцию loc(), а целые числа вроде 22 или 43 передаются функции iloc().



# Inspect the first rows of November-December 2006
print(aapl.loc[pd.Timestamp('2006-11-01'):pd.Timestamp('2006-12-31')].head())

# Inspect the first rows of 2007
print(aapl.loc['2007'].head())

# Inspect November 2006
print(aapl.iloc[22:43])

# Inspect the 'Open' and 'Close' values at 2006-11-01 and 2006-12-01
print(aapl.iloc[[22,43], [0, 3]])


Если внимательно взглянуть на результаты процедуры разбиения, то станет видно, что в данных пропущены определенные дни. Дальнейший анализ паттерна покажет, что обычно не хватает двух или трех дней. Это выходные дни и государственные праздники, во время которых нет биржевых торгов.



Помимо индексирования есть несколько способов узнать о данных больше. Можно, к примеру, попробовать создать семпл из 20 строк данных, а затем переформатировать их таким образом, чтобы appl стал не дневным значением и месячным. Сделать это можно с помощью функций sample() и resample():



# Sample 20 rows
sample = aapl.sample(20)

# Print `sample`
print(sample)

# Resample to monthly level
monthly_aapl = aapl.resample('M').mean()

# Print `monthly_aapl`
print(monthly_aapl)


Прежде чем перейти к визуализации данных и проведению финансового анализа, можно начать вычислять разницу между ценами открытия и закрытия торгового периода. Эту арифметическую операцию можно с помощью Pandas — нужно вычесть значения столбца Open данных appl из столбца Close. Или, другими словами, вычесть aapl.Close из aapl.Open. Получившийся результат будет храниться в новом столбце датафрейма aapl под названием diff, который можно удалить с помощью функции del:



# Add a column `diff` to `aapl` 
aapl['diff'] = aapl.Open - aapl.Close

# Delete the new `diff` column
del aapl['diff']


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



Визуализация данных временных рядов

Помимо анализа данных с помощью функций head(), tail() и индексирования, также возможна их визуализация. Благодаря интеграции Pandas с инструментом для создания графиков Matplotlib это можно сделать довольно легко. Нужно лишь использовать функцию plot() и передать ей релевантные параметры. Кроме того, если добавить параметр grid, то получившийся график будет наложен на сетку.



# Import Matplotlib's `pyplot` module as `plt`
import matplotlib.pyplot as plt

# Plot the closing prices for `aapl`
aapl['Close'].plot(grid=True)

# Show the plot
plt.show()


Этот код дает вот такой график:







В следующей части руководства речь пойдет о финансовом анализе данных временных рядов с помощью Python.



Продолжение следует…..



Другие материалы по теме финансов и фондового рынка от ITinvest:




Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/331542/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Аноним

Среда, 01 Декабря 1970 г. 03:00 (ссылка)

Комментарии ()КомментироватьВ цитатник или сообщество
visinvest

ТОП–5 наиболее распространенных мифов о Форекс. Что важно знать о торговле на валютном рынке? | Visinvest

Среда, 22 Февраля 2017 г. 21:07 (ссылка)
visinvest.net/top-5-naibole...-o-foreks/


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

Комментарии (0)КомментироватьВ цитатник или сообщество
patahdcbm

Без заголовка

Четверг, 10 Ноября 2016 г. 14:00 (ссылка)

Торговля на бирже форекс - https://vk.com/page-132631782_52781716

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
elena16061985

Без заголовка

Суббота, 17 Сентября 2016 г. 17:29 (ссылка)
v-sebe.ru/dohod/kak-kupit-a...?_utl_t=li


Как купить акции? | v-sebe.ru

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Phelix1985

Без заголовка

Суббота, 17 Сентября 2016 г. 17:18 (ссылка)
v-sebe.ru/dohod/kak-kupit-a...?_utl_t=li

Как купить акции? | v-sebe.ru

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
vesnushka89

Без заголовка

Суббота, 17 Сентября 2016 г. 17:12 (ссылка)
v-sebe.ru/dohod/kak-kupit-a...?_utl_t=li


Как купить акции? | v-sebe.ru

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
жизнелюбка

адекватные брокеры или как не прогореть на финансовом рынке

Вторник, 05 Июля 2016 г. 19:10 (ссылка)

Многие из нас ищут дополнительный заработок, который будет не только приносить денег, но и не отнимать много времени. Одни на это скажут, что глупо мечтать о несбыточном, другие махнут рукой. Но факт остается фактом, сегодня множество людей зарабатывают в сети. Конечно, чтобы начать любой вид деятельности в сети необходимо мужество и кроме этого много сил, но со временем затраченные силы приводят к успеху и отличному заработку. В основном силы и терпение необходимы для того, чтобы приобрести опыт и необходимые знания. К сожалению, опыт приходит через ошибки и обман, особенно если вы решили зарабатывать на финансовом рынке. Чтобы избавить вас от лишних переживаний сразу скажу, что надежным брокером является privatefx.com, прочесть о нем можно тут http://www.everythingis-ok.ru/kompaniya-privatefx-i-otzyvy-o-nej/, вы спросите почему именно этот брокер? А все просто, именно с ним вы всегда сможете без проблем связаться и решить различные вопросы, в том числе спорные.

Есть очень много брокеров для торговли на форекс, но со временем вы заметите, что мало кто из них предлагает заключить реальный договор, а без заключенного договора все "взятки гладки", как говорится. Кроме того, игра на бирже - это всегда риск и порой возникают вопросы и споры. Многие, даже имеющие положительные отзывы, брокеры просто не отвечают или даже не имеют обратной связи, а данный брокер всегда на связи и всегда можно адекватно обсудить ситуацию. Согласитесь, эти два аспекта очень важны и особенно их оценят те, кто уже в попытках заработать на форекс не раз обжегся и набрался опыта. Одно могу сказать точно, заработок в сети на бирже - это реально, но для этого нужно пройти достаточно утомительный путь проб и ошибок.

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

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Аноним

Среда, 01 Декабря 1970 г. 03:00 (ссылка)

Комментарии ()КомментироватьВ цитатник или сообщество

Следующие 30  »

<торговля на бирже - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda