Algorytm genetyczny do spekulacji

Jeżeli masz pomysł lub używasz ciekawego systemu albo strategii gry, opisz ja tutaj.
wojnowy
Stały bywalec
Stały bywalec
Posty: 63
Rejestracja: 24 wrz 2010, 10:09

Nieprzeczytany post autor: wojnowy »

aha, a dla tych co nie wiedzą jak to rozkodować to podaję przykład: gdy mamy np. taką wartość: 1011 to odkodywujemy to tak: mamy 4 bity czyli to wyjdzie:
1*2^(4-1)+0*2^(4-2)+1*2^(4-3)+1*(4-4) = 2^3+0+2^1+2^0 = 8+0+2+1 = 11
Dakhr pisze: Chodzi o praktyczne rozwiązanie problemu
No nie wiem czy Twoje podejście jest "praktyczniejsze" Kodowanie liczbami binarnymi jest na pewno znacznie bardziej opisane w literaturze.

Ale nic. Nie będę nikogo namawiać do tego. Róbcie sobie jak wam wygodniej. Wolicie się bawić z bitami - wasz wybór. Ważne, żebyście rozumieli co mówicie :)

Pozdrawiam
(\(^.^)/)

Dakhr
Stały bywalec
Stały bywalec
Posty: 76
Rejestracja: 14 lis 2009, 11:05

Nieprzeczytany post autor: Dakhr »

Dzieki za przypomnienie podstaw.Dziękuje serdecznie 8) Student??To by tłumaczyło pewną zarozumiałość :idea:

Dodano po 13 minutach:

Binarne kodowanie upraszcza niektóre rzeczy np mutacje:

Kod: Zaznacz cały

string Mutate(string bits)
{
string mutant;
int bitvalue,newbitvalue;

	for (int i=0; i<CHROMO_LENGTH; i++)
	{
	bitvalue=StringGetChar(bits, i);
		if (RANDOM_NUM() < MUTATION_RATE)
		{
			if (bitvalue == 49){

				newbitvalue = 48;
			   mutant=StringSetChar( bits, i, newbitvalue);
                           }
		if (bitvalue == 48){

				newbitvalue = 49;
				 mutant=StringSetChar( bits, i, newbitvalue); 
				}
		}
	}

	return (mutant);
}
Prawda ,ze eleganckie ?

Awatar użytkownika
Sigmalko
Stały bywalec
Stały bywalec
Posty: 40
Rejestracja: 20 sty 2010, 17:15

Nieprzeczytany post autor: Sigmalko »

wojnowy pisze:AG jedynie optymalizuje. Czyli kolejność jest taka:
tworzysz swoją strategię (która korzysta z jakiś zmiennych) -> zmienne, które chcesz optymalizować (a które mają wpływ na przyjętą przez Ciebie funkcję celu) kodujesz np. do postaci binarnej -> optymalizujesz -> i cieszysz się (zazwyczaj) z przeoptymalizowanej strategii.

Od AG oczekuję, że strategię to mi znajdzie, a nie zoptymalizuje (choć jak już znajdzie, to niech od razu ją zoptymalizuje).

Ok. To załóżmy, że mam prymitywną strategię przecinania "czegoś" z "czymś" i chcę, żeby AG mi znalazło co najlepiej z czym się przecina, po czym daje zysk.

To do genu wrzucam:
- SMA
- EMA
- WMA
- cenę
- interwał czasowy, M1, M5, M15, M30, H1, H4, D1, MN1
- parametr nr 1 dla wskaźnika (okres)
- parametr nr 2 dla wskaźnika (close/open/high/low)

Czyli:

2 bity na rodzaj wskaźnika (00 = cena, 01 = SMA, 10=EMA, 11=WMA)

3 bity na rodzaj interwału (001 = M1, 010 = M5, 011 = M15, 100 = M30, 101 = H1, 110 = H4, 111=D1, 000=MN1)

8 bitów na okres (parametr 1 do wskaźnika)

2 bity na część świeczki (00=close, 01=open, 10=high, 11=low)

15 bitów na zdefiniowanie samego wskaźnika z jego parametrami.


Mniej więcej w tą stronę należy iść?

