Cotarea – o noua activitate in MT5

[English version] [MQLmagazine.com in english] [Editia romaneasca]Lightspeed-Trading

Bine, poate am exagerat termenul putin, dar la urma urmei asa mi se pare ca stau lucrurile. Va fi o modalitate de implementare a arbitrajului fx/futures si a altor arbitraje similare intre instrumente substituibile. Ca NYMEX Crude Light/ICE WTI sau orice indice major si versiunile sale “mini”.

Cu mult timp in urma, pe fostul meu blog, am prezentat o metoda pentru a arbitraja prostia brokerilor care ofera forex fara swap in acelasi timp cu fx futures. La acel moment, am vorbit putin despre arbitrajul de dezaliniere. Acum ne vom ocupa de el.

Dupa cum se stie, futures copiaza fluctuatiile activului suport, iar diferenta dintre ele, denumita basis, se reduce gradual catre zero, la expirarea futures. Nu ma voi ocupa aici de calculul valorii reale, pentru ca valoarea reala, chiar si pentru futures pentru fx, nu poate fi calculata corect, ce sa mai vorbim de resursele disponibile traderilor de forex. Cu toate acestea, nu e nevoie de a o calcula. Intrucat futures este un instrument “la vedere” ajustat cu rata dobanzii, inseamna ca basis-ul se reduce catre expirare cu o viteza mica, mai ales cand dobanzile diferentiale sunt mici, astfel incat, pentru mai multe ore, daca nu chiar zile, poate fi considerat constant. Si cititorii blogului meu de la acea vreme au vazut ca fluctuatiile basis-ului se aplica in special la fiecare noua zi de tranzactionare, dupa fiecare restart al pietei Globex. Aceasta inseamna ca in timpul zilei de tranzactionare basis-ul poate fi considerat relativ constant. De unde rezulta ca basis-ul va fluctua tot timpul in jurul unei valori fixe, constituindu-se intr-o baza de evaluare daca futures este prea aproape sau prea departe de activul suport. Luand in calcul faptul ca fx are un volum mult mai ridicat decat futures, ne putem astepta ca generatorul ferestrelor de dezaliniere sa fie piata forex, avand latenta mult mai redusa decat lenesa piata futures. discount-windowIn acest chart se pot vedea fluctuatiile “discount window”, care este EURUSD – 6EZ9. Pentru ca nu suntem interesati de fereastra de discount, si nu vrem sa fim prinsi in calcule de discount care pot fi gresite datorita informatiilor gresite cu privire la ratele dobanzii, consideram baza de calcul ca media mobila simpla pe 20 de minute a basis-ului (linia roz). Linia rosie si cea verde sunt la 2 pipsi distanta de media mobila roz. Se observa cum basis-ul fluctueaza in jurul propriei medii mobile, un zgomot alb continuu arbitrajabil…

Cum folosesc traderii profesionisti acest lucru?

Traderii profesionisti actioneaza in pietele reale, sau pietele de nivel II. Pietele de nivel II sunt “pietele” asa cum sunt ele in realitate. Fiecare piata este formata de cerere si oferta. Cererea este reprezenta de ordinele de pe partea de Bid, care contine ordinele traderilor care vor sa cumpere la un anumit pret, iar oferta este reprezentata de ordinele de pe latura de Ask, care cuprinde ordinele traderilor care vor sa vanda la un anumit pret. Activitatea de postare a ordinelor este cunoscuta sub numele de cotare.  Cand un trader vrea sa cumpere la pretul de piata, va cumpara de la cei care vand, la pretul Ask , si un trader care vrea sa vanda la un pretul de piata va vinde celor care vor sa cumpere, la Bid. Aceasta este cunoscuta ca executie de piata si este singura disponibila traderilor de retail. Traderii de retail nu coteaza, nu “fac piata”, nu pot posta ordine de cumparare la Bid, nici posta ordine de vanzare la Ask. Traderii carora le sunt executate ordinele postate, cumpara la Bid sau vand la Ask fara costuri de spread.

Un trader profesionist va cunoaste basis-ul, va lua pretul futures ca baza pentru constructia pretului fx, si va cota doua ordine forex, ambele departe de futures. Daca unul dintre ele va fi executat, celalalt ordin va fi sters si futures va fi executat la piata pentru a acoperi latura fx. Asta va ajuta enorm, deoarece costurile sunt cam injumatatite: tranzactia de forex nu va fi insotita de spread. Sa zicem ca futures coteaza 1.3000/01 si basis-ul estimat pentru astazi este 50 de pipsi in sus, cu fx normal la fx-50 de pipsi. Deci avem fx la 1.2950/01. Presupunand o fluctuatie sus/jos de 2 pipsi, un trader va cota un bid fx la 1.2948 si un ask fx la 1.2952. Daca unul dintre ele este executat intr-o miscare rapida de piata, care este foarte probabila in momentele de inalta volatilitate, futures va fi executat la piata. Sa zicem ca bidul este executat si avem o cumparare forex la 1.2948. Ordinul de vanzare forex este sters si futures este vandut la 1.3000 . Zece minute mai tarziu, alta miscare volatila va inchide fereastra. Futures coteaza 1.3020/21, basis-ul este intors din nou, fx cotand nu 50 de pipsi mai jos, ci doar 48, la 1.2972 , cand tranzactiile vor fi inchise. Tranzactiile vor fi:

