Quantitative Trading

Tu można dyskutować o wszystkich sprawach związanych z rynkiem Forex.

Czy korzysztasz z zaawansowanych modeli matematycznych podczas tradingu?

tak
26
23%
nie
88
77%
 
Liczba głosów: 114

maariuszn
Stały bywalec
Stały bywalec
Posty: 72
Rejestracja: 01 cze 2007, 22:25

Nieprzeczytany post autor: maariuszn »

Tig3r pisze:Panowie, to co opisujecie MT4 ma już wbudowane przy optymalizacji.
Wiem, że MT ma wbudowaną funkcję optymalizacji opartą na GA, chciałem tylko pokazać jak działa GA, co ma być wstępem do GP. Chciałem podkreślić, że GP (genetyczne programowanie) wykorzystuje GA ale to nie to samo!
Zastanawiam się również, czy wersja greena z kodem typu "xxxxyyyyzzzzvvvvv" jest poprawna ale używa innych pojęć niż przedstawionych przeze mnie czy mówimy w ogóle o czymś innym.
Wszystko sie zgadza i mówimy o tym samym. W podanym przykładzie x,y czy z przyjmują wartości 0 lub 1 a zatem można je nazwać bitami. To ilu bitów potrzebujemy zależy tylko od tego jaką informajcę potrzebujemy zakodować.
StudenTM84 pisze:No i pozostaje problem z funkcją przystosowania/celu w postaci zysku... - jak ją stworzyć posiadając jedynie informacje o cenie HOCL... no chyba, że zostaniemy przy standardowej funkcji (y-d)^2
Jeżeli chodzi o tę kwestię to ja nie widzę żadnego problemu. Mając danego osobnika, dekodujemy informację zawartą w jego chromosomie a uzyskane wartości parametrów wstawiamy do systemu. Następnie system zapuszczamy na danych i uzyskujemy wszyskie niezbędne informacje do funkcji celu np. zysk, max dd, %zyskownych transakcji, SharpeRatio i cokolwiek sobie chcemy wyliczyć.
Każdy osobnik uzyska inny wynik i na tej podstawie dokonujemy selekcji.

Chciałem jeszcze raz podkreślić, że GA to nie jest to samo co GP. GA jest wbudowane do MT i nie wydaje mi się, żeby warto było się nim zajmować, to jest po prostu algorytm do optymalizacji.
Wydaje mi się, że to na co warto zwrócić uwagę to właśnie GP. Chodzi o to, że dzięki temu ewoluuje cały system, jego struktura, nie optymalizujemy tylko wartości parametrów. Napisać coś takiego to już nie jest prosta sprawa, aczkolwiek nie jest to niemożliwe. :) Żeby wszyscy lepiej zrozumieli napiszę o tym pokrótce. Przy GP definiujemy podstawowe funkcje np. >,<,=, +,-,*,/, if..else oraz wartości parametrów, tzw. terminale np. ceny otwarcia, high, low. Definiujemy funkcję celu np. Sharpe Ratio, wielkość populacji, ilość osobników w populacji, max. dlugość chromosomu i... i to już wszystko (w wielkim skrócie)
Zapuszczamy algorytm i całe systemy ewoluują, Może nam np, wyjść system
if open[0]>high[1] then buy else do nothing a może wyjść i
if (open[0]<low[1] and (if low[1]<low[2])) then ... itd

Chodzi o to, że nie musimy od razu znać struktury systemu w którym optymalizujemy parametry, ewoluuje cały system

Pitmaster
Gaduła
Gaduła
Posty: 201
Rejestracja: 17 kwie 2008, 00:21

Nieprzeczytany post autor: Pitmaster »

BAQ pisze:
brahmaham pisze:nie widze nigdzie linku do programu R ;)?? dobrze by bylo aby ktos wrzucił jak gdzies widział albo jakies namiary gdzie szukac - przydałby sie.
opisów jest duzo w sieci ale programu znaleźć nie moge hmm ;/
http://www.smartquant.com/
Oto i opisywany program R: http://cran.r-project.org/

Mała uwaga. Program ten to na prawdę wyższa szkoła jazdy, ma też dosyć nieprzyjemną składnię, dlatego wiele osób używa go w połączeniu z C++. Kiedyś się na niego napaliłem, po paru godzinach zapał ostygł. Powiedziano mi, że bez odpowiedniego mentoringu raczej jest to trudny orzech do zgryzienia.

Myślę, że zabierać się za niego powinni ludzie z dużą wiedzą na temat matematyki wyższej oraz z doświadczeniem w Matlabie lub innym tego typu sofcie.

