Wskaźnik do pairs tradingu - pomóżcie

O jezykach programowania w platformach i nie tylko.
raniel
Uczestnik
Uczestnik
Posty: 4
Rejestracja: 26 lut 2011, 21:46

Wskaźnik do pairs tradingu - pomóżcie

Nieprzeczytany post autor: raniel »

Witam
Mam pomysł na dobry sprawdzony wskaźnik do pairs tradingu, który wyświetla w jednym oknie metatradera dodatkowy wykres i pozwala dowiedzieć się jaka jest rzeczywista różnica w pipsach między dwoma parami oto przykład:

Obrazek

Na powyższym zdjęciu mamy wykresy dwóch par (1M, maxymalnie oddalony) jeśliby zmierzyć różnicę w pipsach między ostatnimi cenami podanymi na wykresie to okazałoby się, że profit w momencie przecięcia się par jest dokładnie równy zmierzonej różnicy pipsów (oczywiście co do spreadu). Dzieje się tak dlatego, że wykres eurodolara przedstawiamy w układzie współrzędnych funta. By to zrobić należy wybrać sobie którąś świeczkę np: pięćsetną następnie dowiedzieć się jakie są ceny zamknięcia na pięćsetnych świeczkach obu par i zaczepić je na wykresie w tym samym punkcie (żółta kółko). Jednak by to wszystko działało punkt przecięcia (żółte kółko) nie może się zmieniać w czasie tzn. wraz z pojawieniem się nowej świeczki musi się on przesuwać do tyłu o jeden, a przecięcie (żółte kółko) musi być ciągle takie same.

Napisałem bardzo prosty wskażnik który pozwolił mi wyciągnąć powyższe wnioski jednak ma on pewną wadę mianowicie po iluś godzinach pracy nieznacznie zmienia on wykres waluty, która jest dodawana do normalnego wykresu (czerwony -wykres wskaźnika).

Gdyby udało nam się napisać taki wskażnik, który nie zmieniałby swojego wykresu (tego czerwonego) i spełnione by były warunki o których napisałem powyżej to mielibyśmy naprawdę bardzo cenne narzędzie do pairs tradingu. Zauważyłem bowiem, że gdyby wziąć jakieś w miarę dobrze skorelowane pary i za pomocą tego wskaźnika przedstawić je razem na wykresie w skali jednominutowej i maxymalnie oddalić (zoom-out) to na kilku parach można by znaleźć w ciągu dnia jakieś 5-7 setapów z potencjalnym zyskiem średnio 50 pipsów, a są to setapy jak wszyscy wiecie z wielkim prawdopodobieństwem powodzenia.

Ten wskaźnik da się napisać nie jest to coś nieosiągalnego i wcale nie jest to trudne dla kogoś kto zna się na programowaniu w MQL4, ja się na tym niestety kompletnie nie znam. Mimo to spróbowałem swoich sił i poniżej przedstawiam to co udało mi się napisać:

Kod: Zaznacz cały

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red

extern string ploted_pair="GBPUSD";
extern string new_pair="EURUSD";
extern int start_bar=500;
double buffer[];
int bars;


int init(){
   bars=Bars;
   SetIndexBuffer(0,buffer);
   SetIndexStyle(0,DRAW_LINE);
}

int start(){
 for(int i=0;i<Bars-bars+start_bar;i++)
    buffer[i]=iMA(new_pair,0,1,0,MODE_SMA,PRICE_CLOSE,i)+
              iMA(ploted_pair,0,1,0,MODE_SMA,PRICE_CLOSE,Bars-bars+start_bar-1)-
              iMA(new_pair,0,1,0,MODE_SMA,PRICE_CLOSE,Bars-bars+start_bar-1);
} 




Jak go używać:
1.wybieramy dwie dobrze skorelowane waluty (ale nie za dobrze) np: GBPUSD, EURUSD.
2.otwieramy wykres tej z tych powyższych par która ma większe notowania, czyli w naszym przypadku będzie to GBPUSD
3.dodajemy wskaźnik, ustawiamy TF 1M i maxymalnie oddalamy, wykres ma być liniowy

