Tuesday, September 13, 2016

Bidirectionele Opsies Handel

directional Trading Omskrywing van 'Directional Trading' Trading Beperk Lang (of lang posisie) Afbreek van 'Directional Trading' Directional handel in aandele sal oor die algemeen het 'n redelike groot skuif na die handelaar in staat stel om kommissies en handel koste te dek en nog 'n wins te maak. Maar met opsies, as gevolg van hulle hefboom, directional handel kan word gepoog selfs al is die verwagte beweging in die onderliggende voorraad nie verwag groot te wees. Byvoorbeeld, kan 'n handelaar (noem hom bob) optimisties oor voorraad XYZ, wat verhandel teen $ 50 wees, en verwag dat dit styg tot $ 55 binne die volgende drie maande. Bob kan dus koop 200 aandele teen $ 50, met 'n moontlike keerverlies by $ 48 in die geval die voorraad omkeer rigting. As die voorraad die $ 55 teiken bereik, kan Bob dit te verkoop teen daardie prys vir 'n bruto wins (voor kommissies) van $ 1.000. Wat gebeur as Bob verwag XYZ net handel tot $ 52 binne die volgende drie maande? In hierdie geval, kan die verwagte vooraf van 4% te klein om te regverdig die aankoop van die voorraad volslae wees. Opsies kan Bob bied 'n beter alternatief vir die maak van geld af XYZ. Kom ons sê Bob verwag XYZ (wat verhandel teen $ 50) tot hoofsaaklik sywaarts handel oor die volgende drie maande, met onderstebo tot $ 52 en nadeel van $ 49. Een moontlike opsie handel is vir Bob om te verkoop teen-die-geld (OTM) sit met 'n trefprys van $ 50 verval in drie maande, waarvoor hy kon premie van $ 1,50 ontvang. Bob skryf dus twee verkoopopsie kontrakte (van 100 aandele elk) en ontvang bruto premie van $ 300 (dit wil sê $ 1,50 x 200). As XYZ nie styg tot $ 52 by die tyd van die opsies verval in drie maande, sal hulle verval onuitgeoefende en Bob se wins is die premie van $ 300 (minder kommissies). Maar as XYZ verhandel onder $ 50 by die tyd van opsie verval, Bob sou verplig wees om die aandele te koop teen $ 50. As Bob was baie optimisties oor XYZ en wou sy handel kapitaal hefboom. Hy kon ook te koop call opsies as 'n alternatief vir die koop van die voorraad volslae. Algehele, opsies bied veel groter buigsaamheid om rigting ambagte te struktureer in teenstelling met reguit lank / kort ambagte in 'n voorraad of indeks. 3 maniere Commodity Options Trading onderskei hom van Stock Options Ek is 'n groot fan van die saak kommoditeit opsies. En jy moet wees, ook. Maar daar is 'n paar nuanses wanneer die handel kommoditeit opsies wat jy het om te oorweeg as jy gaan 'n paar kapitaal weg te beweeg van aandele. Hierdie 3 verskille is die belangrikste konsepte te verstaan, aangesien hulle moontlik die manier waarop jy handel hierdie instrumente kan verander. Vrees is in albei rigtings As daar een ding is om te leer oor opsies is dat elke kontrak 'n ander geïmpliseerde wisselvalligheid sal hê. Jy kan geïmpliseerde wisselvalligheid oor verskeie stakings visualiseer deur te kyk na die wisselvalligheid skeef. Hier is 'n foto van LiveVol wat die wisselvalligheid skeef vir SPY Junie Options: Let daarop dat as ons laer inkom staking, die geïmpliseerde wisselvalligheid op elke kontrak styg. Dit is omdat opsie handelaars is bereid om te betaal vir "stert-risiko" beskerming, en die meeste verskansers in aandele is bang nadeel. Vergelyk dit met die wisselvalligheid skeef vir GLD Junie Options: In plaas van 'n "skewe" Ons het nou 'n "glimlag." Wat is hier aan die gang? Dit kom daarop neer dat die persepsie van risiko. Equity beleggers is bang nadeel in aandele. Maar in kommoditeite soos goud, olie, sojabone, en geldeenhede die persepsie van risiko is bidirectionele. Dit beteken dat die stert risiko kan wees aan weerskante. Dink oor oil-- as ons het 'n $ 20 gewemel van olie na die onderstebo in 'n baie kort tyd, wat aansienlike gevolge in verskeie bates sou hê. So wanneer verskansers en spekulante uit te kom om kommoditeit opsies, bang is dat hulle sterk beweeg in enige rigting. Dit verander die strategie stel wat in kommoditeit opsies trading-- yster CONDORS meer aantreklik, as doen verhouding verkope na uiterste beweeg. Kommoditeite het verskillende Event gebaseerde risiko Enkelaandeel-aandele kan gedryf word deur die opgradering, downgrades, verdienste, FDA gebeure, insider verkoop, hou updates, institusionele herbalansering, Intermarket korrelasie, dieselfde winkel verkoop. die lys kan gaan hou. Dit verhoogde risiko produseer hoër potensiaal reward-- en vir diegene wat wil hê dat meer konserwatief te kry, kan handel indekse of indeks termynmark wat risiko te verminder. Met kommoditeit opsies, die risiko's wat beweging ry is heeltemal anders as wat aandele dryf. Dit kan die basis aanbod verslae of rentekoers veranderinge deur sentrale banke. Omdat die risiko's is anders, kan dit jou 'n manier om jou ambagte te diversifiseer teen verskillende risiko's te gee. Dit kan deurslaggewend wees wanneer die vind van die beste ambagte. Kommoditeit Opsie handelaars 'n ander ras Onthou, dit kom neer op die persepsie van risiko. Hoekom is risiko bidirectionele? Omdat die motivering in die kommoditeite mark is heeltemal anders as aandele. Joe boer moet sy sojabone verkoop. Spacely sprocket maatskappy moet hul Euro te verskans. ZeroHedge het om meer geld aan die manipuleerders bestry koop. Vergelyk dit met stocks-- vir 95% van die bevolking, te belê is die sleutel termyn. Hulle lyk om voorraad te koop in maatskappye. Vergelyk dit met goud en olie: daar is geen kontantvloei uit hierdie. Uit 'n strukturele oogpunt, hulle is nie "beleggings." Omdat die behoeftes van hierdie markte is anders, die eise van hierdie markte is anders. Wat gaan aan op die oomblik. Ek sien twee moontlikhede op pad na die somermaande. Óf-gebeurtenis gebaseer risiko (Eurosone / China) maak 'n comeback of is dit nie. As ons die eerste scenario, dan korrelasies sal ratel up onder voorrade en dit sal 'n makro spel weer. As die tweede kom saam, dan somer wisselvalligheid en likiditeit in aandele sal kwyn. In ieder geval, kommoditeit opsies handel is sfeer van om terug te kom in my handel arsenaal vir die volgende paar maande. Oor die skrywer Oor Dave Foo outeur van Handboek op Options Trading mnr Dave Foo het handel ervaring in termynkontrakte vir meer as 'n dekade Simsci, Taiwan, Nikki, en Eminis (S & amp; P, Russell, Nasdaq en Dow Jones). Hy het sy werk in einde 2003 tot 'n meer winsgewende voltydse handel loopbaan. Gebruik te maak van sy kundigheid en ervaring in die futures markte, het hy nie die handel altwee naak en bedek opsies vir meer as 5 jaar met verstommende sukses! Trouens, Dave het om keer op keer oor hoe om konsekwent wins met handel termynmark opsies op S & amp genereer bewys; P, indeks ETF opsies soos QQQQ, kommoditeite opsies, ru-olie, graan soos koring, sojabone, koring, metale, naamlik goud, silwer, koper, en softs dws koffie, suiker, katoen ens Hy is verskeie kere genooi op sy styl van handel te praat deur Options Handelaars Club van Singapoer. INHOUDSOPGAWE AANHANGSEL BESKRYWING Inleiding Hierdie artikel is 'n voortsetting van die eerste deel "bidirectionele Trading en verskansing van posisies in Meta Trader 5 Die gebruik van die HedgeTerminal paneel, Deel 1". In die tweede deel, sal ons integrasie van deskundige adviseurs en ander MQL5 programme met die HedgeTerminalAPI biblioteek bespreek. Lees hierdie artikel om te leer hoe om te werk met die biblioteek. Dit sal jou help om bidirectionele handel Expert Adviseurs skep terwyl hy nog besig om in 'n gemaklike en eenvoudige handelsomgewing. Benewens die biblioteek beskrywing, die artikel raak op die beginsels van die asynchrone handel en multi-threaded programme. Hierdie beskrywings word gegee in die derde en vierde dele van hierdie artikel. Daarom sal hierdie materiaal nuttig vir die handelaars wat nie belangstel in bidirectionele handel, maar wat graag om uit te vind iets nuuts oor asynchrone en multi-threaded programme. Die materiaal wat hieronder aangebied is bedoel vir ervare algoritmiese handelaars wat die MQL5 programmeertaal te leer ken. As jy nie MQL5 weet, lees asseblief die eerste gedeelte van die artikel, wat eenvoudige diagramme en tekeninge verduidelik die algemene beginsel van die biblioteek en die paneel HedgeTerminal bevat. Hoofstuk 1. Interaksie van deskundige adviseurs met HedgeTerminal en sy paneel 1.1. Installasie van HedgeTermianlAPI. Die Eerste Begin van die Biblioteek Die proses van HedgeTerminalAPI installasie verskil van die installasie van die HT visuele paneel, aangesien die biblioteek nie alleen kan loop in Meta Trader 5. In plaas daarvan, jy sal nodig hê om 'n spesiale Expert adviseur van die funksie HedgeTerminalInstall () uit die biblioteek bel ontwikkel. Hierdie funksie sal 'n spesiale kop lêer Prototypes. mqh beskrywing van die funksies wat beskikbaar is in HedgeTerminalAPI stel. 'N biblioteek geïnstalleer op 'n rekenaar in drie stappe: Stap 1. Laai die HedgeTerminalAPI biblioteek op jou rekenaar. Biblioteek plek relatief tot jou terminale: \ MQL5 \ Kenners \ Market \ HedgeTerminalApi. ex5. Stap 2. Skep 'n nuwe Expert adviseur in die MQL5 Wizard met behulp van 'n standaard sjabloon. Die MQL5 Wizard verwek die volgende bron-kode: Stap 3. Jy sal net een funksie van die gevolglike Expert Adviseur benodig - OnInit (). en die uitvoer richtlijn beskryf die spesiale installeerder funksie HedgeTerminalInstall () uitgevoer deur die HedgeTerminalApi biblioteek. Begin hierdie funksie reg in die funksie OnInit (). Die bron-kode in geel gemerk voer hierdie operasies: Stap 4. Jou verdere optrede afhang of jy die biblioteek aangekoop. As jy dit gekoop het, kan jy die deskundige adviseur direk hardloop in real-time op die grafiek. Dit sal die standaard installasie van die hele produk lyn van HedgeTerminal begin. Jy kan hierdie stap maklik voltooi deur die instruksies in afdelings 2.1 en 2.2 van die artikel "bidirectionele Trading en verskansing van posisies in Meta Trader 5 Die gebruik van die HedgeTerminal paneel, Deel 1" beskryf. Die towenaar installasie installeer al die nodige lêers, insluitend die kop lêer en die toets Expert adviseur op jou rekenaar. As jy nie die biblioteek gekoop en net wil om dit te toets, sal dan EA operasie in real-time nie beskikbaar wees vir jou, maar jy kan toets API deur die loop van die EA in die strategie tester. Die installeerder sal nie uitgevoer word in hierdie geval. In die toets af, HedgeTermianalAPI werk in 'n enkel-gebruiker modus, sodat dit nie die lêers in die normale modus geïnstalleer wees. Dit beteken dat jy nie nodig het om enige iets anders te stel. Sodra EA toetsing gedoen word, gids \ HedgeTerminal geskape is in die algemeen gids van die terminale. Die normale pad na die algemene gids van die Meta Trader terminale is c: \ Users \ & lt; Gebruikersnaam & gt; \ AppData \ Roaming \ MetaQuotes \ Terminal \ Common \ lêers \ HedgeTerminal \. waar & lt; Gebruikersnaam & gt; is die naam van jou huidige rekenaar rekening. Die gids \ HedgeTerminal reeds bevat lêers \ MQL5 \ Sluit \ Prototypes. mqh en \ MQL5 \ Kenners \ Chaos2.mq5. Kopieer hierdie lêers in dieselfde dopgehou van jou terminale: lêer Prototypes. mqh na \ MetaTrader5 \ MQL5 \ Sluit. en liasseer Chaos2.mq5 na \ MetaTrader5 \ MQL5 \ Kenners. Lêer Prototypes. mqh is 'n kop-lêer met beskrywing van die uitvoer van die HedgeTerminalAPI biblioteek funksies. Hul doel en beskrywings vervat in kommentaar aan hulle. Lêer Chaos2.mq5 bevat 'n monster EA in artikel beskryf "Die SendTradeRequest funksie en die HedgeTradeRequest Struktuur deur die voorbeeld van Chaos II EA". Op hierdie manier kan jy visueel verstaan ​​hoe HedgeTerminalAPI werk en hoe om 'n kundige adviseur gebruik te maak van die skynwerklikmaking tegnologie van HedgeTerminal ontwikkel. Die gekopieerde lêers is beskikbaar vir jou EAS. So jy hoef net die kop lêer in die Expert adviseur bronkode sluit om te begin met behulp van die biblioteek. Hier is 'n voorbeeld: Byvoorbeeld, die bogenoemde kode kry die totale aantal aktiewe posisies en vertoon die nommer in die blad "Kenners" van die Meta Trader 5 terminale. Dit is belangrik om te verstaan ​​dat HedgeTerminal eintlik is geïnisialiseer by die eerste oproep van een van sy funksies. Dit inisialisering is lui genoem. Daarom kan die eerste oproep van een van sy funksies 'n lang tyd in beslag neem. As jy 'n vinnige reaksie gedurende die eerste termyn wil, moet jy HT inisialiseer vooruit, byvoorbeeld, kan jy die funksie TransactionTotal () noem in die blok van OnInit (). Met lui inisialisering kan jy die eksplisiete inisialisering van die deskundige adviseur laat. Dit maak die werk met HedgeTerminal en maak dit onnodig om te pre-instel. 1.2. Integrasie van deskundige adviseurs met die HedgeTerminal paneel As jy die HedgeTerminal visuele paneel en die volledige weergawe van die biblioteek, wat kan uitgevoer word in reële tyd, kan jy jou Expert Adviseurs integreer met die paneel sodat almal handel bedrywighede uitgevoer word deur hulle ook verskyn in die paneel. In die algemeen, die integrasie is nie sigbaar nie. As jy HedgeTermianalAPI funksies te gebruik, is aksies wat uitgevoer word deur die robotte outomaties vertoon word op die paneel. Jy kan egter die van beelde uit te brei deur aan te dui die naam EA in elke toegewyde transaksie. Jy kan dit doen deur uncommenting die onder lyn in die lêer Settings. xml: Hierdie merker is in afdelings & lt; Active-Posisie & gt; en & lt; Geskiedenis-Posisie & gt; . Nou, is kommentaar verwyder, en die etikette is ingesluit in die verwerking. Na paneel weer begin, nuwe kolom van "Magic" verskyn in die tafels van aktiewe en geskiedenis posisies. Die kolom bevat die magie nommer van die deskundige adviseur, waarna die posisie behoort. As jy wil hê dat die EA naam in plaas van sy magie getal wys, voeg die naam van die alias lêer ExpertAliases. xml. Byvoorbeeld, magie getal 'n EA is 123847. en jy wil vertoon sy naam, soos "ExPro 1.1". voeg die volgende kode om die lêer: As dit korrek gedoen is, sal die naam EA vertoon in plaas van sy magie in die toepaslike kolom: Fig. 1. Wys EA naam in plaas van Magic Let daarop dat die paneel en Expert Adviseurs kommunikeer in reële tyd. Dit beteken dat as jy posisie 'n EA se direk sluit op die paneel, sal die EA weet dit met die volgende oproep van die funksie TransactionsTotal (). En omgekeerd: nadat die deskundige adviseur sluit sy posisie, dit verdwyn onmiddellik uit die blad aktiewe posisies. 1.3. Algemene beginsels van HedgeTerminalAPI Operasie Benewens bidirectionele posisies, HedgeTerminal werk ook met ander soorte handel, soos hangende bestellings, handel en bedrywighede makelaar se. HedgeTerminal behandel al hierdie tipes as 'n enkele groep transaksies. 'N deal, 'n hangende einde, 'n be-directional posisie - almal van hulle is transaksies. Tog kan 'n transaksie nie alleen bestaan. In terme van objekgeoriënteerde programmering, kan 'n transaksie bekendgestel as 'n abstrakte basis klas, waaruit alle moontlike handel entiteite soos handel en-directional posisies geërf. In hierdie verband al die funksies van HedgeTerminalAPI kan verdeel word in verskeie groepe: Transaksie soek en seleksie funksies. Die algemene handtekening van die funksies en die manier waarop hulle werk byna heeltemal saam te val met die funksies OrderSend () en OrderSelect () in Meta Trader 4; Funksies vir die kry van eienskappe van 'n geselekteerde transaksie. Elke transaksie het 'n spesifieke stel van eienskappe en spesifieke funksies vir eiendom seleksie. Die algemene handtekening van die funksies en die manier waarop hulle werk lyk Meta Trader 5 stelsel funksies in hoe hulle toegang tot posisies, handel en bestellings (soos OrderGetDouble () of HistoryDealGetInteger ()); HedgeTerminalAPI gebruik slegs een handel funksie: SendTradeRequest (). Hierdie funksie kan toemaak n bidirectionele posisie of 'n deel daarvan. Dieselfde funksie word gebruik vir die wysiging stop verlies, neem wins of die uitgaande kommentaar. Werk met die funksie is soortgelyk aan OrderSend () in Meta Trader 5; Die funksie vir die kry van algemene foute GetHedgeError (). funksies vir 'n gedetailleerde analise van HedgeTerminal handel aksies: TotalActionsTask () en GetActionResult (). Ook gebruik vir fout opsporing. Daar is geen analogen in Meta Trader 4 of Meta Trader 5. Werk met byna al die funksies is soortgelyk aan die gebruik van Meta Trader 4 en Meta Trader 5 stelsel funksies. As 'n reël, die funksie insette is 'n paar identifiseerder (opsomming waarde), en die funksie gee terug 'n waarde wat ooreenstem met dit. Spesifieke opsommingen is beskikbaar vir elke funksie. Die handtekening algemene oproep is die volgende: Kom ons kyk na 'n voorbeeld om 'n unieke posisie identifiseerder. Dit is hoe dit lyk lyn in Meta Trader 5: In HedgeTerminal, ontvang 'n unieke identifiseerder van 'n bidirectionele posisie is soos volg: Die algemene beginsels van die funksies is dieselfde. Slegs tipes opsommingen verskil. 1.4. Die keuse van Transaksies Die keuse van 'n transaksie gaan deur die lys van transaksies, wat soortgelyk is om te soek na bestellings in Meta Trader 4. Maar in Meta Trader 4 net bestellings soek na, terwyl dit in HedgeTerminal enigiets kan gevind word as 'n transaksie - soos 'n hangende einde of 'n verskansing posisie. Daarom moet elke transaksie eers gekies met behulp van die funksie TransactionSelect (), en dan sy soort moet geïdentifiseer deur TransactionType (). Twee lyste van transaksies is beskikbaar tot op hede: aktiewe en geskiedenis transaksies. Die lys moet toegepas word gedefinieer op grond van die ENUM_MODE_TRADES wysiger. Dit is soortgelyk aan die MODE_TRADES wysiger in Meta Trader 4. Transaksie soek en seleksie algoritme is soos volg: Die kode lusse deur die lys van aktiewe transaksies in die siklus vir (lyn 1). Voordat jy voortgaan met die transaksie, kies dit met behulp van TransactionSelect () (reël 3). Slegs bidirectionele posisies word gekies uit hierdie transaksies (reël 4). As die magie nommer van die posisie en sy simbool stem nie ooreen nie die magie nommer van die huidige EA en die simbool dit loop op, HT beweeg op na die volgende posisie (lyne 5 en 6). Dan definieer dit die unieke posisie identifiseerder (reël 8). Spesiale aandag moet gegee word aan lyn 7. Die gekose posisies moet nagegaan word in terme van verandering moontlikheid. As die posisie is reeds in die proses van verandering, kan dit nie verander word in die huidige draad, maar jy een van sy eienskappe kan kry. As die posisie is gesluit, beter wag totdat dit vrygelaat om toegang te verkry tot die eienskappe of weer probeer om dit te verander. Eiendom HEDGE_POSITION_STATE gebruik word om vas te stel of posisie verander is moontlik. Die POSITION_STATE_FROZEN wysiger dui dat die posisie is "gevries" en kan nie verander word nie. Die POSITION_STATE_ACTIVE wysiger dui aan dat 'n posisie is aktief en kan verander. Hierdie wysigers word in die ENUM_HEDGE_POSITION_STATE opsomming, wat gedokumenteer in die toepaslike afdeling. As 'n soektog deur historiese transaksies nodig is, moet die MODE_TRADES wysiger funksies TransactionTotal () en TransactionSelect () word vervang deur MODE_HISTORY. Een transaksie in HedgeTerminal kan geneste in 'n ander. Dit is baie anders as die konsep van Meta Trader 5 waar daar geen nes. Byvoorbeeld, die historiese bidirectionele posisie in HedgeTerminal bestaan ​​uit twee opdragte, elk van wat insluit 'n arbitrêre stel handel. Nes kan soos volg voorgestel word: Fig. 2. Geneste transaksies Nes van transaksies is duidelik te sien in die HedgeTerminal visuele paneel. Die kiekie hieronder toon die besonderhede van 'n posisie van MagicEx 1.3: Fig. 3. Geneste transaksies in die paneel HedgeTerminal Jy kan toegang tot die eienskappe van 'n bepaalde orde of 'n ooreenkoms in die bidirectionele posisie. Om dit te doen: Kies 'n historiese transaksie en maak seker dat dit 'n bidirectionele posisie; Kies een van die bevele van hierdie posisie met behulp van HedgeOrderSelect (); Kry een van die eienskappe van die gekose volgorde: die aantal transaksies wat dit bevat; Kies een van die handel wat deel uitmaak van die orde deur te soek deur al handel; Kry die vereiste deal eiendom. Let daarop dat na die transaksie is gekies, sy spesifieke eienskappe beskikbaar om dit te word. Byvoorbeeld, indien die transaksie is 'n bevel, dan na keuring deur HedgeOrderSelect (). jy kan die aantal transaksies vir dit (HedgeOrderGetInter (HEDGE_ORDER_DEALS_TOTAL)) of die geweegde gemiddelde inskrywing prys (HedgeDealGetDouble (HEDGE_DEAL_PRICE_EXECUTED)) vind. Kom ons vind uit die prys van transaksie # 1197610. wat gemerk is rooi op die kiekie. Dit deal is deel van die bidirectionele posisie van die MagicEx 1.3 EA. Deur die onderstaande kode, kan die EA toegang sy posisie en die transaksie: Na kode uitgevoer word, sal die volgende inskrywing word geskep in die blad Kenners van die Meta Trader 5 terminale: Die EA kies eerste posisie # 5917888, en dan kies orde # 6389111 binne-in die posisie. Sodra die orde is gekies, begin die EA soek na die transaksie nommer 1197610. Wanneer die transaksie is gevind, die EA kry sy uitvoering prys en voeg die prys in die joernaal. 1.5. Hoe om ontslae te Fout Codes gebruik van GetHedgeError () Foute en onvoorsiene situasies kan voorkom, terwyl die werk met die HedgeTerminal omgewing. Fout en die ontleding van funksies word gebruik in hierdie gevalle. Die eenvoudigste geval wanneer jy 'n fout kry, is wanneer jy vergeet om 'n transaksie met behulp van die funksie TransactionSelect () te kies. Die funksie TransactionType () sal wysiger TRANS_NOT_DEFINED in hierdie geval terugkeer. Om te verstaan ​​waar die probleem lê, moet ons die wysiger van die laaste dwaling te kry. Die wysiger sal ons vertel wat nou transaksie is gekies. Die volgende kode doen dit: Dit is die gevolg boodskap: Die fout ID dui daarop dat ons vergeet om 'n transaksie voordat jy probeer om die tipe te kry kies. Alle moontlike foute word in die ENUM_HEDGE_ERR struktuur. 1.6. Gedetailleerde analise van Handel en identifisering van foute by gebruik TotalActionsTask () en GetActionResult () Benewens die foute wat in die proses van die werk met die HedgeTerminal omgewing, kan handel foute voorkom as gevolg van SendTradeRequest () oproep. Hierdie tipe foute is moeiliker om te hanteer. Een taak verrig deur SendTradeRequest () kan verskeie handelsaktiwiteite (subtake) bevat. Byvoorbeeld, om die uitgaande kommentaar in 'n aktiewe posisie beskerm deur 'n stop verlies vlak verander, moet jy twee handel aksies te maak: Die styl van die hangende aftrekorder verteenwoordig die stop vlak; Plaas 'n nuwe hangende aftrekorder met 'n nuwe kommentaar in die plek van die vorige orde. As die nuwe aftrekorder snellers, dan is sy kommentaar sal vertoon word as 'n kommentaar sluiting van die posisie, wat is 'n regte manier. Tog kan die taak uitgevoer word in 'n deel. Veronderstel, die hangende bestelling suksesvol gekanselleer, maar die plasing van nuwe orde versuim om watter rede ookal. In hierdie geval, sal die posisie gelaat word sonder die stop verlies vlak. Ten einde in staat te wees om hierdie fout te hanteer, sal die EA nodig om 'n spesiale taak log noem en soek daarin om die subtaak wat misluk vind. Dit word gedoen met behulp van twee funksies: TotalActionsTask () gee terug Die totale aantal handel aksies (subtake) binne hierdie taak; en GetActionResult () aanvaar die subtake indeks en terug sy soort en sy gevolg uitvoering. Aangesien al die handel operasies gebruik te maak van standaard Meta Trader 5 gereedskap, die gevolg van hul prestasie in ooreenstemming met die terugkeer kode van die handel bediener. In die algemeen, die algoritme van soeke na die mislukking rede is soos volg: Aan die totale aantal sub-take in die taak met behulp TotalActionsTask (); Soek deur al subtake in die for-lus. Die bepaling van die tipe van elke subtaak en sy gevolg. Veronderstel, die aftrekorder met 'n nuwe kommentaar kan nie geplaas word omdat die einde uitvoering prys was te naby aan die huidige prysvlak. Die voorbeeld hieronder kode wys hoe die EA die rede vir hierdie mislukking kan vind: Die volgende boodskap sal verskyn ná die uitvoering kode: Deur die getalle met die standaard wysigers van handel bediener terugkeer kodes, vind ons dat die hangende einde suksesvol verwyder, maar plasing van 'n nuwe orde misluk. Die vakbond bediener het 'n fout 10015 (verkeerde prys), wat kan beteken dat die huidige prys is te naby aan die einde vlak. Aangesien ons dit weet, kan die EA beheer oor die stop vlakke. Om dit te doen, sal die EA net om hierdie posisie met behulp van dieselfde SendTradeRequest () funksie sluit. 1.7. Dop die Status van Handel taakuitvoering Elke handel taak kan bestaan ​​uit 'n aantal subtake wat agtermekaar moet uitgevoer word. In die asynchrone af, kan 'n mens taak uitgevoer word in verskeie passe van die kode. Daar kan ook gevalle wanneer die taak kan "vries". Daarom beheer EA se oor taakuitvoering word vereis. Wanneer die roeping van die funksie HedgePositionGetInteger () met die HEDGE_POSITION_TASK_STATUS wysiger, dit gee die ENUM_TASK_STATUS tipe opsomming met die status van die huidige posisie taak. Byvoorbeeld, as iets verkeerd na die stuur van 'n bevel om 'n posisie te sluit, as gevolg van wat die posisie nie gesluit gaan, dan moet jy die status van die taak kry. Die volgende voorbeeld toon die kode wat 'n asinchrone Expert adviseur kan uitvoer om die status van die taak vir die posisie te ontleed: Let daarop dat die uitvoering van 'n paar ingewikkelde take vereis verskeie iterasies. In die asynchrone af, kom gebeure wat veranderinge in handelsomgewing sein begin 'n nuwe iterasie. So, is al die iterasies wat sonder versuim, een na die ander, na aanleiding van antwoorde wat van die handel bediener. Die uitvoering taak verskil in die sinchrone af. Die sinchrone metode maak gebruik van die sinchrone werking emulator. as gevolg van wat gebruikers kan selfs saamgestelde take in 'n enkele slaag uit te voer. Die emulator gebruik tyd loop. Byvoorbeeld, na uitvoering van 'n subtaak begin, die emulator nie die uitvoering draad om die EA terugkeer. In plaas daarvan, is dit wag vir 'n geruime tyd verwag dat die handelsomgewing te verander. Daarna het dit herlees die handelsomgewing weer. As dit verstaan ​​dat die subtaak suksesvol voltooi is, begin die volgende subtake. Hierdie proses verminder ietwat die algehele prestasie, aangesien dit 'n geruime tyd om te wag neem. Maar dit blyk uitvoering van selfs komplekse take in 'n hele eenvoudige opeenvolgende operasie uitgevoer in 'n enkele funksie oproep. Daarom, wat jy nodig het byna nooit die uitvoering taak log analiseer in die sinchrone metode. 1.8. Hoe om te verander en Close bidirectionele Posisies Bidirectionele posisies verander en gesluit met behulp van die funksie SendTradeRequest (). Slegs drie opsies aangewend kan word om 'n aktiewe posisie: 'N posisie kan ten volle of gedeeltelik gesluit wees; Posisie stop verlies en neem wins kan verander; Die uittredende kommentaar van 'n posisie kan verander. Historiese posisie kan nie verander word. Soortgelyk aan die funksie OrderSend () in Meta Trader 5, SendTradeRequest () gebruik 'n pre-saamgestel navraag in die vorm van 'n verhandeling struktuur HedgeTraderRequest. Lees die dokumentasie vir meer inligting oor die funksie SendTradeRequest () en die HedgeTraderRequest struktuur. Die voorbeeld toon posisie verander en sluiting is beskikbaar in die afdeling oor Chaos II EA. 1.9. Hoe om 'HedgeTerminal Properties van 'n kundige adviseur HedgeTerminal beskik oor 'n versameling van eiendomme, soos verfris frekwensie, die nommer van sekondes na wag vir 'n antwoord van die bediener en ander. Al hierdie eienskappe word gedefinieer in Settings. xml. Wanneer 'n EA loop in reële tyd, die biblioteek lees eienskappe van die lêer en stel gepaste interne parameters. Wanneer die EA is getoets op 'n grafiek, is lêer Settings. xml nie gebruik word nie. Maar in sommige gevalle moet jy dalk individueel die EA eienskappe, ongeag of dit loop op 'n grafiek of in die strategie tester verander. Dit word gedoen deur middel van die spesiale stel van funksies HedgePropertySet ... Die huidige weergawe beskik oor slegs een prototipe van hierdie reeks: Byvoorbeeld, om die time-out vir die biblioteek om te wag vir 'n bediener antwoord, skryf die volgende: As die bediener antwoord nie binne 30 sekondes ontvang nadat jy 'n asinchrone versoek stuur, sal die geslote posisie bekend gemaak word. 1.10. Sinchrone en asinchrone Modes van Operasie HedgeTerminal en sy API voer handel heeltemal asynchroon aktiwiteite. Maar hierdie modus vereis meer komplekse logika van EAS. Om hierdie kompleksiteit te verberg, HedgeTerminalAPI sluit 'n spesiale emulator van sinchrone werking, sodat EAS ontwikkel in 'n konvensionele sinchrone metode om te kommunikeer met asynchrone algoritmes van HedgeTerminalAPI. Hierdie interaksie is geopenbaar ten tyde van bidirectionele posisie verander en sluiting deur SendTradeRequest (). Hierdie funksie laat uitvoering van 'n handel taak óf in sinkrone of asynchrone af. By verstek, is al die handel aksies sinkronies uitgevoer deur die sinchrone werking emulator. Maar, as 'n handelsmerk versoek (HedgeTradeRequest struktuur) bevat 'n uitdruklik vermeld vlag asynch_mode = true. die handel taak sal uitgevoer word in 'n asinchrone af. In die asynchrone af, is take onafhanklik van die belangrikste draad. Implementering van interaksie tussen 'n asinchrone EA en asynchrone algoritmes van HedgeTerminal is nog nie voltooi. Die sinchrone emulator is baie eenvoudig. Dit begin die subtake agtermekaar, en dan wag vir 'n geruime tyd voordat die handelsomgewing in Meta Trader 5 veranderinge. Die emulator ontleed hierdie veranderinge en bepaal die status van die huidige taak. As die uitvoering taak suksesvol is, die emulator beweeg op na die volgende een. Sinchrone emulator veroorsaak geringe vertragings in die uitvoering van handel bestellings. Dit is te danke aan die feit dat die handelsomgewing in die Meta Trader 5 neem 'n geruime tyd om tereggestel handelsaktiwiteite weerspieël. Die noodsaaklikheid om toegang tot die omgewing is hoofsaaklik verband hou met die feit dat HedgeTermianlAPI nie gebeure wat na die OnTradeTransaction () hanteerder in die sinchrone draad nydigheid modus toegang. Die probleme van interaksie tussen asinchrone drade, sowel as tussen die asynchrone en sinchrone drade deur nydigheid is te ingewikkeld en het geen ooglopende oplossings. 1.11. Bestuur van bidirectionele Posisie Properties deur die voorbeeld van 'n script In die onderstaande script, die funksie TransactionSelect () soektogte deur middel van alle beskikbare transaksies in die lys van aktiewe transaksies. Elke transaksie is gekies uit die lys. As die transaksie is 'n posisie, 'n paar van die eienskappe is toeganklik en dan gedruk. Benewens die eienskappe van die posisies, is eienskappe van bestellings en handel in die posisie ook gedruk. 'N bevel en 'n ooreenkoms is die eerste gekies om die gebruik HedgeOrderSelect () en HedgeDealSelect () onderskeidelik. Alle eienskappe van die posisie, sy bevele en handel gekombineer en gedruk as 'n enkele lyn met behulp van die stelsel funksie printf. 1.12. Die SendTradeRequest () funksie en die HedgeTradeRequest Struktuur deur die voorbeeld van Chaos II EA As 'n voorbeeld, kom ons ontwikkel 'n handel robot gebaseer op die deur Bill Williams voorgestel in sy boek Trading Chaos handel taktiek. Tweede uitgawe. Ons sal nie al sy aanbevelings, maar die skema te vereenvoudig deur weglating die Alligator aanwyser en 'n paar ander toestande. Die keuse van hierdie strategie spruit uit 'n paar oorwegings. Die belangrikste een is dat hierdie strategie sluit saamgestelde posisie onderhoud taktiek. Soms is dit nodig om 'n deel van 'n posisie te sluit en beweeg die stop verlies te gelykbreek. Wanneer na gelykbreek, moet die stop vlak word agtervolg as gevolg van die prys. Die tweede oorweging is dat hierdie taktiek genoeg is bekend en aanwysers ontwikkel vir dit ingesluit is in die standaard Meta Trader 5 aflewering pak. Fig. Fig. Winste. opsie. Hier. Die. b. Opsie. En. Om. Of. binêre. In. En. Gelede. Die.


No comments:

Post a Comment