Dal początkujących , proponuje obrazkową wersję R, czyli program GRETL. Możliwości tego programu są mniejsze, jednak na początek w zupełności wystarczą.
http://www.kufel.torun.pl/

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

maariuszn pisze:GP (genetyczne programowanie)
Chodzi Ci o to aby algorytm sam "programował" łącząc małe instrukcje w cały program. Jak widzisz takie rozwiązanie w kontekście stałości? Tworzysz system raz i koniec, czy generujesz nowy co X czasu?
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

StudenTM84
Stały bywalec
Stały bywalec
Posty: 53
Rejestracja: 07 maja 2009, 21:08

Nieprzeczytany post autor: StudenTM84 »

Ja w sumie powróciłbym jeszcze do funkcji celu - jak ją stworzyć...
maariuszn pisze:Jeżeli chodzi o tę kwestię to ja nie widzę żadnego problemu.
a ja niestety tak :(

jak ją w ogóle napisać w mql-u? :/. Może macie jakieś gotowce :D Oczywiście chodzi mi o coś w stylu pseudozysku (tak na początek) a nie zwykłej różnicy między ceną a wynikiem AG w każdym słupku...
Domyślam się, że trzeba stworzyć wektor zmiennych (np. w postaci double zmienne[p][z] - p = próba np. 1000000 a z - ilość zmiennych, np. 10) oraz wektor danych np. double cena[p]. Z uwagi na to, że raczej nie mamy możliwości odniesienia się do każdego pipsu najbardziej odpowiednim byłby TF M1 :]
No i jak dalej...? :/
Ostatnio zmieniony 14 gru 2009, 13:14 przez StudenTM84, łącznie zmieniany 1 raz.
Pewnych rzeczy nie można odkryć;
lecz tego nie stwierdzisz odgadywaniem ani snuciem domysłów;
nie, musisz być cierpliwy i przeprowadzić doświadczenia,
aż odkryjesz, że nie możesz czegoś poznać.
Mark Twain :)

maariuszn
Stały bywalec
Stały bywalec
Posty: 72
Rejestracja: 01 cze 2007, 22:25

Nieprzeczytany post autor: maariuszn »

Tig3r pisze:Chodzi Ci o to aby algorytm sam "programował" łącząc małe instrukcje w cały program. Jak widzisz takie rozwiązanie w kontekście stałości? Tworzysz system raz i koniec, czy generujesz nowy co X czasu?
Tak, właśnie o to chodzi. W kwestii stałości to teoretycznie sprawa wygląda bardzo interesująco. Oczywiście są różne rozwiązania, ale według mnie najciekawszym jest np. wybranie top 10 osobników i każdy gra 1/10 kapitału przeznaczonego na zawieranie transakcji. Dzięki temu ryzyko się rozkłada. Jednocześnie cała populacja może cały czas ewoluować albo, tak jak napisałeś, ewoluować w X odstępach czasu.

Awatar użytkownika
jasonbourne
Pasjonat
Pasjonat
Posty: 1262
Rejestracja: 07 kwie 2006, 14:45

Nieprzeczytany post autor: jasonbourne »

vindemiatrix pisze:Do tego potrzebujesz zdrowego rozsądku bo zliczenie ile razy wyszedłeś na plus a ile razy na minus i porównanie takiej "efektywności" to nie statystyka a z prawdopodobieństwem też ma nie wiele wspólnego
Ty oczywiście wiesz jakie obliczenia robiłem na potrzeby swojego systemu. I oczywiście wiesz, że nie miały nic wspólnego ze statystyką i rachunkiem prawdopodobieństwa.

A jeżeli tak wszystko wiesz, to ja już się nie wypowiadam, bo i po co? Skoro wszystko wiesz?
alinoe pisze:Ale ja nie mam stałych parametrów systemu, może to nawet nie jest system.
Ważne, że działa. Jak widać można i tak.
Zapraszam do czytania moich artykułów "Jak zarabiać co najmniej 100% rocznie na rynku Forex" na portalu Comparic.pl

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

StudenTM84 pisze:Ja w sumie powróciłbym jeszcze do funkcji celu - jak ją stworzyć...
To musiałaby być kombinacja parametrów za/przeciw odpowiednio wyważona
czyli np:

dodatnio na wynik działa:
większy profit, mniejszy DD, mniejszy stosunek SL/TP, mniejsza ilość strat pod rząd i tak np każda z nich nazywa się
A, B, C, D

tworząc funkcje celu:
CEL= wagaA * A / wagaB * B / wagaC * C / wagaD * D

Dajmy na to że zależy Ci najbardziej:
wagaA: 50
wagaB: 25
wagaC: 5
wagaD: 20