Jak już powiedziałem w obecnej formie wskaźnika tego nie da się praktycznie używać gdyż po dłuższym czasie zmienia on swój wykres, co prawda nieznacznie jednak na tyle, że gra z jego użyciem staje się niemożliwa. Dlatego proszę was jeśli znacie się na MQL4 a nie wątpię, że wielu z was tak to spróbujmy coś z tym zrobić bo ten wskaźnik byłby naprawdę żyłą złota. Będę stale monitorował ten wątek i w miarę jakichś pytań starał się na nie odpowiedzieć.

Awatar użytkownika
CoVal
Gaduła
Gaduła
Posty: 320
Rejestracja: 06 paź 2005, 22:45

Nieprzeczytany post autor: CoVal »

Sluchaj...
ten wskaznik z zalozenia bedzie ci zmienial "delikatnie" wykres z kazda nowa swieca....
bo to co robisz, to obliczanie (zreszta dosyc nietypowe) wartosci jednej waluty na wykresie drugiej.... ale robisz to zawsze dla ostatnich 500 swiec... wiec jak przychodzi nowa, to jako punkt wspolny przyjmujesz ta, ktora byla nr. 499 w czasie poprzedniej minuty.... wiec po jakichs 30 minutach twoj wykres moze wygladac juz zupelnie inaczej.

co wiecej... Pair Trading na parach walutowych jest - jakby to powiedziec - nie do konca sensowny. po co masz patrzec na wykres eurusd i gbpusd - po prostu patrz na eurgbp. i bedziesz mial to samo. tylko mniejszy spread.

oczywiscie gdybys chcial handlowac na przyklad przy pomocy TriArb albo koszyka walut, czy tez systemu typu High Frequency, to inna sprawa. ale dla zwyklego pairs tradingu cross zalatwia sprawe.

jesli nie wierzysz, to przerob swoj wskaznik tak, aby wykres eurusd/gbpusd nakladal ci na wykres eurgbp....

co innego jesli chcialbys uzyc PairTradingu do handlu np. na dobrze ze soba skointegrowanych indeksach czy surowcach.

Zobacz jak dziala np. specjalistyczna platforma do takiego handlu - np.: X_Trader's Autospreader:
https://www.tradingtechnologies.com/pro ... ospreader/
przy pomocy tego narzedzia mozesz tworzyc automatycznie dowolne instrumenty syntetyczne z dwoch lub kilku instrumentow.... i handlowac tym czyms...
powodzenia....

raniel
Uczestnik
Uczestnik
Posty: 4
Rejestracja: 26 lut 2011, 21:46

Nieprzeczytany post autor: raniel »

CoVal pisze:bo to co robisz, to obliczanie (zreszta dosyc nietypowe) wartosci jednej waluty na wykresie drugiej.... ale robisz to zawsze dla ostatnich 500 swiec... wiec jak przychodzi nowa, to jako punkt wspolny przyjmujesz ta, ktora byla nr. 499 w czasie poprzedniej minuty.... wiec po jakichs 30 minutach twoj wykres moze wygladac juz zupelnie inaczej.
Mówisz, że wykres będzie się zmieniał z czasem a nie powinien ponieważ zaimplementowałem dynamiczne przesuwanie się punktu zaczepienia. Ale nie o to mi chodzi, chodzi o to, że wykres bardzo nieznacznie zmienia swój kształt. Czego kompletnie nie rozumiem.
CoVal pisze:co wiecej... Pair Trading na parach walutowych jest - jakby to powiedziec - nie do konca sensowny. po co masz patrzec na wykres eurusd i gbpusd - po prostu patrz na eurgbp. i bedziesz mial to samo.
Nie do końca ponieważ handlując oboma parami handlujesz ich sumą a nie ilorazem więc wydaje mi się że rezultat jest inny... proszę mnie poprawić jeśli się mylę.

Awatar użytkownika
CoVal
Gaduła
Gaduła
Posty: 320
Rejestracja: 06 paź 2005, 22:45

Nieprzeczytany post autor: CoVal »

