Bitcoin Forum
March 19, 2024, 11:43:13 AM *
News: Latest Bitcoin Core release: 26.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [36] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 »
  Print  
Author Topic: Qt Bitcoin Trader [Клиент для безопасных торгов на Mac/Windows/Linux]  (Read 303115 times)
dikanevn
Newbie
*
Offline Offline

Activity: 51
Merit: 0


View Profile
January 20, 2015, 04:31:43 PM
 #701


Доброго времени суток!
Огромное спасибо автору за софт такого уровня. Наткнулся на этого клиента 2 дня назад, но до сих пор нахожусь под впечатлением. Интерфейс на 5+ Такое впечатление, что программа написана по твоему заказу. Жду дальнейших обновлений и добавления функционала, а также примеров скриптов. Т.к. сам не программист, то пытаюсь понять все с описания и примеров. Отдельное спасибо dikanevn за его стратегию.
И маленький вопрос. Откуда берутся события такие как AskPrice, BidPrice и т.д.? Они заложены в программе или берутся с самой биржи? И полный ли их список на странице описания JL Script  http://forum.centrabit.com/viewtopic.php?f=3&t=4168 и в самой программе?
Просто сейчас пытаюсь писать какие-то простые примеры скриптов, и столкнулся с тем, что не могу, к примеру, вычислить усредненную цену 10 последних продаж. Буду благодарен, если кто подскажет, как это можно вычислить. Или без сохранения переменных это пока не возможно?

Здравствуйте, AskPrice , BidPrice берутся с биржи, это цена продажи и покупки на данный момент,а вот вычислить усредненную цену 10 последних продаж, без сохранения и подсчёта в самом скрипте , если не ошибаюсь, пока не возможно.
1710848593
Hero Member
*
Offline Offline

Posts: 1710848593

View Profile Personal Message (Offline)

Ignore
1710848593
Reply with quote  #2

1710848593
Report to moderator
1710848593
Hero Member
*
Offline Offline

Posts: 1710848593

View Profile Personal Message (Offline)

Ignore
1710848593
Reply with quote  #2

1710848593
Report to moderator
You can see the statistics of your reports to moderators on the "Report to moderator" pages.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1710848593
Hero Member
*
Offline Offline

Posts: 1710848593

View Profile Personal Message (Offline)

Ignore
1710848593
Reply with quote  #2

1710848593
Report to moderator
Andrey.M
Jr. Member
*
Offline Offline

Activity: 46
Merit: 10


View Profile
January 21, 2015, 03:13:27 PM
 #702

Всем доброго времени суток.
Подскажите пожалуйста, есть такое событие (надеюсь правильно выражаюсь), как changed:

Quote
trader.on("LastPrice").changed()
{
//Ваш код тут
}

а можно ли как-то описать событие, которое бы срабатывало, когда изменения не произошли на протяжении 1 минуты, к примеру? Что-то типа
nochanged.

Или только через объявление переменной, задержкой на минуту и сравнения?
IGHOR (OP)
Legendary
*
Offline Offline

Activity: 1035
Merit: 1065



View Profile WWW
January 21, 2015, 03:18:51 PM
 #703

Всем доброго времени суток.
Подскажите пожалуйста, есть такое событие (надеюсь правильно выражаюсь), как changed:

Quote
trader.on("LastPrice").changed()
{
//Ваш код тут
}

а можно ли как-то описать событие, которое бы срабатывало, когда изменения не произошли на протяжении 1 минуты, к примеру? Что-то типа
nochanged.

Или только через объявление переменной, задержкой на минуту и сравнения?