No i teraz chcę sobie zoptymalizować:
- ile jakich wskaźników ma się przeciąć z jakimi wskaźnikami, żeby był zysk

Jak parować ze sobą wskaźniki w genach.

Lepiej zrobić gen składający się z 10 * 15 bitów i miałbym do 10 wkaźników w genie?

Dodano po 3 minutach:

Ale kurcze, znowu się robią schody, bo może:

kupuj gdy:
- SMA(45) przetnie się dołem na interwale M5 z SMA(100)
AND
- wcześniej było przecięcie SMA(14) z EMA(45) na M30

czyli dochodzi tu jeszcze sekwencja w czasie, czyli nie tylko ilość, ale również kolejność genów w chromosomie byłaby ważna.

Awatar użytkownika
lucasgg
Bywalec
Bywalec
Posty: 5
Rejestracja: 03 lis 2006, 19:58

Nieprzeczytany post autor: lucasgg »

Witam,

Sigmalko - i jak Twoja próba?

Parametry wejściowe które podałeś, moim zdaniem, bardziej nadają się do wykorzystania NN. Natomiast AG wykorzystaj do optymalizacji samej sieci (np. inicjalizacji wag).

Przykładowy:
Sigmalko pisze: kupuj gdy:
- SMA(45) przetnie się dołem na interwale M5 z SMA(100)
AND
- wcześniej było przecięcie SMA(14) z EMA(45) na M30
można przerobić na wejście do NN w ten sposób:
wej1 = WAGA_PRZECIECIA_SMA(45, 100);
wej2 = WAGA_PRZECIECIA_SMA(14, 45);
wej3 = IF((wej1 > 0) && (wej2 > 0)) ? wej1 - wej2 : 0;

Funkcja WAGA_PRZECIECIA zwraca 0 jeżeli nie było przecięcia w powiedzmy ostatnich 10 analizowanych świecach, natomiast:
- dodatnie - dla przecięcia od dołu (im bliżej bieżącej świeczki tym większa liczba, dla ostatniej-bieżącej np. 10)
- ujemne - dla przecięcia od góry (jak wyżej - mniejsza liczba - bliższe przecięcie), np. -10.

Jeżeli jednak mocno chcesz pozostać przy AG - może warto zastosować liczby nie bity. Otrzymujesz dzięki temu możliwość optymalizacji "ważności" danego, wymyślonego przez Ciebie wejścia.
--
Pozdrawiam,
Łukasz Gryka

green7
Maniak
Maniak
Posty: 2060
Rejestracja: 16 sty 2008, 18:44

Nieprzeczytany post autor: green7 »

lucasgg pisze:Jeżeli jednak mocno chcesz pozostać przy AG - może warto zastosować liczby nie bity. Otrzymujesz dzięki temu możliwość optymalizacji "ważności" danego, wymyślonego przez Ciebie wejścia.
A że się "z głupia" zapytam:
- czym niby się różnią te liczby od bitów hę ?
Bo według mnie liczba to też bity .....
lucasgg pisze:Parametry wejściowe które podałeś, moim zdaniem, bardziej nadają się do wykorzystania NN.
Problem w tym, że NN trzeba trenować. Czyli mieć już zdefiniowany algorytm i szukać jego parametrów.
Tutaj autor jak rozumiem raczej ma na myśli coś w stylu genetycznego programowania: nie zna algorytmu i chce zmusić GA coby go znalazły .....
Green
Obrazek
Obrazek

Awatar użytkownika
lucasgg
Bywalec
Bywalec
Posty: 5
Rejestracja: 03 lis 2006, 19:58

Nieprzeczytany post autor: lucasgg »

Witam,
green7 pisze: A że się "z głupia" zapytam:
- czym niby się różnią te liczby od bitów hę ?
Bo według mnie liczba to też bity .....
A bit to też liczba :)
Chodzi o reprezentacje genu, której poszczególne cechy mogą mieć więcej wartości, niż pozwala na to zapis binarny.

Dlaczego myślę, że warto o tym pomyśleć - można przypisując kolejnym wejściom nadawać wagę (priorytet) przy podjęciu decyzji założenia transakcji, na różne sposoby (np. prawdopodobieństwo uwzględnienia danej cechy).
green7 pisze: Problem w tym, że NN trzeba trenować. Czyli mieć już zdefiniowany algorytm i szukać jego parametrów.
NN w takim wypadku będzie wykorzystana jako algorytm/mechanizm wyboru cech, wykorzystanych do zajęcia pozycji.
--
Pozdrawiam,
Łukasz Gryka