raniel pisze:
CoVal pisze:bo to co robisz, to obliczanie (zreszta dosyc nietypowe) wartosci jednej waluty na wykresie drugiej.... ale robisz to zawsze dla ostatnich 500 swiec... wiec jak przychodzi nowa, to jako punkt wspolny przyjmujesz ta, ktora byla nr. 499 w czasie poprzedniej minuty.... wiec po jakichs 30 minutach twoj wykres moze wygladac juz zupelnie inaczej.
Mówisz, że wykres będzie się zmieniał z czasem a nie powinien ponieważ zaimplementowałem dynamiczne przesuwanie się punktu zaczepienia. Ale nie o to mi chodzi, chodzi o to, że wykres bardzo nieznacznie zmienia swój kształt. Czego kompletnie nie rozumiem.
CoVal pisze:co wiecej... Pair Trading na parach walutowych jest - jakby to powiedziec - nie do konca sensowny. po co masz patrzec na wykres eurusd i gbpusd - po prostu patrz na eurgbp. i bedziesz mial to samo.
Nie do końca ponieważ handlując oboma parami handlujesz ich sumą a nie ilorazem więc wydaje mi się że rezultat jest inny... proszę mnie poprawić jeśli się mylę.
no wlasnie.... DYNAMICZNIE zmienia sie punkt zaczepienia. Dlatego wlasnie wykres zmienia ci sie z kazda nowa swieca....

jesli zaczepisz punkt odniesienia do stalego punktu w przeszlosci, to wykres przestanie ci repaintowac.

W Twoim kodzie widze jeszcze jeden slaby punkt ktory moze prowadzic do przeklaman szerokosci spreadu miedzyparowego....:

zrobiles petle i sprawdzasz poszczegolne wartosci przyporzadkowane dla kolejnych swiec wg ich indeksu - przy swiecach M1 calkiem normalnym jest, ze niektorych swiec po prostu nie ma.
dlatego w takim wypadku nalezy sprawdzac, czy danej swiecy na parze glownej jest przyporzadkowana swieca na drugiej parze dokladnie o tej samej godzinie i minucie.
jesli wypadnie ci jedna albo dwie swiece minutowe, bo poslugujesz sie po prostu indeksem, to przeklamania moga byc juz spore.

co do handlu suma lub iloczynem dwoch par, to wyglada to tak, ze np:

otwierasz longa na EURUSD czyli kupujesz okreslona ilosc EUR i sprzedajesz rownowartosc w USD,
i do tego owierasz shorta na GBPUSD czyli kupujesz okreslona ilosc USD i sprzedajesz rownowartosc w GBP.
Poniewaz sprzedaz USD w pierwszej parze i jej kupno w drugiej rownowazy sie calkowicie, to zostaje nam tak na prawde kupno okreslonej ilosci EUR i sprzedaz ekwiwalentnej ilosi GBP - czyli jednym slowem mowiac: kupno EURGBP.

milego handlowego dnia.

JAREK67
Maniak
Maniak
Posty: 2143
Rejestracja: 13 lip 2006, 11:21

Nieprzeczytany post autor: JAREK67 »

raniel
Nie chciałbym zbytnio gasić Twojego zapału do samej idei handlowania na spredzie między parami. Jeśli chcesz bliżej zgłębić to zagadnienie warto zebyś poczytał ten wątek: http://www.forexfactory.com/showthread. ... 721&page=1
Nie trzeba właściwie tworzyć wskaźnika, o którym piszesz (chyba że dla samej wizualizacji) żeby handlować w ten sposób. Co jest bardzo istotne w tym sposobie handlu? To co nazwałeś punktem zaczepienia. Czyli innymi słowy punkt odniesienia w przeszłości do stanu korelacji w chwili obecnej. I tu jest wg mnie najsłabszy element strategii. Bo jeśli nawet "na sztywno" określisz od którego momentu zaczynasz szukać setupu do wejścia. To bardzo prawdopodobne będzie, że w większej skali czasowej pary dopiero zaczynają "się rozjeżdżać". I ten proces może trwać dni i tygodnie. Oczywiście sama strategia raczej nie może zakładać wejścia tylko jedną parą par : :wink: Właśnie wtedy trzeba dokładać kolejne wejscia licząc na powrót rynku w okolice , które wygenerują na koncie profit i pozwolą zamknąć cały zestaw. To jest tylko jedna z koncepcji strategii. Dobrym wskaźnikiem korelacji może być w przypadku opisywanym kurs EURGBP w odniesieniu do jakiegoś punktu w przeszłości. Tylko do jakiego ? :roll:
Długa historia. I do tego nie można zrobić bactestów na MT4.
Testuję coś takiego (stopka), rewelacji raczej nie ma. No i pozostaje jeszcze koncepcja, o której wspominał Coval. Czyli gra jedynie na EURGBP, ale to już całkowite zarzucenie Twojego pomysłu. Chociaż właściwie to ten sam zbiór walut tylko inaczej rozpatrywany.