CAL = 0,5 * profit / (0,25 *DD * 0,05 SL/TP * 0,2 strat z rzedu)

To taki mini przykład
Oczywiście parametry tak dobierasz na czym Ci najbardziej zależy w systemie. Jeśli chcesz pominąć jakieś przedziały dla danej zmiennej to tworzysz sztuczną funkcje wyników w zależności od parametrów (generujesz sztuczny rozkład).
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

StudenTM84
Stały bywalec
Stały bywalec
Posty: 53
Rejestracja: 07 maja 2009, 21:08

Nieprzeczytany post autor: StudenTM84 »

Tig3r pisze:To musiałaby być kombinacja parametrów za/przeciw odpowiednio wyważona
czyli np:

dodatnio na wynik działa:
większy profit, mniejszy DD, mniejszy stosunek SL/TP, mniejsza ilość strat pod rząd i tak np każda z nich nazywa się
A, B, C, D

tworząc funkcje celu:
CEL= wagaA * A / wagaB * B / wagaC * C / wagaD * D

Dajmy na to że zależy Ci najbardziej:
wagaA: 50
wagaB: 25
wagaC: 5
wagaD: 20

CAL = 0,5 * profit / (0,25 *DD * 0,05 SL/TP * 0,2 strat z rzedu)
O.k. to rozumiem, pytanie tylko jak zrobić funkcję w mql-u, która policzy Ci zysk - bo ja ciągle zakładam, że nie będę korzystać z optymalizacji wbudowanej... (chciałbym od podstaw coś takiego stworzyć :P)

Chodzi przykładowo o to, jak policzyć zysk twojego ea na jakiś danych z przeszłości (mając zapisane zmienne w tablicy). Najprostszy przykład:
Twój ea polega na tym, że pozycja się otwiera, gdy przecinają się dwie średnie i zamyka w ten sam sposób i teraz chcesz dobrać optymalne parametry MA1 i MA2 więc musisz znać funkcję celu - zysk.

chodziło mniej więcej o coś takiego (mam nadzieję, że dobrze kombinuję chociaż niewiele spałem więc nie myślę trzeźwo :/ ^^) - oczywiście w wielkim skrócie!

Kod: Zaznacz cały

bool openlong, openshort, open; //=false
double cenaopen, cenaclose, zysk, spread;
int start(){
...
for(int i =1; i<proba; i++){
if(!open){
if(MA1[i]>MA2[i])
open==true, openlong == true;
cenaopen = Cena[i];
...}
else{
open == true, openshort == true;
cenaopen = Cena[i];
}

if(open){
if(openlong){
if(MA1[i]<MA2[i]){
zysk = Cena[i] - cenaopen - spread;
open = false;
...
}
}
to takie wstępne przemyślenia - nie dokończone -(mogą być błędy logiczne ale chodziło o to jak zacząć) :D I tak chwilowo nie mam czasu, żeby się w to bardziej zaangażować :/ - może w święta :)
Ostatnio zmieniony 14 gru 2009, 14:37 przez StudenTM84, łącznie zmieniany 2 razy.
Pewnych rzeczy nie można odkryć;
lecz tego nie stwierdzisz odgadywaniem ani snuciem domysłów;
nie, musisz być cierpliwy i przeprowadzić doświadczenia,
aż odkryjesz, że nie możesz czegoś poznać.
Mark Twain :)

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

ZYSK =((Cena otwarcia-Cena zamknięcia)/Point*PIPS_VALUE+ SWAP)*KURS_WALUTY_NA_2_miejscu_do_waluty_depo(lub_jej_odwrotność)
lub po prostu
zysk=OrderProfit()+OrderSwap()
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

StudenTM84
Stały bywalec
Stały bywalec
Posty: 53
Rejestracja: 07 maja 2009, 21:08

Nieprzeczytany post autor: StudenTM84 »

Tig3r pisze:ZYSK =((Cena otwarcia-Cena zamknięcia)/Point*PIPS_VALUE+ SWAP)*KURS_WALUTY_NA_2_miejscu_do_waluty_depo(lub_jej_odwrotność)
ohh right... O_o nawet nie zwróciłem na to uwagi ;D - ale liczenie pipsów też nie jest złe :p. Niestety biorąc pod uwagę, że liczymy zysk z danych zapisanych w tablicy wszystko się komplikuje :( - chwilowo nawet nie myślę o bardziej złożonych założeniach ^^
Pewnych rzeczy nie można odkryć;
lecz tego nie stwierdzisz odgadywaniem ani snuciem domysłów;
nie, musisz być cierpliwy i przeprowadzić doświadczenia,
aż odkryjesz, że nie możesz czegoś poznać.
Mark Twain :)

ODPOWIEDZ