green7
Maniak
Maniak
Posty: 2060
Rejestracja: 16 sty 2008, 18:44

Nieprzeczytany post autor: green7 »

lucasgg pisze:NN w takim wypadku będzie wykorzystana jako algorytm/mechanizm wyboru cech, wykorzystanych do zajęcia pozycji.
Tyle, że tych cech są miliony, nie mamy przecież zdefiniowanego algorytmu który można by zoptymalizować przez NN. Dopiero go szukamy w oceanie możliwości: by zrobić to przez NN musiał byś definiować sieć z olbrzymią ilością wejść ....
Dlatego w tym wypadku NN się nie na da a AG tak.
Green
Obrazek
Obrazek

Awatar użytkownika
lucasgg
Bywalec
Bywalec
Posty: 5
Rejestracja: 03 lis 2006, 19:58

Nieprzeczytany post autor: lucasgg »

Witam,

Rozumiem, co masz na myśli - i oczywiście masz rację - tutaj AG jest naturalnym narzędziem. Chociaż wyszukanie samego algorytmu (w znaczeniu takim o jakim mowa w tym wątku) możesz i powierzyć NN, np. wejścia:
1: różnica w okresach przecinających się średnich (dla SMA15 i SMA45 = 30)
2: szerokość świeczki względem interwału bazowego (np. dla 1min interwału bazowego = 12 - świeczki 12-minutowe)
3: minimalna odległość od ostatniego przeciwnego przecięcia (filtr na konsolidacje)
4: warunek (waga) na wystąpienie wcześniej przecięcia opisanego w kolejnych 3-4 wejściach.
(+ oczywiście dodatkowe cechy - wybór metody uśredniania, itp.)

Niemniej jednak i tak należy wówczas wykorzystać algorytm (np. AG) omijający minima lokalne. Ale mamy już wynik względnie dobrze zoptymalizowany.
(Pomijam tutaj zasadność jednego czy drugiego rozwiązania... no może poza walorem edukacyjnym).


Miałem jednak co innego na myśli, wejścia w postaci wcześniej ustalonej, przyładowo:
- przecięcie SMA15, SMA35
- przecięcie SMA25, SMA52
- możliwe inne mniej bądź bardziej popularne sygnały
..................

w wyniku kierunek, + np. siłę tego kierunku.
--
Pozdrawiam,
Łukasz Gryka

green7
Maniak
Maniak
Posty: 2060
Rejestracja: 16 sty 2008, 18:44

Nieprzeczytany post autor: green7 »

lucasgg pisze:Miałem jednak co innego na myśli, wejścia w postaci wcześniej ustalonej, przyładowo:
- przecięcie SMA15, SMA35
- przecięcie SMA25, SMA52
- możliwe inne mniej bądź bardziej popularne sygnały
Ano właśnie. Jak wiesz co chcesz zrobić, i co optymalizować to tak: sieć będzie ok. Ale problem u autora wątku jest inny:
- on szuka magicznej czarnej skrzynki która znajdzie mu sensowne strategie.
Coś jak kamień filozoficzny i dawni alchemicy hehh :)

W takim zastosowaniu to właściwie nie są stricte AG, ale już programowanie genetyczne.
W sumie może na początek autor (o ile tematu nie porzucił) mógł się pobawić tego typu softem: jest kilka programów "szukających strategii" przy użyciu AG.
Green
Obrazek
Obrazek

Awatar użytkownika
mike_05
Maniak
Maniak
Posty: 1668
Rejestracja: 02 wrz 2010, 11:55

Nieprzeczytany post autor: mike_05 »

Mam takie wrażenie, ze pomieszane tutaj w dyskusji są dwa pojęcia
-algorytm genetyczny
-sieci neuronowe

Czy w załozeniu system ma być "na sztywno" zaszyty, czy ma sie sam uczyć i korygować? Bo juz sie pogubiłem...
Jeżeli chcesz odnieść sukces, naucz się cenić ludzi.

ODPOWIEDZ