Awatar użytkownika
CoVal
Gaduła
Gaduła
Posty: 320
Rejestracja: 06 paź 2005, 22:45

Nieprzeczytany post autor: CoVal »

ale przeciez nie trzeba robic tego na walutach:
zobacz sobie np. DAX, CAC i STOXX - tu nie ma krosow, a poziom kointegracji jest lepszy niz na edku z kablem.

Jarek67 ma racje - okreslienie stanu neutralnego jest najtrudniejszym zadaniem w PairTraidingu - ale jest w tym duzy potencjal, wiec nie porzucaj nadziei.
Odpusc sobie tylko robienie tego na parach walutowych.

Lub graj calym koszykiem.

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

Nieprzeczytany post autor: green7 »

CoVal pisze:otwierasz longa na EURUSD czyli kupujesz okreslona ilosc EUR i sprzedajesz rownowartosc w USD,
i do tego owierasz shorta na GBPUSD czyli kupujesz okreslona ilosc USD i sprzedajesz rownowartosc w GBP.
Poniewaz sprzedaz USD w pierwszej parze i jej kupno w drugiej rownowazy sie calkowicie, to zostaje nam tak na prawde kupno okreslonej ilosci EUR i sprzedaz ekwiwalentnej ilosi GBP - czyli jednym slowem mowiac: kupno EURGBP.
Co do idei masz rację: grając na EURGBP masz w miarę to samo.

Jednak co do szczegółów to nie, te pozycje będą różne.
Zakładając, że kolega ma zamiar otworzyć pozycje o takiej samej wielkości na obu parach to mamy zgodnie z Twoim przykładem:
buy 1 lot EURUSD - czyli kupujemy 100K EUR sprzedajemy ileśtam USD
sell 1 lot GBPUSD - czyli sprzedajemy 100K GBP i kupujemy ileśtam USD
Nawet jeśli (choć najczęściej nie) pozycje w USD się zrównoważą to mamy pozycje:
kupno 100K EUR i sprzedaż 100K GBP.
Nie uzyskasz takiej pozycji poprzez kupno EURGBP bo przy kursie ~0.8 jest to niemożliwe - będziesz miał 100K EUR i 80K GBP.

De facto grając na tych 2 parach będziemy mieli otwarte: EUR, trochę mniej GBP i mało USD. Czy to ma sens .... baaaa... Może tak może nie ... ale ponoć zarabiać można na każdej metodzie.
Green
Obrazek
Obrazek

Awatar użytkownika
CoVal
Gaduła
Gaduła
Posty: 320
Rejestracja: 06 paź 2005, 22:45

Nieprzeczytany post autor: CoVal »

green7 pisze:
CoVal pisze:otwierasz longa na EURUSD czyli kupujesz okreslona ilosc EUR i sprzedajesz rownowartosc w USD,
i do tego owierasz shorta na GBPUSD czyli kupujesz okreslona ilosc USD i sprzedajesz rownowartosc w GBP.
Poniewaz sprzedaz USD w pierwszej parze i jej kupno w drugiej rownowazy sie calkowicie, to zostaje nam tak na prawde kupno okreslonej ilosci EUR i sprzedaz ekwiwalentnej ilosi GBP - czyli jednym slowem mowiac: kupno EURGBP.
Co do idei masz rację: grając na EURGBP masz w miarę to samo.