Только с помощью таймеров.
trader.delay(..
trader.timer(..
И сравнение с сорханенными переменными

Qt Bitcoin Trader
Verify digital signature of the app in the file properties every time you download it.
Andrey.M
Jr. Member
*
Offline Offline

Activity: 46
Merit: 10


View Profile
January 21, 2015, 03:27:57 PM
 #704

Всем доброго времени суток.
Подскажите пожалуйста, есть такое событие (надеюсь правильно выражаюсь), как changed:

Quote
trader.on("LastPrice").changed()
{
//Ваш код тут
}

а можно ли как-то описать событие, которое бы срабатывало, когда изменения не произошли на протяжении 1 минуты, к примеру? Что-то типа
nochanged.

Или только через объявление переменной, задержкой на минуту и сравнения?

Только с помощью таймеров.
trader.delay(..
trader.timer(..
И сравнение с сорханенными переменными

Спасибо, уже так и пытаюсь все это описать.
Еще одна мысль возникла.
А возможно как-то сделать вывод в файл ?  
Что-то вроде:

Quote
trader.get("10MinBuyDivSell") > 1.txt

И чтение из файла?

И может лучше создать отдельную тему для обсуждения подобных вопросов? Как автор считает?
Serg5555
Newbie
*
Offline Offline

Activity: 2
Merit: 0


View Profile
January 27, 2015, 09:12:47 AM
 #705

Для отмены ордеров на торгующей паре в Скрипт 1 НЕОБХОДИМО указать например trader.cancelOrders("LTCUSD"); вместо trader.cancelOrders(); последнее чревато отменой всех ордеров по всем вашим парам и использования всего появившегося фиата на текущей паре Grin
Для trader.cancelAsks(); также.

Для BTCUSD начальные константы в Скрипт 1 будут конечно же другие.

С наступившим НГ !
Решил написать стратегию для этой программы
Внимание! Стратегия мало протестирована, используйте на свой страх и риск!
Торговал на боте по ссылке ниже, в принципе сделал такой же (Надеюсь по судам меня не начнут таскать =),  так что алгоритм читайте тут -
https://ezhrd.wordpress.com/2014/06/05/%D0%BE%D0%B1%D1%89%D0%B8%D0%B9-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D0%B1%D0%BE%D1%82%D0%B0/
Но там 5$ в месяц за одну пару на одной бирже, тут же всё бесплатно.
как и в обновлении того бота,в алгоритм добавлена функция подтяжки таблицы ордеров вслед за курсом. Например, бот выставил таблицу закупок, ни одна закупка не исполнялась, но курс пошел вверх, а не вниз. Когда курс станет выше, чем цены покупки на указанный % , бот снимет всю таблицу закупок и выставит заново, отталкиваясь от нового курса.

Я JavaScript вообще не знал, изучал всё с ходу и поэтому скрипт написан непрофессионально, присылайте глюки и баги если будут.
по умолчанию скрипт написан для пары LTC/USD на бирже BTC-e, что бы настроить для другой пары на любой бирже, заменить на обоих скриптах в блокноте через ctrl+H все LTC на, например, BTC , и USD на ,например , EUR

для запуска в разделе правила добавляем два скрипта с именами "Скрипт 1" и "Скрипт 2" и вставляем текст ,в начале ОБОИХ скриптов меняем параметры под свой вкус, и  запускаем Скрипт 2.
сумма на балансе должна быть вся на второй валюте в паре (для LTC/USD в USD),на первой должен быть ноль.

текст для Скрипт 1
 
Code:
var otstup = 0.5           //   в %, отступ первого шага,Насколько цена первого buy ордера в таблице закупке должна быть меньше текущей на момент расчета таблицы. Все остальные buy ордера будут еще дешевле
var orders = 15            //  от 2 до 20 , Сколько buy-ордеров помещать в объеме перекрытия.
var perekr = 20             //   в % , перекрытие хода цены,Глубина расчета таблицы buy ордеров. Например, при цене первого шага 10USD процент перекрытия 20% означает, что таблица будет выставлена в   // диапазоне 8-10USD.
var profit =  1          //  в % , профит,Сколько профита закладывать в каждый sell ордер.
var martin = 5             //  в %, мартингейл, При расчете таблицы buy ордеров каждый следующий более дешевый ордер по объему больше предыдущего на это значение.
var depo = 99              //   в % , от 1 до 99, Использование депо, какую часть от USD (или второй валюты в паре) пускать в оборот
// ниже если не шарите ничего не меняйте.

var kontr = 100000000
var komissiya = trader.get("Fee")  
otstup = otstup / 100
otstup = 1 - otstup

  depo = depo / 100
martin = martin / 100 + 1

komissiya = komissiya *2
komissiya = komissiya / 100 + 1

perekr = perekr + otstup
profit = profit / 100 + 1
var prceni = perekr / orders

prceni =1-( prceni / 100)

trader.cancelOrders();
 var pric = trader.get("BidPrice") * otstup;
var  price=pric
var cena = pric

function koa()
{
all = trader.get("Balance","USD") * depo
yyy=0
for (var i = 0; i < orders  ;) {
yyy = yyy + Math.pow(martin,i)
i = i + 1
 }

var amount = all / yyy

for (var i = 0; i < orders;) {
 trader.buy("LTCUSD" , amount / price , price);
 price = price * prceni;
amount = amount * martin
  i = i + 1
}
 }


trader.delay(25 ,"koa()");


function aaa()
{
trader.on("OpenBidsCount").changed()
{
trader.delay(3,"aac()");
trader.delay(6,"aab()");
}
}

trader.delay(40 ,"aaa()");

function aac()
{
trader.cancelAsks();
}

function aab()
{
cenavsp = trader.get("LastMyBuyPrice") + pric
cena = cenavsp / 2 * komissiya * profit
trader.log("Ордер на продажу обновлён");

trader.sell("LTCUSD" , trader.get("Balance","LTC") , cena );
kontr = cena
cena = cena / komissiya / profit
}

trader.timer(45,"hjk()");
function hjk() {
if (trader.get("OpenBidsCount") != orders ) {

if (trader.get("OpenAsksCount") < 1 ) {
if (trader.get("Balance","LTC") < 0.000001){

trader.groupStop("Скрипт 2");

trader.groupStart("Скрипт 2");
}}}}

текст для Скрипт 2

Code:
var vverh = 1 // в %, например, если стоит 2%, и  на момент запуска скрипта цена покупки будет 100 USD , то при цене покупки 102 весь цикл перезапустится
// ниже если не шарите ничего не меняйте.

var rest = 100000000000
trader.groupStop("Скрипт 1");
trader.groupStart("Скрипт 1");
sledcikl();
function sledcikl(){
rest = vverh  / 100 + 1
rest = rest * trader.get("BidPrice")
trader.log("restatr pri", rest );

trader.on("BidPrice").changed()
{
rrr();
function rrr(){
if (trader.get("BidPrice") >= rest) {
if ( trader.get("OpenAsksCount") > 0 ) {
if (trader.get("Balance","LTC")< 0.0000001) {

trader.groupStop("Скрипт 1");
trader.groupStart("Скрипт 1");
sledcikl();
}}}}}}

небольшая история работы бота

Code:
LTC/USD sell 0.130933 LTC 2.32617 USD 0.30457241 USD 03.01.15 15:45
LTC/USD buy 0.131195 LTC 2.30538 USD 0.30245432 USD 03.01.15 15:45
LTC/USD sell 2.27194 LTC 2.30637 USD 5.23993425 USD 03.01.15 15:44
LTC/USD buy 0.159373 LTC 2.19128 USD 0.34923086 USD 03.01.15 15:33
LTC/USD buy 0.156927 LTC 2.20339 USD 0.34577138 USD 03.01.15 15:16
LTC/USD buy 0.154519 LTC 2.21558 USD 0.3423492 USD 03.01.15 15:16
LTC/USD buy 0.152148 LTC 2.22783 USD 0.33895987 USD 03.01.15 15:16
LTC/USD buy 0.149813 LTC 2.24014 USD 0.33560209 USD 03.01.15 15:16
LTC/USD buy 0.147514 LTC 2.25253 USD 0.33227971 USD 03.01.15 15:07
LTC/USD buy 0.145251 LTC 2.26499 USD 0.32899206 USD 03.01.15 15:05
LTC/USD buy 0.143022 LTC 2.27751 USD 0.32573403 USD 03.01.15 15:05
LTC/USD buy 0.140827 LTC 2.2901 USD 0.32250791 USD 03.01.15 15:05
LTC/USD buy 0.138666 LTC 2.30277 USD 0.3193159 USD 03.01.15 15:05
LTC/USD buy 0.136538 LTC 2.3155 USD 0.31615373 USD 03.01.15 15:00
LTC/USD buy 0.134443 LTC 2.3283 USD 0.31302363 USD 03.01.15 14:53
LTC/USD buy 0.13238 LTC 2.34118 USD 0.3099254 USD 03.01.15 14:53
LTC/USD buy 0.130348 LTC 2.35412 USD 0.30685483 USD 03.01.15 14:35
LTC/USD buy 0.128348 LTC 2.36714 USD 0.30381768 USD 03.01.15 14:25
LTC/USD buy 0.126378 LTC 2.38023 USD 0.3008087 USD 03.01.15 13:01

Всем профита! и пишите всё что думаете по поводу бота ))
UPD: 06.01 , исправил ошибки

"Для BTCUSD начальные константы в Скрипт 1 другие"
Какие именно константы? Замена LTC на BTC в скрипте толку не даёт
De Nikin
Newbie
*
Offline Offline

Activity: 12
Merit: 0


View Profile
January 27, 2015, 10:20:10 AM
 #706

Serg5555 - уважаемый, цена у LTC и BTC отличается на порядок, поэтому и
var otstup = 0.5
var perekr = 20
var profit =  1
var martin = 5
другие подбирать надо... 0,5 процента от лайта и от битка ой как отличаются друг от друга. Пробуйте методом "тыка", вдумчиво... Меняйте по одному и смотрите, что получается. Для начала сделайте 2-3 ордера, легче понять будет...
De Nikin
Newbie
*
Offline Offline

Activity: 12
Merit: 0


View Profile
January 27, 2015, 10:29:35 AM
 #707

to IGHOR - вопросик есть, если можно тута ответить... Каждая функция (когда к ней обращаешься) "лезет" на биржу за данными, или прога получает, грубо говоря каждую 1 сек. поток данных, и потом, в течении секунды делает выборку по ней?
ЗЫ: пример
 Ask=trader.get("LTCUSD","AskPrice");
 ...
 цена устраивает
 ...
 trader.buy... - я куплю по Ask, или пока я делал свои дела (...) цена могла изменитьсяHuh
 
dikanevn
Newbie
*
Offline Offline

Activity: 51
Merit: 0


View Profile
January 27, 2015, 10:37:13 AM
 #708

Serg5555 - уважаемый, цена у LTC и BTC отличается на порядок, поэтому и
var otstup = 0.5
var perekr = 20
var profit =  1
var martin = 5
другие подбирать надо... 0,5 процента от лайта и от битка ой как отличаются друг от друга. Пробуйте методом "тыка", вдумчиво... Меняйте по одному и смотрите, что получается. Для начала сделайте 2-3 ордера, легче понять будет...
Перекрытие не маленькое? можно инвестором остаться, ещё и при мартине 5 =) тогда оставляйте запас депо.

to IGHOR - вопросик есть, если можно тута ответить... Каждая функция (когда к ней обращаешься) "лезет" на биржу за данными, или прога получает, грубо говоря каждую 1 сек. поток данных, и потом, в течении секунды делает выборку по ней?
ЗЫ: пример
 Ask=trader.get("LTCUSD","AskPrice");
 ...
 цена устраивает
 ...
 trader.buy... - я куплю по Ask, или пока я делал свои дела (...) цена могла изменитьсяHuh
 

Вы же задали переменную, trader.get("LTCUSD","AskPrice") меняется, а Ask теперь будет неизменная.
De Nikin
Newbie
*
Offline Offline

Activity: 12
Merit: 0


View Profile
January 27, 2015, 11:44:23 AM
 #709

dikanevn - это понятно, я немного о другом. Я делаю Ask=trader.get..., затем допусти еще раз Buy=trader.get... - программа обращается опять на биржу, теряя иногда драгоценные милисекунды, или в течение определенного времени (Апи лаг показывает время между такими запросами) делает выборки из уже полученного ранее...
ЗЫ: Надеюсь понятно "выписал" мыслю...
IGHOR (OP)
Legendary
*
Offline Offline

Activity: 1035
Merit: 1065



View Profile WWW
January 27, 2015, 03:20:57 PM
 #710

dikanevn - это понятно, я немного о другом. Я делаю Ask=trader.get..., затем допусти еще раз Buy=trader.get... - программа обращается опять на биржу, теряя иногда драгоценные милисекунды, или в течение определенного времени (Апи лаг показывает время между такими запросами) делает выборки из уже полученного ранее...
ЗЫ: Надеюсь понятно "выписал" мыслю...

Программа обращается на биржу с интервалом приблизительно 400 мс. Интервал зависит от требований биржи.
В смысле программа постоянно пытается получить все данные как можно быстрее.
А использование функций в скрипте это всего лишь обращение к оперативной памяти с данными.
Так что нет никаких ограничений в количестве и интервале использования функций скриптового языка.
Ограничением можно назвать лишь нагрузку на ваш CPU.

Qt Bitcoin Trader
Verify digital signature of the app in the file properties every time you download it.
hazarun
Legendary
*
Offline Offline

Activity: 2128
Merit: 1019


View Profile
January 27, 2015, 10:25:22 PM
 #711

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

Это Вы про какую биржу говорите, период опроса 400 мсек ?

Можете уточнить, опрос БТЦЧина с каким интервалом идет ?
IGHOR (OP)
Legendary
*
Offline Offline

Activity: 1035
Merit: 1065



View Profile WWW
January 27, 2015, 10:26:55 PM
 #712

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

Это Вы про какую биржу говорите, период опроса 400 мсек ?

Можете уточнить, опрос БТЦЧина с каким интервалом идет ?

BTC China - по умолчанию 500 мс.
Интервал можете изменять в конфиг файлах.

Qt Bitcoin Trader
Verify digital signature of the app in the file properties every time you download it.
Andrey.M
Jr. Member
*
Offline Offline

Activity: 46
Merit: 10


View Profile
January 28, 2015, 12:56:17 AM
Last edit: January 28, 2015, 01:07:47 AM by Andrey.M
 #713

Доброго времени суток!
Помогите пожалуйста разобраться с проблемой в скрипте.
Создал скрипт для автоматической продажи BTC при балансе BTC > 0.001
Сам скрипт:
Quote
trader.timer(7,"Sell()");
 Sell();
function Sell()
{
var AmountBTC = trader.get("Balance","BTC");
var price = trader.get("BTCCNY" , "AskPrice");
price += 0.5;
 if (AmountBTC >= 0.001)
{
 trader.sell("BTCCNY" , AmountBTC , price);
}
else return;
}
При запуске скрипта, все ок, лог пустой.
При изменении баланса BTC, скрипт выставляет ордер на продажу, но не прекращает свою работу. А баланс то уже > 0.001. И не прекращает попытки выставить новый ордер, даже при закрытом старом. А здесь уже баланс = 0
Думал, что он зацикливается и не обновляет состояние баланса. Но при новой покупке на другую сумму, скрипт опять нормально выставляет ордер.
Лог скрипта:
Quote
2:42:29> BTCCNY: Sell 0.0024 at 1650.07
2:42:36> BTCCNY: Sell 0.0024 at 1651.1
2:42:43> BTCCNY: Sell 0.0024 at 1651.1
2:42:50> BTCCNY: Sell 0.0024 at 1652.5
2:42:57> BTCCNY: Sell 0.0032 at 1653.25
2:43:04> BTCCNY: Sell 0.0032 at 1653.26
2:43:11> BTCCNY: Sell 0.0032 at 1653.22

Уже перепробовал кучу вариантов. Толку ноль.
dikanevn
Newbie
*
Offline Offline

Activity: 51
Merit: 0


View Profile
January 28, 2015, 02:04:49 AM
 #714

Доброго времени суток!
Помогите пожалуйста разобраться с проблемой в скрипте.
Создал скрипт для автоматической продажи BTC при балансе BTC > 0.001
Сам скрипт:
Quote
trader.timer(7,"Sell()");
 Sell();
function Sell()
{
var AmountBTC = trader.get("Balance","BTC");
var price = trader.get("BTCCNY" , "AskPrice");
price += 0.5;
 if (AmountBTC >= 0.001)
{
 trader.sell("BTCCNY" , AmountBTC , price);
}
else return;
}
При запуске скрипта, все ок, лог пустой.
При изменении баланса BTC, скрипт выставляет ордер на продажу, но не прекращает свою работу. А баланс то уже > 0.001. И не прекращает попытки выставить новый ордер, даже при закрытом старом. А здесь уже баланс = 0
Думал, что он зацикливается и не обновляет состояние баланса. Но при новой покупке на другую сумму, скрипт опять нормально выставляет ордер.
Лог скрипта:
Quote
2:42:29> BTCCNY: Sell 0.0024 at 1650.07
2:42:36> BTCCNY: Sell 0.0024 at 1651.1
2:42:43> BTCCNY: Sell 0.0024 at 1651.1
2:42:50> BTCCNY: Sell 0.0024 at 1652.5
2:42:57> BTCCNY: Sell 0.0032 at 1653.25
2:43:04> BTCCNY: Sell 0.0032 at 1653.26
2:43:11> BTCCNY: Sell 0.0032 at 1653.22

Уже перепробовал кучу вариантов. Толку ноль.

отписал в личку
Andrey.M
Jr. Member
*
Offline Offline

Activity: 46
Merit: 10


View Profile
January 28, 2015, 02:28:32 AM
 #715

Quote
отписал в личку

Спасибо, но в личке: "No messages..."
dikanevn
Newbie
*
Offline Offline

Activity: 51
Merit: 0


View Profile
January 28, 2015, 07:25:36 AM
 #716

Quote
отписал в личку

Спасибо, но в личке: "No messages..."
глючу =D написал..
De Nikin
Newbie
*
Offline Offline

Activity: 12
Merit: 0


View Profile
January 28, 2015, 07:43:21 AM
 #717

Доброго всем. Подскажите, как можно сделать задержку на 1-2 сек. Никак не соображу:

trader.buy("", , );   // ставим ордер

тут нужна задержка, иначе далее идет цикл

trader.on("LTCUSD","AskPrice").changed()
 {...
 if(trader.get("OpenBidsCount")<1)   - тут я проверяю, если ли ордер, при первом входе не успевает ОНО поставить ордер и ... вылетает с цикла у меня...
dikanevn
Newbie
*
Offline Offline

Activity: 51
Merit: 0


View Profile
January 28, 2015, 08:20:49 AM
 #718

Доброго всем. Подскажите, как можно сделать задержку на 1-2 сек. Никак не соображу:

trader.buy("", , );   // ставим ордер

тут нужна задержка, иначе далее идет цикл

trader.on("LTCUSD","AskPrice").changed()
 {...
 if(trader.get("OpenBidsCount")<1)   - тут я проверяю, если ли ордер, при первом входе не успевает ОНО поставить ордер и ... вылетает с цикла у меня...

засовываешь все что надо задержать в функцию

function xyz()
{
...
}

и ставишь задержку

trader.delay(3 ,"xyz()");
Andrey.M
Jr. Member
*
Offline Offline

Activity: 46
Merit: 10


View Profile
January 28, 2015, 08:31:51 AM
 #719

Quote
отписал в личку

Спасибо, но в личке: "No messages..."
глючу =D написал..


Спасибо, совет не помог.
Цикл так и продолжается.
Доброго всем. Подскажите, как можно сделать задержку на 1-2 сек. Никак не соображу:

trader.buy("", , );   // ставим ордер

тут нужна задержка, иначе далее идет цикл

trader.on("LTCUSD","AskPrice").changed()
 {...
 if(trader.get("OpenBidsCount")<1)   - тут я проверяю, если ли ордер, при первом входе не успевает ОНО поставить ордер и ... вылетает с цикла у меня...

Я не программист, но все же:
Попробуй это вставить в функцию:
Quote
{...
 if(trader.get("OpenBidsCount")<1)

а на функцию добавить задержку.
De Nikin
Newbie
*
Offline Offline

Activity: 12
Merit: 0


View Profile
January 28, 2015, 08:38:20 AM
 #720

dikanevn - спасибо... переделал...
Pages: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [36] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 »
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!