cumparare fx @1.2948 , close @ 1.2972 , profit 24 pipsi

vanzare futures @  1.3000, close @ 1.3021, pierdere 21 pipsi

profit net 3 pipsi

Nu mai e nevoie sa o zicem, procesul de cotare e unul continuu. Partea de cotare se poate afla, din punctul de vedere al programarii in MQL,  fie numai in OnTick()  sau in OnTick() si OnBookEvent(), daca mai multe simboluri sunt setate sa trimita evenimente de cotatie, intr-o masina de cotare multi-instrument. La fiecare cotatie venind pe OnTick() sau pe OnBookEvent(), ordinele vor fi repozitionate (deci cotare).

Dar sansele lucreaza tot timpul impotriva traderului de retail. Fortat sa foloseasca numai executia de piata si sa suporte probabil latenta foarte mare, acum platforma va face lucrurile mult mai simple. Care e diferenta?

Traderii de retail nu pot cota. Ei au disponibila numai executia la piata. Asta inseamna ca, in loc sa coteze, ei trebuie sa se descurce numai cu ordine pending (ordine lansate pentru anumite preturi si neexecutate inca) . Este mai degraba un fel de pseudocotare decat cotare , pentru ca traderii nu posteaza “cotatii” in orderbook. De aceea, va aparea ca si cum ar fi managementul ordinelor pending. Traderul nostru de MT5 va rula expertul (programul de tranzactionare) pe contractul futures, de volatilitate mica. OnTick() va fi executat la fiecare tick, ca si start() in MQL4. De fiecare data preturile sunt diferite, ordinele vor fi sterse si retrimise in piata – acelasi proces ca in cotare. Dar de data aceasta avem o unealta superioara: evenimentul OnTrade().

Evenimentul OnTrade(), asa cum e implementat in prezent, nu permite traderului sa stie ce ordin a fost executat. Chiar si asa, o verificare rapida poate fi implementata. Nu va necesita verificarea continua ca in MT4, care costa timp valoros, cauzand expertul sa sara cotatii tot timpul. Deci chiar acum traderii de retail au posibilitatea sa imite cu acuratete ce fac profesionistii. Dar, trebuie sa luam in calcul ca piata trebuie sa se miste mai mult. Intrucat preturile cotate sunt un ask pentru cumparare si un bid pentru vanzare, piata trebuie sa se miste cate un pip in plus pentru a compensa pierederile cu spreadul, ceea ce inseamna oportunitati mai putine pentru traderii de retail. Ia in consideratie si slippage-ul (alunecarea cotatiilor, din momentul lansarii ordinului de piata pana la executie) pe futures, care va fi periculos in ambele momente, la lansarea si la inchiderea tranzactiei de futures, pentru ca in aceste momente traderii profesionisti pun presiune pe futures, la fel ca si tine, dar au un pas inainte…

O caracteristica interesanta a MT5 este detestata lipsa a hedgingului (MT5 nu permite tranzactii contrare pe acelasi instrument – la lansarea unei tranzactii contrare, cea initiala se micsoreaza, inchide sau se inverseaza) , care devine foarte util in cotare. In loc de folosirea unor tinte globale de profit care sa atraga si mai mult slippage cand se inchide ordinul, traderul isi poate cota iesirea din situatie. Din nou, ca si in cazul tranzactiei initiale, ordine opuse sunt contate pentru a crea o capcana de volatilitate pe perechea forex. Va mai amintiti ce am scris mai sus in articol, italic, ca se intampla zece minute mai tarziu ? Aceea era versiunea normala, in ipoteza ca inchidem tranzactiile. Dar daca vom cota inchiderea?

Dat fiind faptul ca am cumparat sau vandut un spread, ne asteptam la o divergenta intre cele doua instrumente, desigur cu o mai mare sansa pe latura de forex. Deci, trebuie sa cotam doua ordine. Daca unul este executat, vom sterge pozitia de pe cealalta parte, cu ajutorul OnTrade() care ne va semnaliza executia, ajutand la inchiderea celeilalte tranzactii. De exemplu, chiar dupa ce avem ambele tranzactii initiate, vom cota tranzactii de inchidere : vanzare fx la 1.2951, cumparare futures la 1.2997.  Ca si in cazul procesului de la initierea tranzactiilor, cotarea pentru inchidere trebuie sa fie continua, prin cotarea unui salt pe ambele active, cu accent pe cea mai activa. In mediul MT4, “cu posibilitati de hedging”, acest lucru ar fi fost imposibil : alte ordine nu ar fi inchis executia, iar slaba incercare de a utiliza inchideri automate ar fi necesitat rasuciri permanente ale setarilor stop loss si take profit ale ordinelor.

Aceasta tehnica poate fi aplicata cu marfuri, indici bursieri etc. Tot ce conteaza e ca cele doua active sa fie legate printr-o relatie de arbitraj. Ai grija totusi, ca executia este dependenta de latenta. Iar pentru a avea mai multe executii, este necesar sa “cotam” latura care este mai lichida, pentru ca are sanse sa fie mai volatila si sa genereze mai multe oportunitati.

Mult noroc la arbitrajare! Caci fara latenta redusa, o sa ai nevoie de mult…

Editii