Jednak co do szczegółów to nie, te pozycje będą różne.
Zakładając, że kolega ma zamiar otworzyć pozycje o takiej samej wielkości na obu parach to mamy zgodnie z Twoim przykładem:
buy 1 lot EURUSD - czyli kupujemy 100K EUR sprzedajemy ileśtam USD
sell 1 lot GBPUSD - czyli sprzedajemy 100K GBP i kupujemy ileśtam USD
Nawet jeśli (choć najczęściej nie) pozycje w USD się zrównoważą to mamy pozycje:
kupno 100K EUR i sprzedaż 100K GBP.
Nie uzyskasz takiej pozycji poprzez kupno EURGBP bo przy kursie ~0.8 jest to niemożliwe - będziesz miał 100K EUR i 80K GBP.

De facto grając na tych 2 parach będziemy mieli otwarte: EUR, trochę mniej GBP i mało USD. Czy to ma sens .... baaaa... Może tak może nie ... ale ponoć zarabiać można na każdej metodzie.
Zgadzam sie z Toba Green, to nie bedzie to samo jesli otworzysz po 1 locie na obu parach - ale tak na prawde, jesli chcesz handlowac tymi dwoma parami, to trzeba kupic 1 lot EURUSD i sprzedac ok. 0.8 lota GBPUSD.... tylko wtedy ma to sens.... w przeciwnym wypadku system po powrocie do pozycji neutralnej moze byc wciaz ubozszy o te 20%.

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

Nieprzeczytany post autor: green7 »

CoVal pisze:Zgadzam sie z Toba Green, to nie bedzie to samo jesli otworzysz po 1 locie na obu parach - ale tak na prawde, jesli chcesz handlowac tymi dwoma parami, to trzeba kupic 1 lot EURUSD i sprzedac ok. 0.8 lota GBPUSD.... tylko wtedy ma to sens.... w przeciwnym wypadku system po powrocie do pozycji neutralnej moze byc wciaz ubozszy o te 20%.
No tak - ale nie wiadomo co autor miał na myśli....
Wszystko zależy od tego jak zamierzał dobierać wielkość pozycji. Jeśli by robił jak sugerujesz wyżej to gra na tych 2 parach nie miałaby sensu. To samo z mniejszym spreadem miałby na EURGBP.
Trzeba by zapytać autora, teraz pewnie ma już temat do przemyślenia.
Green
Obrazek
Obrazek

JAREK67
Maniak
Maniak
Posty: 2143
Rejestracja: 13 lip 2006, 11:21

Nieprzeczytany post autor: JAREK67 »

green7 pisze:
CoVal pisze:Zgadzam sie z Toba Green, to nie bedzie to samo jesli otworzysz po 1 locie na obu parach - ale tak na prawde, jesli chcesz handlowac tymi dwoma parami, to trzeba kupic 1 lot EURUSD i sprzedac ok. 0.8 lota GBPUSD.... tylko wtedy ma to sens.... w przeciwnym wypadku system po powrocie do pozycji neutralnej moze byc wciaz ubozszy o te 20%.
No tak - ale nie wiadomo co autor miał na myśli....
Wszystko zależy od tego jak zamierzał dobierać wielkość pozycji. Jeśli by robił jak sugerujesz wyżej to gra na tych 2 parach nie miałaby sensu. To samo z mniejszym spreadem miałby na EURGBP.
Trzeba by zapytać autora, teraz pewnie ma już temat do przemyślenia.
Ale właśnie w taki sposób dobierając wielkość pozycji (ja to robię tak KABEL = EURGBP * EDEK) ta strategia ma większą szansę powodzenia. Wg mnie chodzi również o to żeby dla każdej z par taka sama zmiana kursu wyrażona w % odpowiadała w miarę możliwości równym zmianom wartości kwotowanych. Czyli żeby te dwie pozycje "ważyły" tyle samo.

ODPOWIEDZ