Closed kaiks closed 10 years ago
Ja jeszcze tak długich symulacji nie przeprowadzałem, bo jak widizałem, że nie dzieje się dobrze to przerywałęm i kombinowałem, ale może to błąd, bo u Ciebie czasem po długiej przerwie coś się zacyznało dziać. Ale ostatnie 5 minutowe symulacje wyglądały obiecująco tylko agenci się wywalali. Już to naprawiłem i zapuszczam na dłużej zobaczymy co się stanie? Twoi agenci są aktualni na Twoim branchu? Jak ich odpalasz? Może ich zmixuje z moimi i zobaczymy co się wydarzy. :D
no oni niiiby działają ale tam jest wiele do życzenia w agencie klient_konserwatywny który robi większość ruchu, ale może to naprawię w ciągu godziny ale nie wiem czy będziesz jeszcze
możesz sobie odpalić: runfile klient_spokojny.rb
i on powinien działać ale nie ręczę bo jestem w trakcie zmian tzn. tam możesz zmienić ew. dane do logowania tych agentów jeśli masz jakieś ustalone bo oni się chyba nie rejestrują póki co
a u mnie się tak dzieje że handlują po przerwie bo ci agenci są losowi no i czasem coś zmieniam w trakcie trwania sesji to też się czasem coś stanie
teraz mam poważny błąd taki że mi agenci sami ze sobą handlują :p muszę tych losowych swoich trochę bardziej ulogicznić i powinno być lepiej ale myślę że to też kwestia małej ilości tych agentów
U mnie to nie wyglda dobrze, a nie wiem czy bede mia czas jeszcze cos zrobic. Zapuscilem test na noc, ale po 10 min. juz nic sie nie stalo. Mam 4 typy agentow: calkiem losowy, podazajacy za trendem(jesli cena spada to sprzedaje, jak rosnie kupuje - troche to czasem lawine wywoluje), czekajacy na zmiane trendu(jesli cena spadala i nagle wzrosnie to on kupuje), konserwatysta(ustala sobie na poczatku cene w ktora wierzy, ze taka jest wartosc akcji i pozniej wedlug tej ceny ocenia czy oplaca sie kupowac czy sprzedawac, jesli przez jakis okres czasu cena mocno odbiega od jego oczekiwan to ja weryfikuje). Wszyscy tez anuluja zlecenia jesli mocno odbiegaja one przez jakis czas od faktycznej ceny.
Przed wyjsciem do pracy pozmienialem parametry agenta i zapuscilem test, ale cudow sie nei spodziewam. Jak wrooce to gdzies wkomituje moich agentow. Moze mix naszych agentow cos da, nie wiem.
Strasznie mnie boli, ze to nie agenci decyduja ile maja zasobow(jak na poczatku proponowalem), bo na przyklad chcialbym sobie zrobic typ agenta gruba ryba(jakies fundusze inwestycyjne), ktory mialby duzo pieniedzy na poczatku i moze akcji tez i by wiekszosc pieniedzy inwestowal w najlepsze wedlug niego akcje i bylby cierpliwy. To prawdopodobnie by blokowalo wszelkie mozliwosci mocnych wahan, a inni agenci mogliby mocniej szalec nie psujac rynku.
I nie wiem czemu moi agenci tak sie blokuja po krotkim czasie, bo zwykle prze zpierwsze minuty to wygladalo nie najgorzej to znaczy na niektorych symulacjach dzialo sie tak, ze przez pierwsze mintuy bylo tak jak powinno male wachania o <1%.
jesli Ci zalezy moge dorobic jakies funkcje SQLowe, np z interfejsem:
stworz_uzytkownika(haslo, ilosc_pieniedzy)
oraz: przydziel zasob(uz, id_zasobu, ilosc)
ja prawdopodobnie dziś nie będę w stanie zbyt wiele zrobić, choć się postaram (ani jutro, na dobrą sprawę) i resztkę czasu poświęcę od środy do czwartku, tj. rzędu ~12 godzin
Nie wiem, czy jest sens, zebys to robil, bo ja chyba tez nie bede mial czasu juz z tego skorzystac. Byc moze tez w srode po poludniu bede mial chwile czasu, ale to raczej watpliwe. A Twoi agenci co sa na branchu dzialaja(ktorych mozna uzywac na obecna chwile)? Rozumiem, ze runfile klient_spokojny.rb odpala jednego agenta? A jakbym chcial odpalic wiecej?
na dole pliku klient_spokojny.rb jest kod:
@klienci = []
88.times { |i|
@klienci << Thread.new {
sleep(1.0*rand(100)/10.0)
DumbClient.new('%06d' %(i+402), i+402)
#EventMachine.connect '127.0.0.1', 12345, DumbClient, '%06d' %(i+2), i+2
}
}
który sprawia że uruchamiają mi się agenci o ID 402...490 i haśle "000402"..."000490" myślę że kod mówi sam za siebie mniej więcej :p a czy on działa to być może (w nocy robiłem refaktoryzacje i nie testowałem jeszcze)
tak czy inaczej do 15 będzie działał
jeszcze jedna sprawa @marimarek pamiętaj o tym że na masterze jeszcze do nocy były błędy z anulowaniem zleceń póki @jam231 nie dodał fixa (nie działało anulowanie) jeśli z tego korzystałeś
Wiem, ja to okolo 2-3 w nocy przerzucilem na mastera.
Czy ilosc akcji na dole wykresu oznacza ilosc akcji na rynku. Bo mam jesli tak to chyba problemem jest, ze moi agenci wykupuja akcje i nie kwapia sie z ich sprzadaza.
Dobra już wiem o co chodzi z tym wykresem. :P
Na obecną chwilę sytuacja wygląda następująco:
pod tym adresem: https://github.com/kaiks/SIA_RYNKI_r_agent są moi agenci, których odpala się np poprzez uruchomienie pliku just_agents.bat (mozna tam zajrzec zeby zobaczyc jak to dziala)
u @jam231 na branchu są jego agenci https://github.com/kaiks/SIA_RYNKI_r_agent/tree/dev_jam231 których odpala się z katalogu jamAgent (ale podkatalog też jest potrzebny)
u @marimarek są jego agenci których odpala się przez QT
Zastrzegam, że dziś, ze względu na fantazyjne próby zmuszenia serwera do współpracy (próba wymuszenia 10000 agentów) nie udało mi się przeprowadzić żadnej sensownej symulacji. (tj. np. akcje tylko rosną:
W razie wątpliwości kogokolwiek chętnego do przeprowadzania jakichś sensownych symulacji, możecie tu pisać lub dzwonić
Symulacji (długotrwałej) nie damy rady przeprowadzić na >600 agentów: serwer się krztusi. Powiem więcej, mam przypuszczenia, że na 300 agentach, symulacja będzie bardziej realistyczna, niż na 600, ze względu na to właśnie, że serwer zamula
Ja na dziś daję sobie z tym spokój. Plan na jutro:
Jeszcze może zastrzegę, że nie jest aż tak znowu bardzo tragicznie
Niektóre mniej płynne spółki z WIG20 (tj. te zamykające 20 firm którymi najczęściej handluje się na polskiej giełdzie) również miewają szarpane wykresy: http://stooq.pl/q/?s=lwb&c=1d&t=l&a=lg&b=0 http://stooq.pl/q/?s=brs http://stooq.pl/q/?s=bhw
Znajome kształty da się rozpoznać ze spółek trochę mniejszych, ale nadal należących do dużych: http://stooq.pl/q/?s=cdr&c=1d&t=l&a=lg&b=0
Najsmuklejsze wykresy są każdego dnia na KGHM: http://stooq.pl/q/?s=kgh&c=1d&t=l&a=lg&b=0 , dużo transakcji dziennie bywa zawieranych na spółce groszowej: http://stooq.pl/q/?s=oil
Ja tylko od siebie dodam, że udało mi się odpalić ~1000 moich agentów (handluja juz od godzinki). Na jednym komputerze mam zuzycie cpu na poziomie od ~20 do ~45 % (na tym na którym stoi giełda + ~600 agentow), na drugim natomiast waha sie od 1 do 35%. Z ramem tez nie jest tak tragicznie, bo w sumie zzera moze z 3 gb.
Wygenerowałbym jakieś wykresy, ale nie dziala ten feature ;-(
Myślę, że i z 1300 agentów dałoby rade (gdyby cześć moich zastąpić Twoimi). Niestety u mnie dość dobitnie widać, że serwer już jest u szczytu swoich możliwości (no dobra, jeszcze pownienem wywalić ten output z qDebuga()) i przy wiekszej liczbie agentów po prostu będzie ignorował część agentów.
[20 min pozniej...] 400 moich nadpobudliwych agentow wykorzystuje w porywach 1.5 % z 36 Mbps łącza (Wireless network), co daje niecałe 80 kB/s - również relatywnie mało.
Ja dzisiaj sprobuje zmienic jeszcze swoich agentow dosc mocno i przeprowadze jeszcze max 2 symulacje: na 1h godzine i do rana, na wiecej nie bede mial czasu bo do domu wroce kolo 21, a jutro do pracy rano.
@jam231 te 10 000 też mi się odpalało, problem w tym, że później się okazywało, że działa z nich tylko 5% po 10 minutach
chyba że rzeczywiście po odpaleniu tego tysiąca nadal masz co najmniej 3 transakcje na sekundę
a co do wykresów to możesz dać znać co tam Ci nie działa to sprawdzę
Zgodnie z zapowiedzą, zrobiłem mądrzejsze przydzielanie zasobów: Każdemu użytkownikowi w dalszym ciągu przydzielana jest ta sama ilość pieniędzy, lecz:
Przy tworzeniu użytkownika, losowane są dla niego w pierwszej kolejności dwie zmienne: liczba zasobów wartość pieniężna P wszystkich zasobów jakie otrzyma
Każdy użytkownik dostaje od 1 do 6 zasobów wybieranych losowo
Dla każdego zasobu losowana jest wartość UZ z przedziału (0, 0.5), która oznaczać będzie procentową ilość wartości poświęconej na ten konkretny zasób.
Następnie wyliczamy wartość zasobu: UZ*P i dzielimy przez "prawidłową" cenę zasobu (tj. taką, jaka była na prawdziwym rynku w momencie mojego zdobywania informacji nt. spółek). To jest ilość akcji danego zasobu.
Przykład: Tworzony jest nowy użytkownik. Przydzielamy mu 10 000 00 jednostek pieniężnych.
Losowana jest liczba zasobów: 2 Losowana jest wartość pieniężna: 100 000
Losowane są udziały procentowe zasobów w portfelu: 0.235, 0.765
Iteracja 1: Losowana jest akcja: KGHM Cena KGHM wynosi 11730 wylosowany udział KGHM w portfelu wyniósł 0.23 Użytkownik dostaje: 0.235*100000/11730 ~= 2 akcje kghm
Iteracja 2: Natrafiamy znów na KGHM. Wiemy, że to już było, losujemy ponownie
Iteracja 3: Losowana jest akcja Boryszew Cena Boryszew wynosi: 52 wylosowany udział: 0.765 Użytkownik dostaje: 100000*0.765/52 ~= 1471 akcji boryszew
Koniec.
Moi agenci teraz raczej ciagna akcje w dol niz w gore, wiec jakby zmixowac ich to moze by cos z tego wyszlo, ale dalej nie moge Twoich w ruby odpalic, a nie bardzo moge swoich na brancha wrzucic, bo cos nie moge sie z mojego kompa z internetem polaczyc. A tez nie mam czasu tutaj, zeby bawic sie co mam nie tak z ruby.
Jeśli mi nie napiszesz błędu to ja Ci na pewno nie pomogę.
Kiedy mi przesyłacie symulacje to jeśli już nie chcecie mi przesyłać plików tekstowych żebym sobie sam wygenerował (prosiłem o txt+png) to chociaż generujcie NOWE wykresy, z pogrubioną linią, bo tak to nic nie będzie widać.
Fajnei by też było jakbyś @marimarek przesyłał mi informacje nt. tego jakich agentów w jakich proporcjach używałeś, bo
No, tu mamy tego, eeee, kolejną symulację... no i ona jakoś tak wygląda... idźmy dalej
jest chyba średnio przekonujące, zwłaszcza gdy padnie pytanie:
no, fajnie, a czym się ona różni od poprzedniej?
Jak wyglądają wasze najbardziej optymistyczne wyniki? tj. udaje wam się chociaż trochę realistyczne te obrazki tworzyć? bo mi póki co najbliższe to coś takiego
ale szału jak widać nie ma...